1 00:00:00,000 --> 00:00:04,664 2 00:00:04,664 --> 00:00:05,580 DOUG LLOYD: Okei. 3 00:00:05,580 --> 00:00:08,877 Vaatame nüüd käsile tõesti suur teema, funktsioonid. 4 00:00:08,877 --> 00:00:11,460 Seni käigus kõik programmid, mis meil on kirjalikult 5 00:00:11,460 --> 00:00:12,969 on kirjutatud sees peamine. 6 00:00:12,969 --> 00:00:14,260 Nad on üsna lihtne programme. 7 00:00:14,260 --> 00:00:16,940 Sa ei pea olema kõik need oksad ja asju juhtub. 8 00:00:16,940 --> 00:00:18,773 Me võime lihtsalt sobib see kõik sees peamine ja see 9 00:00:18,773 --> 00:00:20,407 ei saa kohutavalt suur. 10 00:00:20,407 --> 00:00:22,990 Aga muidugi läheb edasi ja kui sa hakkad arendada programme 11 00:00:22,990 --> 00:00:26,260 iseseisvalt, nad ilmselt läheb alustada, et saada palju rohkem kui 10 12 00:00:26,260 --> 00:00:27,200 või 15 rida. 13 00:00:27,200 --> 00:00:31,400 Te võite saada sadu või tuhandeid või kümneid tuhandeid rida koodi. 14 00:00:31,400 --> 00:00:34,690 Ja see on tõesti ei ole mis hull mõte. 15 00:00:34,690 --> 00:00:39,720 Nagu näiteks, see ilmselt ei ole hea mõte hoida kõike sees peamine. 16 00:00:39,720 --> 00:00:43,240 See võib natuke raske leida mida te otsite, kui teil seda teha. 17 00:00:43,240 --> 00:00:47,040 >> Õnneks küll C, ja päris palju iga teine ​​programmeerimiskeel, mis 18 00:00:47,040 --> 00:00:50,386 Võib töötada, võimaldab meil kirjutada funktsioone. 19 00:00:50,386 --> 00:00:52,260 Ja ma olen lihtsalt kavatse võtta kiire kõrvale siin 20 00:00:52,260 --> 00:00:54,971 mainida, et funktsioonid on ühes valdkonnas infotehnoloogia. 21 00:00:54,971 --> 00:00:57,970 Ja te näete palju rohkem neid erinevates punktides vältel 22 00:00:57,970 --> 00:00:59,290 ja kui sa jätkata. 23 00:00:59,290 --> 00:01:02,280 Kui on palju sünonüümid sama sõna. 24 00:01:02,280 --> 00:01:03,390 Nii me nimetame funktsioone. 25 00:01:03,390 --> 00:01:05,980 Aga siis võiks kuulata ka neid nimetatakse protseduure, 26 00:01:05,980 --> 00:01:09,570 või meetodeid, eriti, kui sa oled kunagi teinud ühtegi objektorienteeritud programmeerimine 27 00:01:09,570 --> 00:01:11,950 before-- ja ärge muretsege kui sa ei ole, ei ole 28 00:01:11,950 --> 00:01:14,280 suur deal-- kuid Auditi orienteeritud keeltes 29 00:01:14,280 --> 00:01:16,129 sageli nimetatakse meetodeid. 30 00:01:16,129 --> 00:01:17,670 Vahel nad nimetatakse alamprogrammid. 31 00:01:17,670 --> 00:01:20,690 Aga nad tegelikult tähendavad kõik sama põhiidee. 32 00:01:20,690 --> 00:01:22,480 >> Vaatame, mis see mõte on. 33 00:01:22,480 --> 00:01:23,310 Mis on funktsioon? 34 00:01:23,310 --> 00:01:26,470 Noh funktsioon on tõesti midagi enamat kui musta kasti. 35 00:01:26,470 --> 00:01:31,430 Must kast, mis on seatud null või mitme sisendi ja ühe väljundi. 36 00:01:31,430 --> 00:01:33,420 Nii näiteks, käesoleva võiks olla funktsioon. 37 00:01:33,420 --> 00:01:35,510 See on funktsioon, mida nimetatakse funkts. 38 00:01:35,510 --> 00:01:39,330 Ja see kestab kolm sisendite a, b ja c. 39 00:01:39,330 --> 00:01:42,580 Ja sees, et musta kasti, me ei tea täpselt, mida ta teeb, 40 00:01:42,580 --> 00:01:45,100 kuid ta töötleb sisendite mingil moel ja siis 41 00:01:45,100 --> 00:01:48,680 annab üks väljund, sel juhul, z. 42 00:01:48,680 --> 00:01:50,504 Nüüd, et muuta see veidi vähem abstraktne, me 43 00:01:50,504 --> 00:01:52,420 Võiks öelda, et äkki me on funktsioon nimega 44 00:01:52,420 --> 00:01:58,750 lisada, et võtab kolm sisendite a, b, ja c ja töötleb väljund kuidagi 45 00:01:58,750 --> 00:02:01,010 sees musta kasti toota ühte väljundit. 46 00:02:01,010 --> 00:02:05,190 Nii sel juhul, kui lisage kestab 3, 6 ja 7. 47 00:02:05,190 --> 00:02:07,020 Kuskil sees lisada funktsiooni, oleksime 48 00:02:07,020 --> 00:02:09,750 oota neid liita toodangu valmistamiseks, mis 49 00:02:09,750 --> 00:02:13,220 on 3 pluss 6 pluss 7 või 16. 50 00:02:13,220 --> 00:02:17,940 >> Samamoodi on funktsioon nimega mult, mis võtab kaks sisendit, a ja b, 51 00:02:17,940 --> 00:02:21,070 töötleb neid mingil moel, näiteks et väljund funktsiooni 52 00:02:21,070 --> 00:02:22,920 on toode kahest sisendist. 53 00:02:22,920 --> 00:02:25,080 Kaks sisendit korrutada. 54 00:02:25,080 --> 00:02:29,150 4 ja 5 on läinud mult, midagi juhtub, väljund ootame 55 00:02:29,150 --> 00:02:31,090 on 20. 56 00:02:31,090 --> 00:02:32,507 Miks me nimetame seda musta kasti? 57 00:02:32,507 --> 00:02:34,840 Noh, kui me ei ole kirjalikult toimib ise, mis 58 00:02:34,840 --> 00:02:36,869 me oleme teinud üsna natuke seni CS50. 59 00:02:36,869 --> 00:02:39,910 Me oleme näinud print f, näiteks mis on funktsioon, et me ei kirjuta 60 00:02:39,910 --> 00:02:42,305 ise, kuid me ei kasuta kogu aeg. 61 00:02:42,305 --> 00:02:44,180 Kui me ei kirjuta funktsioone ise, 62 00:02:44,180 --> 00:02:48,450 me tõesti ei pea teadma, kuidas see tegelikult ellu kapoti alla. 63 00:02:48,450 --> 00:02:51,710 >> Nii näiteks musta kasti ma Näitasime teid korrutamine 64 00:02:51,710 --> 00:02:53,740 mult a, b võiks olla defined-- ja see on lihtsalt 65 00:02:53,740 --> 00:02:57,902 mõned pseudocode-- võiks olla defineeritud väljund korda b. 66 00:02:57,902 --> 00:02:58,860 Mis mõtet, eks. 67 00:02:58,860 --> 00:03:01,370 Kui meil on funktsioon nimega mult, mis võtab kaks sisendit. 68 00:03:01,370 --> 00:03:04,750 Loodame, et väljund oleks olema kaks sisendit korrutatud koos, 69 00:03:04,750 --> 00:03:06,240 kordi b. 70 00:03:06,240 --> 00:03:09,170 Aga mult võiks olla ka rakendada niimoodi, 71 00:03:09,170 --> 00:03:13,150 meil on counter muutuja saada määratud sees mult 0. 72 00:03:13,150 --> 00:03:18,000 Ja siis me kordame seda protsessi b korda lisada, et counter. 73 00:03:18,000 --> 00:03:24,270 Näiteks, kui me korrutame 3a 5b, võime öelda seatud valikule 0, 74 00:03:24,270 --> 00:03:27,700 korrata viis korda, lisada 3 counter. 75 00:03:27,700 --> 00:03:34,490 Nii hakkame 0 ja siis me teeme Selle viis korda 3, 6, 9, 12, 15. 76 00:03:34,490 --> 00:03:37,500 See on sama tulemus. Me ikka 3 korda 5 lihtsalt 77 00:03:37,500 --> 00:03:39,500 rakendamiseks on erinev. 78 00:03:39,500 --> 00:03:41,490 >> See, mida me mõtleme kui me ütleme must kast. 79 00:03:41,490 --> 00:03:44,406 See lihtsalt tähendab, et me tõesti ei hooli kuidas see ellu kapoti alla 80 00:03:44,406 --> 00:03:46,170 niikaua väljund on see, mida me eeldame. 81 00:03:46,170 --> 00:03:49,045 Tegelikult, see on osa lepingust kasutades funktsioone, eriti 82 00:03:49,045 --> 00:03:50,630 funktsioone, mida teised kirjutavad. 83 00:03:50,630 --> 00:03:53,980 Käitumine on alati saab iseloomustavatest, ettearvamatu 84 00:03:53,980 --> 00:03:55,420 põhineb funktsiooni nimi. 85 00:03:55,420 --> 00:03:57,500 Ja see on põhjus, miks see tegelikult oluline, kui sa kirjutad funktsioonid 86 00:03:57,500 --> 00:04:00,020 või kui teised inimesed kirjutavad funktsioone, mida võib kasutada, 87 00:04:00,020 --> 00:04:03,590 et need funktsioonid on selge, suhteliselt selge nimed, 88 00:04:03,590 --> 00:04:04,990 ja on hästi dokumenteeritud. 89 00:04:04,990 --> 00:04:08,560 Milline on kindlasti nii funktsiooni nagu print f. 90 00:04:08,560 --> 00:04:09,860 >> Miks me kasutame funktsioone? 91 00:04:09,860 --> 00:04:14,220 Noh, nagu ma ütlesin, kui me kirjutame kõik meie koodi sees peamine asjad 92 00:04:14,220 --> 00:04:17,120 saab tõesti tülikas ja tõesti keeruline. 93 00:04:17,120 --> 00:04:19,980 Funktsioonid võimaldavad meil võimalus korraldada asju ja lõhkuda 94 00:04:19,980 --> 00:04:24,540 väga keeruline probleem sisse palju paremini hallatavaks sub osad. 95 00:04:24,540 --> 00:04:28,130 Funktsioonid võimaldavad ka meil lihtsustada kodeeriva protsessi. 96 00:04:28,130 --> 00:04:33,080 See on palju lihtsam silumiseks 10 line funktsioon versus 100 rida 97 00:04:33,080 --> 00:04:35,890 funktsiooni või 1000 rida funktsiooni. 98 00:04:35,890 --> 00:04:38,400 Kui meil on ainult siluda väikesteks tükkideks korraga, 99 00:04:38,400 --> 00:04:42,110 või kirjuta väikesteks tükkideks ajal, see teeb, et programmeerimise kogemus 100 00:04:42,110 --> 00:04:43,070 palju parem. 101 00:04:43,070 --> 00:04:44,910 Usu mind, et üks. 102 00:04:44,910 --> 00:04:48,400 >> Lõpuks, kui me kirjutame funktsioonid me saab taaskasutada need erinevad osad. 103 00:04:48,400 --> 00:04:49,880 Funktsioone saab taaskasutada. 104 00:04:49,880 --> 00:04:51,880 Neid saab kasutada in ühe programmi või teise. 105 00:04:51,880 --> 00:04:53,713 Sa oled juba kirjutanud funktsiooni, kõik, mida 106 00:04:53,713 --> 00:04:56,530 pead tegema, on öelda, et programmi kust leida selle funktsiooni. 107 00:04:56,530 --> 00:04:59,680 Me oleme ringlussevõtu ja kasutades print f üle 40 aasta. 108 00:04:59,680 --> 00:05:02,150 Aga see oli ainult kirjutatud üks kord. 109 00:05:02,150 --> 00:05:04,270 Päris kasulik, õige. 110 00:05:04,270 --> 00:05:04,830 Hästi. 111 00:05:04,830 --> 00:05:06,040 Nii funktsioonid on suur. 112 00:05:06,040 --> 00:05:06,860 Me teame seda. 113 00:05:06,860 --> 00:05:08,700 Nüüd hakake neid. 114 00:05:08,700 --> 00:05:10,830 Alustame saada need meie programme. 115 00:05:10,830 --> 00:05:13,869 Selleks, et esimene asi, mida me teeme on tunnistada funktsiooni. 116 00:05:13,869 --> 00:05:16,160 Kui kuulutada funktsiooni mida sa põhimõtteliselt teed 117 00:05:16,160 --> 00:05:18,900 räägib koostaja, hey, lihtsalt, et sa teaksid, 118 00:05:18,900 --> 00:05:20,850 Ma lähen kirjalikult Funktsiooni hiljem 119 00:05:20,850 --> 00:05:22,987 ja siin on, mida see hakkab välja nägema. 120 00:05:22,987 --> 00:05:24,820 Selle põhjuseks on sest koostajad ei 121 00:05:24,820 --> 00:05:27,900 teha mõned imelikke asju kui nad näevad sümboolikast 122 00:05:27,900 --> 00:05:29,560 et nad ei tunne. 123 00:05:29,560 --> 00:05:33,000 Nii et me lihtsalt anda koostaja pead sisse, ma loon funktsioon 124 00:05:33,000 --> 00:05:35,492 ja see läheb seda teha. 125 00:05:35,492 --> 00:05:38,450 Funktsioon deklaratsioonid üldiselt kui sa korraldada oma koodi nii, 126 00:05:38,450 --> 00:05:41,872 et teised saavad mõista ja kasutada, 127 00:05:41,872 --> 00:05:44,330 sa tavaliselt taha panna kõik oma funktsiooni deklaratsioonid 128 00:05:44,330 --> 00:05:48,220 ülaservas oma koodi, õigus enne kirjutamise alustamist peamine isegi. 129 00:05:48,220 --> 00:05:50,770 Ja mugavalt, seal on väga tüüpvormi 130 00:05:50,770 --> 00:05:53,500 et iga funktsiooni deklaratsiooni järgmiselt. 131 00:05:53,500 --> 00:05:56,090 Nad kõik on päris palju näeb välja selline. 132 00:05:56,090 --> 00:06:01,440 Seal on kolm osa funktsioon deklaratsiooni, tagastamise liik, nimetus, 133 00:06:01,440 --> 00:06:03,420 ja argument nimekirja. 134 00:06:03,420 --> 00:06:07,180 >> Nüüd tagastamise tüüp on, millist muutuja funktsiooni väljund. 135 00:06:07,180 --> 00:06:10,710 Nii näiteks, kui me arvame tagasi minut tagasi kuni korrutades kaks 136 00:06:10,710 --> 00:06:15,690 numbrid funktsiooni, mida me ootame, kui me korrutame täisarv täisarvu 137 00:06:15,690 --> 00:06:18,502 väljund on ilmselt täisarv, eks. 138 00:06:18,502 --> 00:06:20,710 Korrutatakse kaks täisarvu kokku, saad täisarv. 139 00:06:20,710 --> 00:06:24,167 Nii tüübi tagastamise et funktsioon oleks int. 140 00:06:24,167 --> 00:06:26,000 Nimi on see, mida sa tahad helistada oma funktsiooni. 141 00:06:26,000 --> 00:06:29,330 See on ilmselt vähem oluline osa funktsiooni deklaratsiooni, 142 00:06:29,330 --> 00:06:30,827 nii funktsionaalsust. 143 00:06:30,827 --> 00:06:33,160 Aga tegelikult ilmselt üks tähtsamaid osi 144 00:06:33,160 --> 00:06:36,243 funktsiooni deklaratsiooni näol teada, mida funktsioon tegelikult 145 00:06:36,243 --> 00:06:37,120 teeb. 146 00:06:37,120 --> 00:06:40,474 Kui sa nime oma funktsiooni f või g või h või salapära või midagi sellist, 147 00:06:40,474 --> 00:06:42,765 oled ilmselt hakka natuke otsa üritab 148 00:06:42,765 --> 00:06:44,650 mäleta, mida need funktsioonid teha. 149 00:06:44,650 --> 00:06:47,880 Seega on oluline, et anda oma funktsiooni mõtestatud nimed. 150 00:06:47,880 --> 00:06:51,030 >> Lõpuks argument nimekiri on koma eraldatud nimekiri 151 00:06:51,030 --> 00:06:55,260 kõik sisendid oma funktsiooni, millest igaühes tüübi ja nime. 152 00:06:55,260 --> 00:06:57,840 Nii et mitte ainult sa pead täpsustada, millist tüüpi muutuja 153 00:06:57,840 --> 00:07:00,760 Funktsioon väljund, soovite ka täpsustada 154 00:07:00,760 --> 00:07:07,694 Mis tüüpi ja liiki muutujad funktsioon vastu sisendina. 155 00:07:07,694 --> 00:07:08,860 Nii teeme näiteks siin. 156 00:07:08,860 --> 00:07:10,220 Võtame pilk kell konkreetsem üks. 157 00:07:10,220 --> 00:07:13,130 Nii et siin on näide funktsiooni deklaratsiooni funktsioon, mis 158 00:07:13,130 --> 00:07:14,925 Lisaksin kaks täisarvu koos. 159 00:07:14,925 --> 00:07:17,800 Summa kahe täisarvu läheb olema täisarv samuti, kui me lihtsalt 160 00:07:17,800 --> 00:07:18,450 arutatud. 161 00:07:18,450 --> 00:07:21,610 Ja nii naasmise tüüp siin roheline, oleks int. 162 00:07:21,610 --> 00:07:25,190 See lihtsalt ütleb meile, et lisada kaks ints läheb, lõpus päeval, 163 00:07:25,190 --> 00:07:28,799 väljund, või sülitada tagasi välja meie täisarv. 164 00:07:28,799 --> 00:07:31,590 Arvestades, mida see funktsioon teeb meil tahan anda mingi mõistliku nime. 165 00:07:31,590 --> 00:07:33,630 Lisa kaks ints tundub asjakohane, arvestades 166 00:07:33,630 --> 00:07:37,574 Astume kaks täisarvu sisendina ja loodetavasti lisades neid koos. 167 00:07:37,574 --> 00:07:40,240 See võib olla natuke kohmakas nimi ja ausalt öeldes see funktsioon 168 00:07:40,240 --> 00:07:42,430 ei ole ilmselt vaja sest meil on lisaks 169 00:07:42,430 --> 00:07:46,310 operaator, kui te mäletate meie arutelu ettevõtjate, varem. 170 00:07:46,310 --> 00:07:49,650 Aga ütleme lihtsalt ette huvides argument, et see funktsioon on kasulik 171 00:07:49,650 --> 00:07:52,860 ja nii me nimetame seda lisada kaks ints. 172 00:07:52,860 --> 00:07:55,230 Lõpuks see funktsioon võtab kaks sisendit. 173 00:07:55,230 --> 00:07:56,960 Millest igaüks on täisarv. 174 00:07:56,960 --> 00:07:59,900 Nii et meil on see komadega eraldatud nimekiri sisendeid. 175 00:07:59,900 --> 00:08:02,830 Nüüd me üldiselt taha nimi anda igaüks neist 176 00:08:02,830 --> 00:08:05,070 nii, et neid saab kasutada jooksul funktsioon. 177 00:08:05,070 --> 00:08:07,180 Nimed ei ole väga oluline. 178 00:08:07,180 --> 00:08:11,400 >> Sel juhul me ei pruugi mingit tähendust neile lisatud. 179 00:08:11,400 --> 00:08:13,140 Nii et me võime lihtsalt neile ja b. 180 00:08:13,140 --> 00:08:14,257 See on täiesti korras. 181 00:08:14,257 --> 00:08:16,090 Kui aga leiad end olukorrast 182 00:08:16,090 --> 00:08:19,497 kus nimedega muutujaid võib tegelikult olla oluline, 183 00:08:19,497 --> 00:08:21,830 võiksite helistada neile midagi muud kui a ja b 184 00:08:21,830 --> 00:08:24,701 neile midagi enamat sümboolselt sisukas. 185 00:08:24,701 --> 00:08:27,700 Aga sel juhul me tõesti ei tea midagi umbes funktsiooni. 186 00:08:27,700 --> 00:08:29,320 Me lihtsalt tahame lisada kaks täisarvu. 187 00:08:29,320 --> 00:08:32,429 Nii me lihtsalt helistada Neil täisarvud a ja b. 188 00:08:32,429 --> 00:08:33,990 See on üks näide. 189 00:08:33,990 --> 00:08:36,287 >> Miks sa ei võta teist mõtlema see, 190 00:08:36,287 --> 00:08:38,870 kuidas sa kirjutada funktsiooni deklaratsiooni funktsioon, mis 191 00:08:38,870 --> 00:08:42,940 korrutab kaks ujukoma numbrid? 192 00:08:42,940 --> 00:08:45,910 Kas sa mäletad, mida ujukomaarvuna on? 193 00:08:45,910 --> 00:08:48,120 Mis oleks selle funktsiooni deklaratsiooni välja näeb? 194 00:08:48,120 --> 00:08:53,330 Ma tegelikult soovitan pausi video siin ja võtab palju aega sa vajad. 195 00:08:53,330 --> 00:08:55,521 Mõtle, mida see funktsiooni deklaratsioon oleks? 196 00:08:55,521 --> 00:08:56,770 Mida tüübi tagastamise olla? 197 00:08:56,770 --> 00:08:58,103 Mis oleks sisukas nimi olla? 198 00:08:58,103 --> 00:08:59,580 Mida sisendite olla? 199 00:08:59,580 --> 00:09:03,190 Miks sa ei peatamiseks video siin ja kirjutada-up funktsioon deklaratsioon 200 00:09:03,190 --> 00:09:07,640 Funktsiooni mis paljunevad kaks ujukoma numbrid kokku. 201 00:09:07,640 --> 00:09:09,330 Loodetavasti sa peatatud video. 202 00:09:09,330 --> 00:09:12,950 >> Võtame pilk näide Ühe võimaliku deklaratsiooni. 203 00:09:12,950 --> 00:09:17,340 Float mult kaks reaalarvud float x, float y. 204 00:09:17,340 --> 00:09:19,090 Toode kahe ujukoma numbrid, 205 00:09:19,090 --> 00:09:21,710 mis meenutavad on, kuidas me näitavad tõelist numbrid 206 00:09:21,710 --> 00:09:26,770 või numbrid koma väärtused c, läheb ujukomaarvuna. 207 00:09:26,770 --> 00:09:28,570 Kui sa korrutad koma kümnendosaühikuna, 208 00:09:28,570 --> 00:09:30,460 oled ilmselt hakka kohaga. 209 00:09:30,460 --> 00:09:31,960 Sa tahad, et see on asjakohane nimetus. 210 00:09:31,960 --> 00:09:33,810 Korruta kaks reaalarvud tundub hea. 211 00:09:33,810 --> 00:09:36,620 Aga siis võiks tõesti nimetada seda mult kaks ujukite või mult ujub. 212 00:09:36,620 --> 00:09:39,540 Midagi sellist, nii kaua kui see andis mõned tegelik tähendus, mida 213 00:09:39,540 --> 00:09:41,469 see must kast pidi tegema. 214 00:09:41,469 --> 00:09:44,260 Ja taas, sel juhul me ei tundub, et on mingi tähendus lisatud 215 00:09:44,260 --> 00:09:46,390 to nimed muutujad me möödaminnes, 216 00:09:46,390 --> 00:09:48,645 nii me lihtsalt nimetame neid x ja y. 217 00:09:48,645 --> 00:09:51,020 Nüüd, kui sa kasutad neid midagi muud, mis on täiesti korras. 218 00:09:51,020 --> 00:09:53,310 Tegelikult, kui sa tegid Selle deklaratsiooni asemel 219 00:09:53,310 --> 00:09:55,450 kasutades kahekordistab asemel ujukite, kui te mäletate 220 00:09:55,450 --> 00:09:59,100 mis kahekordistab on erinev viis täpsemalt 221 00:09:59,100 --> 00:10:02,330 täpsustada tegelik arv või ujukoma muutujaid. 222 00:10:02,330 --> 00:10:03,620 See on täiesti trahvi ka. 223 00:10:03,620 --> 00:10:04,670 Kas üks neist oleks trahvi. 224 00:10:04,670 --> 00:10:06,711 Tegelikult on mitu erinevaid kombinatsioone 225 00:10:06,711 --> 00:10:08,410 võimalusi kuulutada see funktsioon. 226 00:10:08,410 --> 00:10:10,884 Aga need on kaks päris head. 227 00:10:10,884 --> 00:10:12,550 Me oleme kuulutanud funktsioon, mis on suurepärane. 228 00:10:12,550 --> 00:10:15,700 Me oleme rääkinud koostaja, mida ta on, mida me ei kavatse olla teeme. 229 00:10:15,700 --> 00:10:17,630 Nüüd tegelikult kirjutada, et funktsioon. 230 00:10:17,630 --> 00:10:20,750 Anname see määratlus, nii, et must kast 231 00:10:20,750 --> 00:10:22,840 prognoositav käitumine toimub. 232 00:10:22,840 --> 00:10:26,270 Tegelikult oleme korrutades kaks tõelist numbrid kokku, või lisades numbrid 233 00:10:26,270 --> 00:10:29,760 koos, või teevad mida iganes see on et me küsisime oma funktsiooni teha. 234 00:10:29,760 --> 00:10:32,780 >> Nii et tegelikult proovime ja määratleda korrutab kaks reaalarvud, mida me lihtsalt 235 00:10:32,780 --> 00:10:35,350 rääkis teine ​​tagasi. 236 00:10:35,350 --> 00:10:38,560 Nüüd alguses Funktsiooni definitsioon 237 00:10:38,560 --> 00:10:41,720 näeb välja peaaegu täpselt sama funktsioonina deklaratsiooni. 238 00:10:41,720 --> 00:10:43,170 Mul on mõlemad siin. 239 00:10:43,170 --> 00:10:47,770 Ülaosas on funktsiooni deklaratsiooni, liik, nimetus, komaga eraldatud argument 240 00:10:47,770 --> 00:10:49,410 nimekirja, semikooloniga. 241 00:10:49,410 --> 00:10:53,800 Semikoolonit näitab, et mis on funktsiooni deklaratsiooni. 242 00:10:53,800 --> 00:10:57,060 Alguses funktsiooni määratlus näib peaaegu täpselt 243 00:10:57,060 --> 00:11:03,790 sama, liik, nimetus, komaga eraldatud argument nimekirja ei semikooloniga 244 00:11:03,790 --> 00:11:05,206 avada lokkis traksidega. 245 00:11:05,206 --> 00:11:07,580 Avatud lokkis traksidega, nagu oleme teinud koos pea- 246 00:11:07,580 --> 00:11:09,540 tähendab, et meil on nüüd hakanud määratleda 247 00:11:09,540 --> 00:11:14,567 Mis juhtub, must kast, mis oleme otsustanud kutsuda mult kaks reaalarvud. 248 00:11:14,567 --> 00:11:15,900 Siin on üks viis seda rakendada. 249 00:11:15,900 --> 00:11:20,370 Võib öelda, võiksime kuulutada uus muutuja tüüpi float nimega toode 250 00:11:20,370 --> 00:11:24,020 ja määrata selle muutuja väärtuse x korda y. 251 00:11:24,020 --> 00:11:27,306 Ja siis tagasi toote. 252 00:11:27,306 --> 00:11:28,430 Mida tagastamise tähenda siin. 253 00:11:28,430 --> 00:11:31,090 Noh tulu on tee meil näidata see, kuidas 254 00:11:31,090 --> 00:11:33,400 me sooritades väljund tagasi saada. 255 00:11:33,400 --> 00:11:38,160 Nii taastada mõni, on sama, see on väljund Musta kasti. 256 00:11:38,160 --> 00:11:40,732 Nii see on, kuidas seda teha. 257 00:11:40,732 --> 00:11:42,190 Siin on veel üks võimalus seda rakendada. 258 00:11:42,190 --> 00:11:45,050 Me võiksime lihtsalt tagasi x korda y. 259 00:11:45,050 --> 00:11:45,870 x on sularahaga. 260 00:11:45,870 --> 00:11:46,660 y on sularahaga. 261 00:11:46,660 --> 00:11:48,490 Nii x korda y on ka sularahaga. 262 00:11:48,490 --> 00:11:50,750 Me ei pea isegi luua teise muutuja. 263 00:11:50,750 --> 00:11:56,750 Nii et teistmoodi rakendada täpselt sama musta kasti. 264 00:11:56,750 --> 00:11:58,570 >> Nüüd võta hetk, peatada video uuesti, 265 00:11:58,570 --> 00:12:01,680 ja üritada määratleda lisada kaks ints, mis on muud ülesanded, et me 266 00:12:01,680 --> 00:12:03,090 rääkis hetk tagasi. 267 00:12:03,090 --> 00:12:06,440 Jälle siin, ma panin funktsiooni deklaratsiooni, ja nii semikoolon, 268 00:12:06,440 --> 00:12:08,420 ja avatud lokkis traksidega ja suletud lokkis 269 00:12:08,420 --> 00:12:12,080 traksidega näidata, kus me täita sisus lisada kaks ints, 270 00:12:12,080 --> 00:12:15,530 nii et me defineerime eriti käitumist must kast. 271 00:12:15,530 --> 00:12:16,380 Nii video peatamiseks. 272 00:12:16,380 --> 00:12:18,790 Ja võtab nii palju aega kui sa pead proovima ja määratleda 273 00:12:18,790 --> 00:12:25,040 rakendamisest, lisada kaks ints, näiteks et kui funktsioon väljastab väärtuse, 274 00:12:25,040 --> 00:12:29,209 see tegelikult tagasipöördumist summa kaks sisendit. 275 00:12:29,209 --> 00:12:32,000 Nii nagu eelmises näites, on mitmeid erinevaid viise 276 00:12:32,000 --> 00:12:34,210 mida võiks rakendada lisada kaks ints. 277 00:12:34,210 --> 00:12:35,130 Siin on üks. 278 00:12:35,130 --> 00:12:37,172 Siin oranž Olen oli just mõned comments-- 279 00:12:37,172 --> 00:12:38,880 Ma olen lihtsalt lisada mõned kommentaarid, mis näitab, 280 00:12:38,880 --> 00:12:41,400 mis toimub iga rida koodi. 281 00:12:41,400 --> 00:12:45,430 Nii et ma kuulutada muutuja nimetatakse summa tüüpi int. 282 00:12:45,430 --> 00:12:47,279 Ma ütlen summa võrdub pluss b. 283 00:12:47,279 --> 00:12:50,070 See, kui me tegelikult teeme töö lisades ja B koos. 284 00:12:50,070 --> 00:12:51,850 Ja ma tagasi summa. 285 00:12:51,850 --> 00:12:56,460 Ja mis mõtet, sest summa on muutuja tüüpi int. 286 00:12:56,460 --> 00:13:00,180 Ja mis andmed sisestada, et see funktsioon ütleb mulle, et see läheb väljund? 287 00:13:00,180 --> 00:13:00,680 Int. 288 00:13:00,680 --> 00:13:03,072 Nii et ma olen tagasi summa, mis on täisarv muutuja. 289 00:13:03,072 --> 00:13:06,030 Ja mis mõtet arvestades seda, mida me oleme deklareeritud ja määratletud meie funktsioon 290 00:13:06,030 --> 00:13:07,320 tegema. 291 00:13:07,320 --> 00:13:09,700 >> Nüüd saad ka määrata, funktsiooni nii, 292 00:13:09,700 --> 00:13:15,260 int summa võrdub Lisaks b vahele, et Esimene step-- ja siis tagasi summa. 293 00:13:15,260 --> 00:13:17,760 Nüüd siis võiks olla ka rakendada seda nii, 294 00:13:17,760 --> 00:13:19,180 mis ma väga ei soovita. 295 00:13:19,180 --> 00:13:22,540 See on halb stiili üks asi ja tõesti halb disain, 296 00:13:22,540 --> 00:13:24,420 kuid see tegelikult tööd. 297 00:13:24,420 --> 00:13:30,199 Kui te võtate seda koodi, mis on int lisada halb rästik dot c, ja seda kasutada. 298 00:13:30,199 --> 00:13:31,990 See tegelikult ei lisa kaks täisarvu koos. 299 00:13:31,990 --> 00:13:37,632 See on väga halb rakendamine Selle konkreetse käitumist. 300 00:13:37,632 --> 00:13:38,340 Aga see ei tööta. 301 00:13:38,340 --> 00:13:41,200 See on lihtsalt siin, et illustreerida punkt, et me tõesti ei 302 00:13:41,200 --> 00:13:44,530 huvita, mis leiab aset musta kasti, kui kaua 303 00:13:44,530 --> 00:13:46,510 kui see on väljund, mida me ootame. 304 00:13:46,510 --> 00:13:48,870 See on halvasti projekteeritud musta kasti. 305 00:13:48,870 --> 00:13:53,801 Aga lõpus päeval, see ikka väljund summa pluss b. 306 00:13:53,801 --> 00:13:54,300 Hästi. 307 00:13:54,300 --> 00:13:56,320 Nii et me oleme kuulutanud funktsioone. 308 00:13:56,320 --> 00:13:57,490 Ja me oleme määratud funktsioon. 309 00:13:57,490 --> 00:13:58,540 Nii et see on tõesti hea. 310 00:13:58,540 --> 00:14:03,020 Nüüd alustame funktsioone kasutada et me oleme kuulutanud ja me oleme määratletud. 311 00:14:03,020 --> 00:14:05,960 Helistamine funktsioon-- see on tegelikult päris easy-- kõik, mida vaja teha 312 00:14:05,960 --> 00:14:09,070 on edastada see on asjakohane argumendid, argumendid andmete tüübi 313 00:14:09,070 --> 00:14:11,600 et ta loodab, ning siis anna tagastamise 314 00:14:11,600 --> 00:14:15,190 väärtus selle funktsiooni ja see-- vabandus mind-- 315 00:14:15,190 --> 00:14:19,390 määrata tagastatav väärtus selle funktsiooni midagi õiget tüüpi. 316 00:14:19,390 --> 00:14:22,410 >> Nii saab tutvuda see praktikas faili 317 00:14:22,410 --> 00:14:27,730 nimetatakse rästik 1 dot c, mis Mul on minu CS50 IDE. 318 00:14:27,730 --> 00:14:31,042 Nii et siin on rästik 1 dot c. 319 00:14:31,042 --> 00:14:33,500 Alguses sa näed mul minu hõlmab nael hulka, 320 00:14:33,500 --> 00:14:35,460 standard IO ja CS50 dot h. 321 00:14:35,460 --> 00:14:37,700 Ja siis mul on funktsiooni deklaratsiooni. 322 00:14:37,700 --> 00:14:39,570 See on koht, kus ma olen räägib koostaja ma olen 323 00:14:39,570 --> 00:14:42,850 saab olema kirjalikult funktsioon nimega lisada kaks ints. 324 00:14:42,850 --> 00:14:45,780 See saab väljastab täisarv tüüpi muutuja. 325 00:14:45,780 --> 00:14:47,360 Just see osa on siin. 326 00:14:47,360 --> 00:14:51,950 Ja siis mul on kaks sisendit seda ja b, millest igaüks on täisarv. 327 00:14:51,950 --> 00:14:58,250 Toas peamine, ma küsin kasutajale sisend, öeldes, anna mulle täisarv. 328 00:14:58,250 --> 00:15:01,040 Ja nad palutakse unustada int, mis on funktsioon, mis 329 00:15:01,040 --> 00:15:03,240 sisaldub CS50 raamatukogu. 330 00:15:03,240 --> 00:15:07,660 Ja mis saab salvestatud x, täisarv muutuja. 331 00:15:07,660 --> 00:15:09,886 >> Siis me sundida neid veel täisarv. 332 00:15:09,886 --> 00:15:13,070 Me saame teise täisarvu ja hoidke, et y. 333 00:15:13,070 --> 00:15:17,990 Ja siis, siin on line 28, on kus me teeme oma funktsioon kõne. 334 00:15:17,990 --> 00:15:23,770 Me ütleme, int z võrdsete lisada 2 ints x koma y. 335 00:15:23,770 --> 00:15:25,980 Kas sa näed, miks seda on mõtet? 336 00:15:25,980 --> 00:15:29,710 x on täisarv tüüpi muutuja ja y on täisarv tüüpi muutuja. 337 00:15:29,710 --> 00:15:31,220 Nii see on hea. 338 00:15:31,220 --> 00:15:34,570 Mis mõtet, mida meie funktsioon deklaratsiooni real 17 näeb. 339 00:15:34,570 --> 00:15:38,300 Koma eraldatud sisend nimekirja loodab täisarvud a ja b. 340 00:15:38,300 --> 00:15:40,300 Sellisel juhul me nimetame neid iganes me tahame. 341 00:15:40,300 --> 00:15:42,300 See lihtsalt ootab kaks täisarvu. 342 00:15:42,300 --> 00:15:44,930 Ja x on täisarv ja y on täisarv. 343 00:15:44,930 --> 00:15:45,640 See töötab. 344 00:15:45,640 --> 00:15:48,680 >> Ja me teame, et funktsiooni saab to väljastab täisarvu samuti. 345 00:15:48,680 --> 00:15:51,290 Ja nii me hoiustamiseks väljund funktsiooni, 346 00:15:51,290 --> 00:15:56,050 lisada kaks ints, on täisarv tüübist muutuja, mis me kutsudes z. 347 00:15:56,050 --> 00:16:01,980 Ja siis me ei saa öelda, summa protsenti i ja protsenti i on protsenti i. 348 00:16:01,980 --> 00:16:06,210 x, y ja z võrra täites neid protsenti i poolt. 349 00:16:06,210 --> 00:16:08,334 Mis on mõiste lisada kaks ints välja näeb? 350 00:16:08,334 --> 00:16:09,125 See on üsna lihtne. 351 00:16:09,125 --> 00:16:11,270 See on üks need, mida me Nägin just hetk tagasi, 352 00:16:11,270 --> 00:16:14,390 int summa võrdub pluss b tagastamise summa. 353 00:16:14,390 --> 00:16:15,420 Kas see toimib? 354 00:16:15,420 --> 00:16:17,270 Olgem faili salvestada. 355 00:16:17,270 --> 00:16:22,080 Ja siis siin minu terminal Ma lähen tegema rästik 1 356 00:16:22,080 --> 00:16:23,000 ja ma kustutan oma ekraanil. 357 00:16:23,000 --> 00:16:25,791 Ma lähen suurendada, sest ma tean see on natuke raske näha. 358 00:16:25,791 --> 00:16:31,520 359 00:16:31,520 --> 00:16:33,770 >> Nii oleme kompileerida selle programmi rästik 1. 360 00:16:33,770 --> 00:16:37,910 Nii saame teha dot kaldkriipsuga rästik 1. 361 00:16:37,910 --> 00:16:40,060 Anna mulle täisarv, 10. 362 00:16:40,060 --> 00:16:42,380 Anna mulle veel üks täisarv, 20. 363 00:16:42,380 --> 00:16:45,200 Summa 10 ja 20 on 30. 364 00:16:45,200 --> 00:16:47,615 Nii tegime edukas funktsioon kõne. 365 00:16:47,615 --> 00:16:55,820 Võite käivitada uuesti funktsiooni, negatiivne 10, 17 summa negatiivsed 10 ja 17 on 7. 366 00:16:55,820 --> 00:16:57,120 See funktsioon töötab. 367 00:16:57,120 --> 00:16:59,240 See on käitumise et me ootame seda. 368 00:16:59,240 --> 00:17:03,610 Ja nii me oleme teinud eduka Funktsiooni definitsioon, deklaratsioon, 369 00:17:03,610 --> 00:17:07,288 ja edukas funktsioon kõne. 370 00:17:07,288 --> 00:17:09,079 Paar mitmesugused punktid Funktsioone 371 00:17:09,079 --> 00:17:10,611 enne kui me sõlmida käesoleva paragrahvi. 372 00:17:10,611 --> 00:17:12,319 Meenuta meie arutelu andmetüüpe 373 00:17:12,319 --> 00:17:16,109 varem, et funktsioonid Vahel võib võtta sisendeid. 374 00:17:16,109 --> 00:17:17,930 Kui see on nii, siis tunnistada funktsiooni 375 00:17:17,930 --> 00:17:19,788 kellel on tühine argument nimekirja. 376 00:17:19,788 --> 00:17:21,579 Kas te mäletate, milline Kõige tavalisem funktsioon 377 00:17:21,579 --> 00:17:25,036 oleme näinud nii kaugele, et võtab tühine argument nimekiri on? 378 00:17:25,036 --> 00:17:27,300 See on peamine. 379 00:17:27,300 --> 00:17:30,850 Meenuta ka seda, et funktsiooni vahel tegelikult ei ole väljund. 380 00:17:30,850 --> 00:17:34,210 Sellisel juhul me kuulutame funktsiooni kellel on tühine tagastamise tüübist. 381 00:17:34,210 --> 00:17:37,880 Olgem Selle osa lõpetuseks tegeleda tava probleem. 382 00:17:37,880 --> 00:17:39,900 >> Nii et siin on probleem sätestatud. 383 00:17:39,900 --> 00:17:43,630 Ma tahan, et sa kirjutada funktsiooni nimetatakse kehtib kolmnurk. 384 00:17:43,630 --> 00:17:47,410 Mida see funktsioon peaks tegema on võtta kolm reaalarvud 385 00:17:47,410 --> 00:17:51,930 mis esindavad pikkustest kolme pool kolmnurga kui selle parameetrid, 386 00:17:51,930 --> 00:17:54,550 või tema argumendid, või selle inputs-- veel mõni sünonüümid 387 00:17:54,550 --> 00:17:57,340 et võite sattuda. 388 00:17:57,340 --> 00:18:01,120 See funktsioon peaks kas toodangu õige või vale 389 00:18:01,120 --> 00:18:04,960 sõltuvalt sellest, kas need kolm pikkust on võimeline tegema kolmnurk. 390 00:18:04,960 --> 00:18:09,930 Kas sa mäletad andmete tüüp, mis me tähistamiseks kasutatakse õige või vale? 391 00:18:09,930 --> 00:18:11,436 Nüüd, kuidas sa ellu seda? 392 00:18:11,436 --> 00:18:13,810 Noh tea seal on paar eeskirjade kohta kolmnurgad 393 00:18:13,810 --> 00:18:15,480 mis on tegelikult kasulik teada. 394 00:18:15,480 --> 00:18:18,292 Kolmnurk võib olla ainult küljelt positiivne pikkus. 395 00:18:18,292 --> 00:18:19,000 See on mõtet. 396 00:18:19,000 --> 00:18:21,432 Sa oled ilmselt öelda, duh. 397 00:18:21,432 --> 00:18:23,390 Teine asi on tähele panna kuigi see, et summa 398 00:18:23,390 --> 00:18:25,484 pikkuste tahes kahe kolmnurga küljed 399 00:18:25,484 --> 00:18:27,650 peab olema suurem kui pikkus kolmas külg. 400 00:18:27,650 --> 00:18:28,690 See on tegelikult tõsi. 401 00:18:28,690 --> 00:18:34,150 Sa ei saa kolmnurga külgede 1 2 ja 4, näiteks seetõttu, et 1 pluss 2 402 00:18:34,150 --> 00:18:36,270 ei ole suurem kui 4. 403 00:18:36,270 --> 00:18:38,870 Nii et need on reeglid, mis kindlaks, kas kolme 404 00:18:38,870 --> 00:18:42,740 sisendeid saab kuuluda moodustavad kolmnurga. 405 00:18:42,740 --> 00:18:46,360 Nii, et võta paar minutit ja kuulutada ja siis määratleda 406 00:18:46,360 --> 00:18:49,810 Seda funktsiooni nimetatakse kehtiv kolmnurga, näiteks see, et tegelikult 407 00:18:49,810 --> 00:18:51,650 on käitumine, mille siin. 408 00:18:51,650 --> 00:18:57,030 >> See tulemus on tõsi, kui need kolm külge suudavad sisaldab kolmnurga 409 00:18:57,030 --> 00:19:01,950 ja vale teisiti Valmis näha, kuidas sa seda tegid? 410 00:19:01,950 --> 00:19:04,650 Siin on üks rakendamine kehtivate kolmnurk. 411 00:19:04,650 --> 00:19:05,770 See ei ole ainus. 412 00:19:05,770 --> 00:19:07,770 Sinu võivad veidi erineda. 413 00:19:07,770 --> 00:19:11,040 Aga see üks teeb, tegelikult on käitumine, mida me ootame. 414 00:19:11,040 --> 00:19:14,450 Me kinnitame, et oleme funktsiooni juures väga top, bool kehtib kolmnurk 415 00:19:14,450 --> 00:19:16,630 float x float y float z. 416 00:19:16,630 --> 00:19:18,930 Nii jälle, see funktsioon võtab kolm reaalarvud 417 00:19:18,930 --> 00:19:22,280 kui tema argumendid, ujuv Punkti väärtus muutujad, 418 00:19:22,280 --> 00:19:26,510 ja väljastab õige või vale väärtus, mis on Boole'i, meenutada. 419 00:19:26,510 --> 00:19:28,660 Nii et miks tagastamise tüüp on bool. 420 00:19:28,660 --> 00:19:30,016 Siis me defineerime funktsiooni. 421 00:19:30,016 --> 00:19:33,140 Esimene asi, mida me teeme, on veenduge, et kõik küljed on positiivne. 422 00:19:33,140 --> 00:19:37,010 Kui x on väiksem või võrdne 0 või kui y on võrdne 0, 423 00:19:37,010 --> 00:19:41,050 või kui z on väiksem või võrdne 0, et ei saa olla kolmnurk. 424 00:19:41,050 --> 00:19:42,380 Neil ei ole positiivseid külgi. 425 00:19:42,380 --> 00:19:45,790 Ja nii me saame tagasi vale selles olukorras. 426 00:19:45,790 --> 00:19:49,010 Edasi me veenduge et iga paari sisendite 427 00:19:49,010 --> 00:19:51,830 on suurem kui kolmanda. 428 00:19:51,830 --> 00:19:54,530 >> Nii et kui x pluss y on väiksem kui või võrdne z, 429 00:19:54,530 --> 00:19:57,060 või kui x pluss z on vähem kui või võrdne y, 430 00:19:57,060 --> 00:20:01,730 või kui y plus z on väiksem või võrdne x, et ei saa ka olema kehtiv kolmnurk. 431 00:20:01,730 --> 00:20:03,800 Nii me tagasi false uuesti. 432 00:20:03,800 --> 00:20:06,900 Eeldades, me möödunud nii kontrollide kuigi, siis saame naasta tõsi. 433 00:20:06,900 --> 00:20:09,440 Kuna need kolm külge on võimeline returning-- 434 00:20:09,440 --> 00:20:11,647 luua kehtib kolmnurk. 435 00:20:11,647 --> 00:20:12,230 Ja see ongi kõik. 436 00:20:12,230 --> 00:20:13,830 Sa oled nüüd tunnistatud ja defineeritud. 437 00:20:13,830 --> 00:20:17,330 Ja siis võib olla võimalik, et nüüd kasutada ja nimetame seda funktsiooni. 438 00:20:17,330 --> 00:20:19,470 Hea töö. 439 00:20:19,470 --> 00:20:20,650 Ma olen Doug Lloyd. 440 00:20:20,650 --> 00:20:22,820 See on CS50. 441 00:20:22,820 --> 00:20:24,340