1 00:00:00,000 --> 00:00:04,664 2 00:00:04,664 --> 00:00:05,580 Doug LLOYD: V redu. 3 00:00:05,580 --> 00:00:08,877 Torej, zdaj pa je lotiti res velika tema, funkcije. 4 00:00:08,877 --> 00:00:11,460 Do zdaj je v teku, vse programi, ki smo bili za pisanje 5 00:00:11,460 --> 00:00:12,969 so bila napisana znotraj glavnega. 6 00:00:12,969 --> 00:00:14,260 Oni so zelo enostavne programe. 7 00:00:14,260 --> 00:00:16,940 Vam ni treba, da so vse te veje in stvari se dogaja. 8 00:00:16,940 --> 00:00:18,773 Mi lahko samo vse fit znotraj glavnega in 9 00:00:18,773 --> 00:00:20,407 ne dobite strašno velika. 10 00:00:20,407 --> 00:00:22,990 Ampak kot seveda gre naprej in kot ste začeli razvijati programe 11 00:00:22,990 --> 00:00:26,260 neodvisno, oni verjetno bo za začetek, da bi dobili veliko več kot 10 12 00:00:26,260 --> 00:00:27,200 ali 15 vrstic. 13 00:00:27,200 --> 00:00:31,400 Morda boste dobili na stotine ali tisoče ali deset tisoč vrstic kode. 14 00:00:31,400 --> 00:00:34,690 In to je res ni da je nora misel. 15 00:00:34,690 --> 00:00:39,720 Kot tak, je to verjetno ni dobra ideja da je vse znotraj glavnega. 16 00:00:39,720 --> 00:00:43,240 To lahko postane malo težko najti kaj iščete, če vam to. 17 00:00:43,240 --> 00:00:47,040 >> Na srečo, čeprav C, in precej vsak drugi programski jezik, ki 18 00:00:47,040 --> 00:00:50,386 lahko deluje s, omogoča, nam pisati funkcij. 19 00:00:50,386 --> 00:00:52,260 In jaz sem le, da bo na hitro stran tukaj 20 00:00:52,260 --> 00:00:54,971 omeniti, da je delovanje eno področje računalništva. 21 00:00:54,971 --> 00:00:57,970 In videli boste veliko več od njih v različne točke v celotnem poteku 22 00:00:57,970 --> 00:00:59,290 in če boste še naprej. 23 00:00:59,290 --> 00:01:02,280 Kjer je veliko za isto besedo sopomenke. 24 00:01:02,280 --> 00:01:03,390 Zato pravimo funkcij. 25 00:01:03,390 --> 00:01:05,980 Vendar jih lahko slišite tudi besedilu postopki, 26 00:01:05,980 --> 00:01:09,570 ali metode, še posebej, če ste kdaj narediti nobene objektno programiranje 27 00:01:09,570 --> 00:01:11,950 before-- in ne skrbite Če še niste, ne 28 00:01:11,950 --> 00:01:14,280 velika deal-- ampak revizijski usmerjeni jeziki 29 00:01:14,280 --> 00:01:16,129 pogosto imenovane metode. 30 00:01:16,129 --> 00:01:17,670 Včasih si jih imenuje podprograme. 31 00:01:17,670 --> 00:01:20,690 Ampak so res vsi sklicujejo na isto osnovno idejo. 32 00:01:20,690 --> 00:01:22,480 >> Poglejmo, kaj ta ideja je. 33 00:01:22,480 --> 00:01:23,310 Kaj je funkcija? 34 00:01:23,310 --> 00:01:26,470 No funkcija res nič več kot črno škatlo. 35 00:01:26,470 --> 00:01:31,430 Črna škatla, ki ima videz nič ali več vhodov in en sam izhod. 36 00:01:31,430 --> 00:01:33,420 Tako na primer, ta lahko funkcija. 37 00:01:33,420 --> 00:01:35,510 To je funkcija imenuje funkcijska. 38 00:01:35,510 --> 00:01:39,330 In to traja tri vhode a, b in c. 39 00:01:39,330 --> 00:01:42,580 In znotraj te črne škatle, smo Ne vem točno, kaj počne, 40 00:01:42,580 --> 00:01:45,100 vendar jih obdeluje vhodov na nek način in potem 41 00:01:45,100 --> 00:01:48,680 daje en sam izhod, v tem primeru, Ž. 42 00:01:48,680 --> 00:01:50,504 Zdaj pa, da bi bilo malo manj abstraktno, smo 43 00:01:50,504 --> 00:01:52,420 Lahko bi rekli, da morda smo imajo funkcijo imenovano 44 00:01:52,420 --> 00:01:58,750 Dodajajo, da ima tri vhode A, B, in c in obdela izhod na nek način 45 00:01:58,750 --> 00:02:01,010 v notranjosti črne škatle za izdelovati en izhod. 46 00:02:01,010 --> 00:02:05,190 Torej v tem primeru, če dodaj traja 3, 6 in 7. 47 00:02:05,190 --> 00:02:07,020 Nekje znotraj dodati funkcijo, bi mi 48 00:02:07,020 --> 00:02:09,750 pričakujemo, da se seštejejo da dobimo izhod, ki je 49 00:02:09,750 --> 00:02:13,220 je 3 plus 6 plus 7 ali 16. 50 00:02:13,220 --> 00:02:17,940 >> Podobno imate funkcijo imenovano mult da ima dva vhoda, A in B, 51 00:02:17,940 --> 00:02:21,070 jih na nek način obdela takšno da je izhod funkcije 52 00:02:21,070 --> 00:02:22,920 je produkt dveh vložkov. 53 00:02:22,920 --> 00:02:25,080 Oba vhoda pomnoženo skupaj. 54 00:02:25,080 --> 00:02:29,150 4 in 5, ki se prenese v mult, kaj se zgodi, izhod pričakujemo 55 00:02:29,150 --> 00:02:31,090 20. 56 00:02:31,090 --> 00:02:32,507 Zakaj smo ga imenujemo črna skrinjica? 57 00:02:32,507 --> 00:02:34,840 No, če ne bomo pisanju Deluje sebe, ki 58 00:02:34,840 --> 00:02:36,869 smo naredili zelo malo, kolikor CS50. 59 00:02:36,869 --> 00:02:39,910 Smo videli tiskanja f, na primer, ki je funkcija, ki nismo napisali 60 00:02:39,910 --> 00:02:42,305 sami, ampak bomo uporabili ves čas. 61 00:02:42,305 --> 00:02:44,180 Če ne bomo pisno funkcije sami, 62 00:02:44,180 --> 00:02:48,450 mi res ne bi vedel, kako je to dejansko izvajajo pod pokrovom. 63 00:02:48,450 --> 00:02:51,710 >> Tako je na primer črna skrinjica I samo ti pokazal za množenje, 64 00:02:51,710 --> 00:02:53,740 mult, je lahko b se defined-- in to le 65 00:02:53,740 --> 00:02:57,902 nekateri pseudocode-- bi lahko definiran kot izhod krat b. 66 00:02:57,902 --> 00:02:58,860 To je smisel, kajne. 67 00:02:58,860 --> 00:03:01,370 Če imamo funkcijo imenovano mult ki traja dva vhoda. 68 00:03:01,370 --> 00:03:04,750 Pričakovali bi, da se izhodna bi ti dve vhodi pomnožijo skupaj 69 00:03:04,750 --> 00:03:06,240 a krat b. 70 00:03:06,240 --> 00:03:09,170 Vendar pa bi mult tudi izvajajo, kot je ta, 71 00:03:09,170 --> 00:03:13,150 imamo števca na se določi znotraj mult 0. 72 00:03:13,150 --> 00:03:18,000 In potem bomo ta postopek ponovite b krat dodamo na števec. 73 00:03:18,000 --> 00:03:24,270 Na primer, če smo pomnožimo 3a ga 5b, bi lahko rekli, nastavite števec na 0, 74 00:03:24,270 --> 00:03:27,700 ponovi petkrat, dodamo 3 do pulta. 75 00:03:27,700 --> 00:03:34,490 Tako smo začeli na 0 in potem delamo ta petkrat 3, 6, 9, 12, 15. 76 00:03:34,490 --> 00:03:37,500 To je isti rezultat. Mi še vedno ne dobite 3 krat 5 samo 77 00:03:37,500 --> 00:03:39,500 izvedba je drugačna. 78 00:03:39,500 --> 00:03:41,490 >> To je tisto, kar mislimo ko rečemo črno škatlo. 79 00:03:41,490 --> 00:03:44,406 To samo pomeni, da smo v resnici ne skrbi kako se to izvaja pod pokrovom 80 00:03:44,406 --> 00:03:46,170 dokler izhod pričakujemo. 81 00:03:46,170 --> 00:03:49,045 Dejstvo je, da je del pogodbe z uporabo funkcije, zlasti 82 00:03:49,045 --> 00:03:50,630 Funkcije, ki jih drugi pišejo. 83 00:03:50,630 --> 00:03:53,980 Vedenje je vedno tekoč da je tipično, nepredvidljivi 84 00:03:53,980 --> 00:03:55,420 ki temelji na ime funkcije. 85 00:03:55,420 --> 00:03:57,500 In to je razlog, zakaj je res pomembno, ko pišete funkcije 86 00:03:57,500 --> 00:04:00,020 ali ko so drugi ljudje pišejo Funkcije, ki jih lahko uporabite, 87 00:04:00,020 --> 00:04:03,590 da imajo te funkcije jasne, razmeroma očitne imena, 88 00:04:03,590 --> 00:04:04,990 in so dobro dokumentirani. 89 00:04:04,990 --> 00:04:08,560 Ki je zagotovo primer za funkcije, kot so tiskani f. 90 00:04:08,560 --> 00:04:09,860 >> Torej, zakaj ne bomo uporabili funkcije? 91 00:04:09,860 --> 00:04:14,220 No, kot sem rekel prej, če bomo napisali vse naše kode znotraj glavnih stvari 92 00:04:14,220 --> 00:04:17,120 lahko dobite res nerodno in res zapleteno. 93 00:04:17,120 --> 00:04:19,980 Funkcije nam omogočajo sposobnost organizirati stvari in se razšla 94 00:04:19,980 --> 00:04:24,540 zelo zapleten problem v veliko bolj obvladljive sub deli. 95 00:04:24,540 --> 00:04:28,130 Funkcije nam omogočajo tudi poenostaviti postopek kodiranja. 96 00:04:28,130 --> 00:04:33,080 To je veliko lažje razhroščujejo 10 Funkcija linija v primerjavi s 100 linije 97 00:04:33,080 --> 00:04:35,890 funkcija ali funkcija 1.000 črta. 98 00:04:35,890 --> 00:04:38,400 Če imamo le za debug majhne koščke naenkrat, 99 00:04:38,400 --> 00:04:42,110 ali pisati majhne koščke v času, naredi to programiranja izkušnje 100 00:04:42,110 --> 00:04:43,070 veliko bolje. 101 00:04:43,070 --> 00:04:44,910 Verjemi mi na tem. 102 00:04:44,910 --> 00:04:48,400 >> Nazadnje, če napišemo naloge smo lahko ponovno tiste različne dele. 103 00:04:48,400 --> 00:04:49,880 Funkcije je mogoče reciklirati. 104 00:04:49,880 --> 00:04:51,880 Prav tako se lahko uporablja pri en program ali drugo. 105 00:04:51,880 --> 00:04:53,713 Ste že napisal funkcija, vse, kar 106 00:04:53,713 --> 00:04:56,530 morate storiti, je povedal, da program kje najti te funkcije. 107 00:04:56,530 --> 00:04:59,680 Smo bili recikliranje in uporabo tiskanje f za več kot 40 let. 108 00:04:59,680 --> 00:05:02,150 Vendar je bilo napisano le enkrat. 109 00:05:02,150 --> 00:05:04,270 Precej uporabno, kajne. 110 00:05:04,270 --> 00:05:04,830 V redu. 111 00:05:04,830 --> 00:05:06,040 Torej funkcije so super. 112 00:05:06,040 --> 00:05:06,860 Vemo, da je. 113 00:05:06,860 --> 00:05:08,700 Zdaj pa začnimo jih pišete. 114 00:05:08,700 --> 00:05:10,830 Začnimo pridobivanje jim v naših programih. 115 00:05:10,830 --> 00:05:13,869 Da bi to storil, prvi kar moramo storiti, je razglasila funkcijo. 116 00:05:13,869 --> 00:05:16,160 Ko se razglasi funkcijo kaj ste v bistvu delaš 117 00:05:16,160 --> 00:05:18,900 govori prevajalnik, hej, samo da veš, 118 00:05:18,900 --> 00:05:20,850 Bom pisal funkcija kasneje 119 00:05:20,850 --> 00:05:22,987 in tukaj je, kaj se dogaja, bi izgledal. 120 00:05:22,987 --> 00:05:24,820 Razlog za to je ker prevajalniki lahko 121 00:05:24,820 --> 00:05:27,900 narediti nekaj čudne stvari, če vidijo niz simbolov 122 00:05:27,900 --> 00:05:29,560 da oni ne poznajo. 123 00:05:29,560 --> 00:05:33,000 Torej smo pravkar dal prevajalnik a glave gor, sem ustvariti funkcijo 124 00:05:33,000 --> 00:05:35,492 in to se dogaja, da to storijo. 125 00:05:35,492 --> 00:05:38,450 Izjave Funkcija splošno če ste organiziranje kodo na način, 126 00:05:38,450 --> 00:05:41,872 da bodo drugi lahko razumeti in izkoristiti, 127 00:05:41,872 --> 00:05:44,330 si na splošno želijo dati vse vaših funkcijskih izjav 128 00:05:44,330 --> 00:05:48,220 na samem vrhu kodo, desno preden začnete pisati glavna celo. 129 00:05:48,220 --> 00:05:50,770 In priročno, tam je zelo standardni obrazec 130 00:05:50,770 --> 00:05:53,500 da vsako funkcijo izjava sledi. 131 00:05:53,500 --> 00:05:56,090 So vsi precej izgledala takole. 132 00:05:56,090 --> 00:06:01,440 Obstajajo trije deli na funkcijo deklaracija, vrsta donos, ime, 133 00:06:01,440 --> 00:06:03,420 in seznam argument. 134 00:06:03,420 --> 00:06:07,180 >> Zdaj tip vrnitev Kakšno spremenljivka je izhodna funkcija. 135 00:06:07,180 --> 00:06:10,710 Tako na primer, če mislimo nazaj Pred minuto na pomnoži dva 136 00:06:10,710 --> 00:06:15,690 številke funkcija, kaj pričakujemo, če pomnoži celo za celo 137 00:06:15,690 --> 00:06:18,502 rezultati bodo Verjetno celo število, kajne. 138 00:06:18,502 --> 00:06:20,710 Pomnožene dve celi števili skupaj, dobiš celo število. 139 00:06:20,710 --> 00:06:24,167 Torej tipa povratno da Funkcija bi int. 140 00:06:24,167 --> 00:06:26,000 Ime je tisto, kar želite poklicati svojo funkcijo. 141 00:06:26,000 --> 00:06:29,330 To je verjetno najmanj pomemben del deklaracije funkcije, 142 00:06:29,330 --> 00:06:30,827 z vidika funkcionalnosti. 143 00:06:30,827 --> 00:06:33,160 Vendar je pravzaprav verjetno ena najpomembnejših delov 144 00:06:33,160 --> 00:06:36,243 deklaracije funkcije v smislu vedeti, kaj je funkcija dejansko 145 00:06:36,243 --> 00:06:37,120 počne. 146 00:06:37,120 --> 00:06:40,474 Če ime vašega funkcijo f ali g ali h ali skrivnost ali nekaj takega, 147 00:06:40,474 --> 00:06:42,765 ste verjetno bo dobil malo spotaknil poskuša 148 00:06:42,765 --> 00:06:44,650 da se spomnimo, kaj te funkcije storiti. 149 00:06:44,650 --> 00:06:47,880 Zato je pomembno, da vaš Smiselne imena funkcija je. 150 00:06:47,880 --> 00:06:51,030 >> Nazadnje, seznam argument je vejico ločen seznam 151 00:06:51,030 --> 00:06:55,260 vseh vhodov na vašem funkcijo, od katerih ima vsak tip in ime. 152 00:06:55,260 --> 00:06:57,840 Torej, ne samo, da moraš natančno določiti, kakšen tip spremenljivke 153 00:06:57,840 --> 00:07:00,760 izhodna funkcija, tudi vi želite, da določite 154 00:07:00,760 --> 00:07:07,694 kakšne vrste in vrste spremenljivk Funkcija bo sprejemala kot surovine. 155 00:07:07,694 --> 00:07:08,860 Torej, kaj je naredil zgled tukaj. 156 00:07:08,860 --> 00:07:10,220 Recimo samo, da si ogledate na bolj konkreten enega. 157 00:07:10,220 --> 00:07:13,130 Torej, tukaj je primer funkcije Izjava za funkcijo, ki 158 00:07:13,130 --> 00:07:14,925 bi dodal dve celi števili skupaj. 159 00:07:14,925 --> 00:07:17,800 Je vsota dveh celih števil bo je celo število, kot tudi, kot smo pravkar 160 00:07:17,800 --> 00:07:18,450 razpravljali. 161 00:07:18,450 --> 00:07:21,610 In tako je tip donos, tukaj v zeleno, bi bilo int. 162 00:07:21,610 --> 00:07:25,190 To nam da dodate dve ints samo pove se bo na koncu dneva, 163 00:07:25,190 --> 00:07:28,799 izhod, ali pa ga pljuvati nazaj ven, da nas celo število. 164 00:07:28,799 --> 00:07:31,590 Glede na to, kaj ta funkcija ne mi želim, da bi to smiselno ime. 165 00:07:31,590 --> 00:07:33,630 Dodamo dve ints zdi primerno, če upoštevamo 166 00:07:33,630 --> 00:07:37,574 smo ob dveh celih števil kot vložki in upajmo, da jih dodate skupaj. 167 00:07:37,574 --> 00:07:40,240 Mogoče je malo nadležen Ime in odkrito ta funkcija 168 00:07:40,240 --> 00:07:42,430 verjetno ni potrebna saj imamo dodajanje 169 00:07:42,430 --> 00:07:46,310 operater, če se spomnimo iz naše Razprava operaterjev, prej. 170 00:07:46,310 --> 00:07:49,650 Ampak recimo, za zaradi Trditev, da je ta funkcija uporabna 171 00:07:49,650 --> 00:07:52,860 in tako bomo pravimo dodamo dve ints. 172 00:07:52,860 --> 00:07:55,230 Nazadnje, ta funkcija traja dva vhoda. 173 00:07:55,230 --> 00:07:56,960 Od katerih je vsak celo število. 174 00:07:56,960 --> 00:07:59,900 Torej imamo to vejico ločen seznam vhodov. 175 00:07:59,900 --> 00:08:02,830 Zdaj smo na splošno želijo poimenovati vsakega od njih 176 00:08:02,830 --> 00:08:05,070 tako, da jih je mogoče uporabiti v funkciji. 177 00:08:05,070 --> 00:08:07,180 Imena niso strašno pomembno. 178 00:08:07,180 --> 00:08:11,400 >> V tem primeru, ne bomo nujno imela nobenega pomena, ki jim pripadajo. 179 00:08:11,400 --> 00:08:13,140 Torej lahko samo jih imenujemo a in b. 180 00:08:13,140 --> 00:08:14,257 To je povsem v redu. 181 00:08:14,257 --> 00:08:16,090 Če pa se vam zdi sami v položaju 182 00:08:16,090 --> 00:08:19,497 kjer imena spremenljivk lahko dejansko pomembno, 183 00:08:19,497 --> 00:08:21,830 boste morda želeli, da jih pokličete nekaj drugega kot a in b 184 00:08:21,830 --> 00:08:24,701 jim dati nekaj več simbolično smiselna. 185 00:08:24,701 --> 00:08:27,700 Toda v tem primeru ne bomo res vem, kaj drugega o funkciji. 186 00:08:27,700 --> 00:08:29,320 Pravkar smo želeli dodati dve celi števili. 187 00:08:29,320 --> 00:08:32,429 Torej bomo samo pokliči tistimi števili a in b. 188 00:08:32,429 --> 00:08:33,990 To je en primer. 189 00:08:33,990 --> 00:08:36,287 >> Zakaj ne vzameš drugi razmišljati o tem enem, 190 00:08:36,287 --> 00:08:38,870 kako bi si napisati funkcijo Izjava za funkcijo, ki 191 00:08:38,870 --> 00:08:42,940 Pomnoži dva plavajočo vejico? 192 00:08:42,940 --> 00:08:45,910 Se spomnite, kaj je plavajočo vejico številka? 193 00:08:45,910 --> 00:08:48,120 Kaj bi ta funkcija Izjava izgledal? 194 00:08:48,120 --> 00:08:53,330 Pravzaprav sem vam priporočamo ustavite video sem in koliko časa boste potrebovali. 195 00:08:53,330 --> 00:08:55,521 Pomisli, kaj je to Izjava funkcija bi bilo? 196 00:08:55,521 --> 00:08:56,770 Kaj bi tip vrnitev biti? 197 00:08:56,770 --> 00:08:58,103 Kaj bi smiselno biti ime? 198 00:08:58,103 --> 00:08:59,580 Kaj bi vnosi bilo? 199 00:08:59,580 --> 00:09:03,190 Torej, zakaj ne ustavite video tukaj in napisati-up izjavo funkcije 200 00:09:03,190 --> 00:09:07,640 za funkcijo, ki bi se množijo dve plavajočo vejico skupaj. 201 00:09:07,640 --> 00:09:09,330 Upam, da ste prekinili video. 202 00:09:09,330 --> 00:09:12,950 >> Torej, vzemimo si na primer enega možnega izjave. 203 00:09:12,950 --> 00:09:17,340 Float mult dve reals float x, float y. 204 00:09:17,340 --> 00:09:19,090 Produkt iz dveh plavajočo vejico, 205 00:09:19,090 --> 00:09:21,710 ki spomni se, kako smo predstavljajo realne številke 206 00:09:21,710 --> 00:09:26,770 ali številke z decimalnimi vrednostmi v c, se bo število s plavajočo vejico. 207 00:09:26,770 --> 00:09:28,570 Ko se množijo decimalno z decimalko, 208 00:09:28,570 --> 00:09:30,460 ste verjetno bo dobil decimalko. 209 00:09:30,460 --> 00:09:31,960 Hočeš, da ga ustrezno ime. 210 00:09:31,960 --> 00:09:33,810 Pomnožite dve reals zdi v redu. 211 00:09:33,810 --> 00:09:36,620 Ampak lahko bi res poklical mult dve boje, ali mult plava. 212 00:09:36,620 --> 00:09:39,540 Kaj podobnega, da tako dolgo, kot to dal nekaj dejanski pomen, kaj 213 00:09:39,540 --> 00:09:41,469 to black box, da bom naredil. 214 00:09:41,469 --> 00:09:44,260 In še enkrat, v tem primeru, ne bomo Zdi se, da imajo pritrjen katerikoli pomen 215 00:09:44,260 --> 00:09:46,390 z imeni spremenljivke smo na prehodu v, 216 00:09:46,390 --> 00:09:48,645 zato smo jim samo pokličite X in Y. 217 00:09:48,645 --> 00:09:51,020 Zdaj, če jih pokličete nekaj pa, da je popolnoma v redu. 218 00:09:51,020 --> 00:09:53,310 V bistvu, če si ta izjava namesto 219 00:09:53,310 --> 00:09:55,450 Namesto z uporabo dvojicah splavov, če se spomnimo 220 00:09:55,450 --> 00:09:59,100 da se podvoji drugačen način, da se natančneje 221 00:09:59,100 --> 00:10:02,330 opredeliti realne številke ali plavajočo vejico spremenljivk. 222 00:10:02,330 --> 00:10:03,620 To je povsem v redu preveč. 223 00:10:03,620 --> 00:10:04,670 Eden izmed tistih, ki bi bilo v redu. 224 00:10:04,670 --> 00:10:06,711 Dejstvo je, da je več različne kombinacije 225 00:10:06,711 --> 00:10:08,410 načinov, da razglasi to funkcijo. 226 00:10:08,410 --> 00:10:10,884 Ampak to sta dve zelo dobri. 227 00:10:10,884 --> 00:10:12,550 Mi smo razglasili za funkcijo, ki je super. 228 00:10:12,550 --> 00:10:15,700 Mi smo povedali, prevajalnik, kakšna je je, kaj bomo počeli. 229 00:10:15,700 --> 00:10:17,630 Zdaj pa je dejansko napisati to funkcijo. 230 00:10:17,630 --> 00:10:20,750 Dajmo to definicijo, tako, da je v notranjosti črne škatle 231 00:10:20,750 --> 00:10:22,840 predvidljivo obnašanje se dogaja. 232 00:10:22,840 --> 00:10:26,270 V bistvu smo se pomnoži dve resničnim številke skupaj, ali dodajanje številke 233 00:10:26,270 --> 00:10:29,760 skupaj, ali stori, kar je da smo prosili našo nalogo opraviti. 234 00:10:29,760 --> 00:10:32,780 >> Torej v resnici, poskusimo in določite množijo dva reals, ki smo ga pravkar 235 00:10:32,780 --> 00:10:35,350 govoril o drugi nazaj. 236 00:10:35,350 --> 00:10:38,560 Zdaj začetek Definicija funkcija 237 00:10:38,560 --> 00:10:41,720 izgleda skoraj popolnoma enaka kot deklaracije funkcije. 238 00:10:41,720 --> 00:10:43,170 Imam oba tukaj. 239 00:10:43,170 --> 00:10:47,770 Na vrhu je izjava funkcija, vrsta, ime, ločene z vejicami argument 240 00:10:47,770 --> 00:10:49,410 seznam, podpičje. 241 00:10:49,410 --> 00:10:53,800 Podpičje kaže, da da je izjava funkcija. 242 00:10:53,800 --> 00:10:57,060 Začetek delovanja definicija izgleda skoraj natanko 243 00:10:57,060 --> 00:11:03,790 isto, vrsta, ime, ločene z vejico Seznam argument, ne podpičje, 244 00:11:03,790 --> 00:11:05,206 odpreti kodrasti oklepaja. 245 00:11:05,206 --> 00:11:07,580 Odprta kodrasti naramnicami, prav tako kot smo počeli z glavno, 246 00:11:07,580 --> 00:11:09,540 pomeni, da smo zdaj začenja opredeliti 247 00:11:09,540 --> 00:11:14,567 kaj se dogaja v notranjosti črne škatle, ki smo se odločili, da pokličete mult dve reals. 248 00:11:14,567 --> 00:11:15,900 Tukaj je eden od načinov za njeno izvajanje. 249 00:11:15,900 --> 00:11:20,370 Lahko bi rekli, da bi lahko razglasi novo spremenljivka tipa float imenuje izdelka 250 00:11:20,370 --> 00:11:24,020 in dodelite to spremenljivko na vrednost x-krat y. 251 00:11:24,020 --> 00:11:27,306 In se nato vrnite izdelek. 252 00:11:27,306 --> 00:11:28,430 Kaj pomeni vrnitev pomeni tukaj. 253 00:11:28,430 --> 00:11:31,090 No donos je način smo, kažejo, da je, kako 254 00:11:31,090 --> 00:11:33,400 smo mimo izhod nazaj ven. 255 00:11:33,400 --> 00:11:38,160 Torej vrne karkoli, je enak kot, to je izhodna črne škatle. 256 00:11:38,160 --> 00:11:40,732 Torej, to je, kako si to naredil. 257 00:11:40,732 --> 00:11:42,190 Tu je še en način, da jo izvajati. 258 00:11:42,190 --> 00:11:45,050 Mi lahko samo vrne x krat y. 259 00:11:45,050 --> 00:11:45,870 x je plovec. 260 00:11:45,870 --> 00:11:46,660 y je plovec. 261 00:11:46,660 --> 00:11:48,490 Torej x krat y je tudi plovec. 262 00:11:48,490 --> 00:11:50,750 Mi ne potrebujemo celo ustvariti novo spremenljivko. 263 00:11:50,750 --> 00:11:56,750 Tako, da je drugačen način izvajati točno isto črno skrinjico. 264 00:11:56,750 --> 00:11:58,570 >> Sedaj vzemite trenutek, spet premor video, 265 00:11:58,570 --> 00:12:01,680 in poskusite in določite dodati dve ints, ki je drugo nalogo, da smo 266 00:12:01,680 --> 00:12:03,090 govoril o pred nekaj trenutki. 267 00:12:03,090 --> 00:12:06,440 Spet tu, sem dal funkcijo deklaracija, in tako podpičje, 268 00:12:06,440 --> 00:12:08,420 in odprt kodrasti brace in zaprt kodrasti 269 00:12:08,420 --> 00:12:12,080 brace navesti kjer bomo zapolnili v vsebini dodati dve ints, 270 00:12:12,080 --> 00:12:15,530 tako, da definiramo posebno vedenje v notranjosti črne škatle. 271 00:12:15,530 --> 00:12:16,380 Torej ustavite videoposnetek. 272 00:12:16,380 --> 00:12:18,790 In vzemite toliko časa, kot je morate poskusiti in določiti 273 00:12:18,790 --> 00:12:25,040 izvedba dodati dve ints, kot da kadar funkcija odda vrednost, 274 00:12:25,040 --> 00:12:29,209 to ne, v resnici, povratek vsota dveh vložkov. 275 00:12:29,209 --> 00:12:32,000 Torej tako kot v prejšnjem primeru, obstaja več različnih načinov 276 00:12:32,000 --> 00:12:34,210 da bi lahko izvajala dodati dve ints. 277 00:12:34,210 --> 00:12:35,130 Tukaj je ena. 278 00:12:35,130 --> 00:12:37,172 Tukaj v oranžni barvi Sem le imel nekaj comments-- 279 00:12:37,172 --> 00:12:38,880 Pravkar sem dodal nekaj Komentarji, ki označuje 280 00:12:38,880 --> 00:12:41,400 kaj se dogaja na vsako vrstico kode. 281 00:12:41,400 --> 00:12:45,430 Zato izjavljam spremenljivko imenovana vsota tipa int. 282 00:12:45,430 --> 00:12:47,279 Pravim vsota enaka plus b. 283 00:12:47,279 --> 00:12:50,070 To je, če smo dejansko počne delo dodajanje A in B skupaj. 284 00:12:50,070 --> 00:12:51,850 In sem se vrnil vsoto. 285 00:12:51,850 --> 00:12:56,460 In da ima smisel, ker je vsota je spremenljivka tipa int. 286 00:12:56,460 --> 00:13:00,180 In kaj je podatkovni tip, ki je to Funkcija mi je povedal, da se bo izhod? 287 00:13:00,180 --> 00:13:00,680 Int. 288 00:13:00,680 --> 00:13:03,072 Tako da sem se vračajo vsoto, ki je celo število spremenljivka. 289 00:13:03,072 --> 00:13:06,030 In da je smiselno dati tisto, kar smo jih prijavljeni in opredeljena našo funkcijo 290 00:13:06,030 --> 00:13:07,320 narediti. 291 00:13:07,320 --> 00:13:09,700 >> Sedaj lahko tudi določite funkcija na ta način, 292 00:13:09,700 --> 00:13:15,260 int vsota enaka plus b-- preskočite da Prvi step-- in nato vrniti vsoto. 293 00:13:15,260 --> 00:13:17,760 Sedaj lahko imate tudi izvaja na ta način, 294 00:13:17,760 --> 00:13:19,180 ki sem ga zelo ne priporočam. 295 00:13:19,180 --> 00:13:22,540 To je slab slog za eno stvar in res slabo načrtovanje, 296 00:13:22,540 --> 00:13:24,420 vendar pa je v dejstvu, delo. 297 00:13:24,420 --> 00:13:30,199 Če ste vzeli to kodo, ki je int dodaj slab seštevalnik dot c, in jo uporabite. 298 00:13:30,199 --> 00:13:31,990 To dejansko ne dodate dve celi števili skupaj. 299 00:13:31,990 --> 00:13:37,632 To je zelo slaba izvedba to določeno obnašanje. 300 00:13:37,632 --> 00:13:38,340 Ampak to ne deluje. 301 00:13:38,340 --> 00:13:41,200 To je samo tukaj za ponazoritev točka, da ne bomo res 302 00:13:41,200 --> 00:13:44,530 zanima me, kaj se dogaja v notranjosti črna škatla, dokler 303 00:13:44,530 --> 00:13:46,510 saj ima moč, da smo pričakovali. 304 00:13:46,510 --> 00:13:48,870 To je slabo oblikovana črna skrinjica. 305 00:13:48,870 --> 00:13:53,801 Ampak na koncu dneva, to počne še izhod vsota plus b. 306 00:13:53,801 --> 00:13:54,300 V redu. 307 00:13:54,300 --> 00:13:56,320 Torej smo razglašena funkcij. 308 00:13:56,320 --> 00:13:57,490 In že smo definirali funkcijo. 309 00:13:57,490 --> 00:13:58,540 Tako, da je res dober. 310 00:13:58,540 --> 00:14:03,020 Zdaj pa začnimo uporabljati funkcije da smo prijavljeni in smo opredeliti. 311 00:14:03,020 --> 00:14:05,960 Če želite poklicati function-- da je dejansko zal easy-- vse, kar morate storiti 312 00:14:05,960 --> 00:14:09,070 je dajati ustrezne argumente, Utemeljitve podatkovni tip 313 00:14:09,070 --> 00:14:11,600 da pričakuje, in nato dodelite vrnitev 314 00:14:11,600 --> 00:14:15,190 vrednost te funkcije in this-- izgovor me-- 315 00:14:15,190 --> 00:14:19,390 dodeliti vrne vrednost te funkcije na nekaj pravilnega tipa. 316 00:14:19,390 --> 00:14:22,410 >> Torej, kaj je imeti poglej To v praksi v datoteki 317 00:14:22,410 --> 00:14:27,730 imenovano seštevalnik 1 pika c, ki Imam v CS50 IDE. 318 00:14:27,730 --> 00:14:31,042 Torej, tukaj je seštevalnik 1 pika c. 319 00:14:31,042 --> 00:14:33,500 Na začetku vidiš, imam moj vključuje funt vključujejo, 320 00:14:33,500 --> 00:14:35,460 standardna IO, in CS50 dot h. 321 00:14:35,460 --> 00:14:37,700 In potem imam funkcijo izjavo. 322 00:14:37,700 --> 00:14:39,570 To je, če sem pove prevajalniku Jaz sem 323 00:14:39,570 --> 00:14:42,850 bodo pisanjem Funkcija se imenuje dodati dve ints. 324 00:14:42,850 --> 00:14:45,780 To se dogaja, da izhodno število tip spremenljivke. 325 00:14:45,780 --> 00:14:47,360 To je tisto, kar ta del je tukaj. 326 00:14:47,360 --> 00:14:51,950 In potem sem imela dva vhoda se ji in b, od katerih je vsak celo število. 327 00:14:51,950 --> 00:14:58,250 Znotraj glavnega sem vprašati uporabnika za vhod z mislijo, da mi celo število. 328 00:14:58,250 --> 00:15:01,040 In so pozvani, da pozabi int, ki je funkcija, 329 00:15:01,040 --> 00:15:03,240 je vključen v knjižnici CS50. 330 00:15:03,240 --> 00:15:07,660 In to gets shranjeni v x, celo spremenljiva. 331 00:15:07,660 --> 00:15:09,886 >> Potem smo jih vpraša za drugo celo število. 332 00:15:09,886 --> 00:15:13,070 Smo dobili še celo in shranjevanje, da je v y. 333 00:15:13,070 --> 00:15:17,990 In potem, tukaj na liniji 28, je kjer naredimo naš klic funkcije. 334 00:15:17,990 --> 00:15:23,770 Pravimo, int Z enaka dodamo 2 ints x vejica y. 335 00:15:23,770 --> 00:15:25,980 Ali vidiš, zakaj je to smiselno? 336 00:15:25,980 --> 00:15:29,710 x je spremenljivka tipa celo število in y je spremenljivka tipa celo število. 337 00:15:29,710 --> 00:15:31,220 Torej, to je dobro. 338 00:15:31,220 --> 00:15:34,570 To je smisel s kakšnim našim delovanjem Izjava o vrstici 17 izgleda. 339 00:15:34,570 --> 00:15:38,300 Vejicami ločen seznam vhod pričakuje dve celi števili, A in B. 340 00:15:38,300 --> 00:15:40,300 V tem primeru lahko rečemo jim karkoli hočemo. 341 00:15:40,300 --> 00:15:42,300 Samo pričakuje dve celi števili. 342 00:15:42,300 --> 00:15:44,930 In x je celo število in y je celo število. 343 00:15:44,930 --> 00:15:45,640 To deluje. 344 00:15:45,640 --> 00:15:48,680 >> In vemo, da funkcija se dogaja na izhodno cela števila kot tudi. 345 00:15:48,680 --> 00:15:51,290 In tako smo se shranjevanje izhodna funkcija, 346 00:15:51,290 --> 00:15:56,050 dodamo dve ints, v tip integer spremenljivka, ki smo jih kličeš z. 347 00:15:56,050 --> 00:16:01,980 In potem lahko rečemo, vsota odstotkov i in odstotek i odstotka i. 348 00:16:01,980 --> 00:16:06,210 x, y in z vsakokrat polnjenje v tistih odstotkov i-jev. 349 00:16:06,210 --> 00:16:08,334 Kaj je definicija dodamo dve Ints izgledal? 350 00:16:08,334 --> 00:16:09,125 To je zelo preprosta. 351 00:16:09,125 --> 00:16:11,270 To je ena od tiste, ki jih samo videl pred eno sekundo, 352 00:16:11,270 --> 00:16:14,390 int vsota je enaka plus b povratni vsoto. 353 00:16:14,390 --> 00:16:15,420 Ali to delo? 354 00:16:15,420 --> 00:16:17,270 Oglejmo shranite datoteko. 355 00:16:17,270 --> 00:16:22,080 In potem je tukaj na mojem terminalu Jaz bom, da bo seštevalnik 1, 356 00:16:22,080 --> 00:16:23,000 in sem zbistriti zaslon. 357 00:16:23,000 --> 00:16:25,791 Jaz grem za povečavo, ker vem, to je malo težko videti. 358 00:16:25,791 --> 00:16:31,520 359 00:16:31,520 --> 00:16:33,770 >> Torej bomo prevedite ta program kot seštevalnik 1. 360 00:16:33,770 --> 00:16:37,910 Torej ne moremo storiti dot slash seštevalnik 1. 361 00:16:37,910 --> 00:16:40,060 Daj mi celo, 10. 362 00:16:40,060 --> 00:16:42,380 Daj mi še celo 20. 363 00:16:42,380 --> 00:16:45,200 Vsota 10 in 20 je 30. 364 00:16:45,200 --> 00:16:47,615 Tako smo uspešno klic funkcije. 365 00:16:47,615 --> 00:16:55,820 Lahko znova zaženete funkcijo, negativna 10, 17 vsota negativnega 10. in 17. 7. 366 00:16:55,820 --> 00:16:57,120 Ta funkcija deluje. 367 00:16:57,120 --> 00:16:59,240 Ima obnašanja ki smo ga pričakovali, da. 368 00:16:59,240 --> 00:17:03,610 In tako smo naredili uspešen funkcija, definicija, deklaracija, 369 00:17:03,610 --> 00:17:07,288 in uspešen klic funkcije. 370 00:17:07,288 --> 00:17:09,079 Par razno Točke o funkcijah 371 00:17:09,079 --> 00:17:10,611 preden zaključimo to poglavje. 372 00:17:10,611 --> 00:17:12,319 Spomnimo iz naše Razprava podatkovnih tipov, 373 00:17:12,319 --> 00:17:16,109 prej, da deluje lahko včasih traja nobenih vhodov. 374 00:17:16,109 --> 00:17:17,930 Če je temu tako, smo razglasi funkcijo 375 00:17:17,930 --> 00:17:19,788 kot da imajo seznam za ničen argument. 376 00:17:19,788 --> 00:17:21,579 Ali se spomnite, kaj je Najpogostejši funkcija 377 00:17:21,579 --> 00:17:25,036 smo videli doslej, ki traja seznam argument ničen, je? 378 00:17:25,036 --> 00:17:27,300 To je glavno. 379 00:17:27,300 --> 00:17:30,850 Spomnimo tudi, da je funkcijo včasih pa dejansko ni imela izhoda. 380 00:17:30,850 --> 00:17:34,210 V tem primeru smo se ugotovi, da je funkcija da ima vrsto nična donosa. 381 00:17:34,210 --> 00:17:37,880 Oglejmo skleniti ta odsek, ki ga reševanju vadbeni problem. 382 00:17:37,880 --> 00:17:39,900 >> Torej, tukaj je problem določeno. 383 00:17:39,900 --> 00:17:43,630 Rad bi, da napišete funkcijo imenuje veljavna trikotnik. 384 00:17:43,630 --> 00:17:47,410 Kaj to funkcijo je treba storiti se sprejme tri realne številke 385 00:17:47,410 --> 00:17:51,930 ki predstavljajo dolžine treh stranice trikotnika kot njegovih parametrov, 386 00:17:51,930 --> 00:17:54,550 ali njene trditve, ali njenih inputs-- drug niz sopomenk 387 00:17:54,550 --> 00:17:57,340 da lahko naletite. 388 00:17:57,340 --> 00:18:01,120 Ta funkcija bi morala bodisi izhod true ali false 389 00:18:01,120 --> 00:18:04,960 odvisno od tega, ali teh treh dolžin so sposobna sprejemati trikotnik. 390 00:18:04,960 --> 00:18:09,930 Se spomniš, podatkovni tip, ki smo uporabili za označevanje pravilna ali napačna? 391 00:18:09,930 --> 00:18:11,436 Zdaj kako izvajati to? 392 00:18:11,436 --> 00:18:13,810 Dobro veste, obstaja nekaj pravil glede trikotniki 393 00:18:13,810 --> 00:18:15,480 da so dejansko koristno vedeti. 394 00:18:15,480 --> 00:18:18,292 Trikotnik ima lahko samo strani s pozitivnim dolžino. 395 00:18:18,292 --> 00:18:19,000 Da ima smisel. 396 00:18:19,000 --> 00:18:21,432 Ste verjetno rekel, duh. 397 00:18:21,432 --> 00:18:23,390 Druga stvar je tudi omeniti čeprav je, da vsota 398 00:18:23,390 --> 00:18:25,484 dolžin kateremkoli dve strani trikotnika 399 00:18:25,484 --> 00:18:27,650 mora biti večja od dolžina tretje strani. 400 00:18:27,650 --> 00:18:28,690 To je dejansko res. 401 00:18:28,690 --> 00:18:34,150 Ne morete imeti trikotnik straneh 1, 2 in 4, na primer, ker 1 plus 2 402 00:18:34,150 --> 00:18:36,270 ni večje od 4. 403 00:18:36,270 --> 00:18:38,870 Torej, to so pravila, ki ugotoviti, ali je tri 404 00:18:38,870 --> 00:18:42,740 vhodi lahko razumljivo tvorita trikotnik. 405 00:18:42,740 --> 00:18:46,360 Torej, vzemite nekaj minut in izjavljajo, in nato določiti 406 00:18:46,360 --> 00:18:49,810 ta funkcija imenuje veljavna trikotnik, tako da je dejansko 407 00:18:49,810 --> 00:18:51,650 ima obnašanje tu določeno. 408 00:18:51,650 --> 00:18:57,030 >> To bo izhod res, če teh treh straneh so sposobni obsega trikotnik, 409 00:18:57,030 --> 00:19:01,950 in false sicer Pripravljeni, da vidite, kako si? 410 00:19:01,950 --> 00:19:04,650 Tukaj je ena izvedba veljavnih trikotnik. 411 00:19:04,650 --> 00:19:05,770 To ni edini. 412 00:19:05,770 --> 00:19:07,770 Lep morda nekoliko razlikujejo. 413 00:19:07,770 --> 00:19:11,040 Ampak tale ne, v resnici, imajo vedenje, da smo pričakovali. 414 00:19:11,040 --> 00:19:14,450 Izjavljamo naše delovanje na zelo top, bool veljavno trikotnik 415 00:19:14,450 --> 00:19:16,630 float x float y float z. 416 00:19:16,630 --> 00:19:18,930 Torej še enkrat, ta funkcija traja tri realne številke 417 00:19:18,930 --> 00:19:22,280 za svoje argumente, plavajoči spremenljivke točka vrednosti, 418 00:19:22,280 --> 00:19:26,510 in izhodi resnična ali lažna vrednost, kar je logično, odpoklic. 419 00:19:26,510 --> 00:19:28,660 Torej, to je, zakaj je tip donos bool. 420 00:19:28,660 --> 00:19:30,016 Potem smo opredeliti funkcijo. 421 00:19:30,016 --> 00:19:33,140 Prva stvar, ki mi je, preverite, da so vse strani pozitivna. 422 00:19:33,140 --> 00:19:37,010 Če je x manjša ali enaka na 0, ali, če je y enak 0, 423 00:19:37,010 --> 00:19:41,050 ali če je z manj kot ali enaka 0, da ne more biti trikotnik. 424 00:19:41,050 --> 00:19:42,380 Nimajo pozitivne strani. 425 00:19:42,380 --> 00:19:45,790 In tako se bomo lahko vrnili false v tej situaciji. 426 00:19:45,790 --> 00:19:49,010 Dalje, smo preverite, da ima vsak par vhodov 427 00:19:49,010 --> 00:19:51,830 večji od tretjega. 428 00:19:51,830 --> 00:19:54,530 >> Torej, če je x plus y manj ali enako Z, 429 00:19:54,530 --> 00:19:57,060 ali če je x plus z manj ali enako y, 430 00:19:57,060 --> 00:20:01,730 ali če je Y in Z je manjša ali enaka x, ki prav tako ne more biti veljaven trikotnik. 431 00:20:01,730 --> 00:20:03,800 Torej se bomo vrnili spet false. 432 00:20:03,800 --> 00:20:06,900 Ob predpostavki, da smo opravili oba pregledov čeprav, potem pa se lahko vrnemo true. 433 00:20:06,900 --> 00:20:09,440 Ker teh treh straneh so sposobni returning-- 434 00:20:09,440 --> 00:20:11,647 ustvarjanja veljavno trikotnik. 435 00:20:11,647 --> 00:20:12,230 In to je to. 436 00:20:12,230 --> 00:20:13,830 Zdaj ste prijavljeni in so opredeljeni. 437 00:20:13,830 --> 00:20:17,330 In ti morda lahko zdaj uporabo in poklicati to funkcijo. 438 00:20:17,330 --> 00:20:19,470 Odlično opravljeno. 439 00:20:19,470 --> 00:20:20,650 Sem Doug Lloyd. 440 00:20:20,650 --> 00:20:22,820 To je CS50. 441 00:20:22,820 --> 00:20:24,340