1 00:00:00,000 --> 00:00:04,664 2 00:00:04,664 --> 00:00:05,580 DOUG LLOYD: Rendben. 3 00:00:05,580 --> 00:00:08,877 Így most nézzük megoldania Tényleg nagy téma, funkciókat. 4 00:00:08,877 --> 00:00:11,460 Eddig során, mind a programok, amit már írásban 5 00:00:11,460 --> 00:00:12,969 írtak belsejében fő. 6 00:00:12,969 --> 00:00:14,260 Elég egyszerű programok. 7 00:00:14,260 --> 00:00:16,940 Nem kell, hogy mindezen ágak és dolgok történtek. 8 00:00:16,940 --> 00:00:18,773 Mi is csak illeszkedjen az egészet belsejében fő és 9 00:00:18,773 --> 00:00:20,407 nem lesz rettenetesen nyomasztó. 10 00:00:20,407 --> 00:00:22,990 De ahogy a kurzus folytatódik, és Amint elkezd programok fejlesztésére, 11 00:00:22,990 --> 00:00:26,260 függetlenül, ők valószínűleg lesz kezdeni, hogy sokkal több, mint 10 12 00:00:26,260 --> 00:00:27,200 vagy 15 sor. 13 00:00:27,200 --> 00:00:31,400 Lehet, hogy száz vagy több ezer vagy több tízezer sornyi kódot. 14 00:00:31,400 --> 00:00:34,690 És ez tényleg nem hogy őrült gondolat. 15 00:00:34,690 --> 00:00:39,720 Mint ilyen, ez talán nem jó ötlet tartani mindent belsejében fő. 16 00:00:39,720 --> 00:00:43,240 Ez lehet, hogy egy kicsit nehéz megtalálni mit keres, ha ezt teszed. 17 00:00:43,240 --> 00:00:47,040 >> Szerencsére azonban a C, és elég sok Minden más programozási nyelv, 18 00:00:47,040 --> 00:00:50,386 Lehet dolgozni, lehetővé teszi, számunkra, hogy írjon funkciókat. 19 00:00:50,386 --> 00:00:52,260 És én csak fog Egy gyors félre itt 20 00:00:52,260 --> 00:00:54,971 megemlíteni, hogy funkciók egyik terület a számítástechnika. 21 00:00:54,971 --> 00:00:57,970 És látni fogod, több közülük különböző pontjain egész folyamán 22 00:00:57,970 --> 00:00:59,290 és ha továbbra is. 23 00:00:59,290 --> 00:01:02,280 Hol van egy csomó szinonimáit ugyanazt a szót. 24 00:01:02,280 --> 00:01:03,390 Így hívjuk a funkciókat. 25 00:01:03,390 --> 00:01:05,980 De talán azt is hallani őket nevezik eljárások, 26 00:01:05,980 --> 00:01:09,570 vagy módszerek, különösen, ha valaha történt semmilyen objektumorientált programozás 27 00:01:09,570 --> 00:01:11,950 before-- és ne aggódj ha nem, nem 28 00:01:11,950 --> 00:01:14,280 egy nagy deal-- de audit orientált nyelvek 29 00:01:14,280 --> 00:01:16,129 gyakran nevezik módszerek. 30 00:01:16,129 --> 00:01:17,670 Néha ők hívják szubrutinok. 31 00:01:17,670 --> 00:01:20,690 De tényleg minden utalnak hogy ugyanazt az alapötletet. 32 00:01:20,690 --> 00:01:22,480 >> Lássuk, mi az ötlet. 33 00:01:22,480 --> 00:01:23,310 Mi a funkciója? 34 00:01:23,310 --> 00:01:26,470 Nos függvényében valóban nem más, mint egy fekete doboz. 35 00:01:26,470 --> 00:01:31,430 Egy fekete doboz, hogy van egy sor nulla vagy több bemenettel és egy kimenettel. 36 00:01:31,430 --> 00:01:33,420 Így például, ezt a Lehet, hogy egy függvény. 37 00:01:33,420 --> 00:01:35,510 Ez a funkció az úgynevezett funkcionális. 38 00:01:35,510 --> 00:01:39,330 És tart három bemenet a, b, illetve c. 39 00:01:39,330 --> 00:01:42,580 És benne, hogy a fekete doboz, amit Nem tudom pontosan, hogy mit csinál, 40 00:01:42,580 --> 00:01:45,100 de feldolgozza a bemenetek valamilyen módon és akkor 41 00:01:45,100 --> 00:01:48,680 ad egyetlen kimeneti, ebben az esetben, z. 42 00:01:48,680 --> 00:01:50,504 Most, hogy ez egy kicsit kevésbé elvont, mi 43 00:01:50,504 --> 00:01:52,420 Mondhatnánk, hogy talán Van olyan függvény is 44 00:01:52,420 --> 00:01:58,750 hozzá, hogy úgy három bemenettel a, b, és c és feldolgozza a kimenet valamilyen módon 45 00:01:58,750 --> 00:02:01,010 a fekete dobozban, hogy előállítani egy kimenet. 46 00:02:01,010 --> 00:02:05,190 Tehát ebben az esetben, ha add vesz 3, 6, és 7. 47 00:02:05,190 --> 00:02:07,020 Valahol a Új funkciót, mi lenne 48 00:02:07,020 --> 00:02:09,750 azt várják tőlük, hogy össze kell adni hogy készítsen a kimenet, amely 49 00:02:09,750 --> 00:02:13,220 3 plusz 6 plusz 7 vagy 16. 50 00:02:13,220 --> 00:02:17,940 >> Hasonlóképpen, van olyan függvény is mult, hogy úgy két bemenet, az A és B, 51 00:02:17,940 --> 00:02:21,070 feldolgozza azokat valamilyen módon, például hogy a kimenet a funkció 52 00:02:21,070 --> 00:02:22,920 a termék a két bemenet. 53 00:02:22,920 --> 00:02:25,080 A két bemenet szorozva össze. 54 00:02:25,080 --> 00:02:29,150 A 4. és 5. hárítanak át mult, valami történik, akkor a kimenet várunk 55 00:02:29,150 --> 00:02:31,090 20. 56 00:02:31,090 --> 00:02:32,507 Miért nevezzük ezt a fekete doboz? 57 00:02:32,507 --> 00:02:34,840 Nos, ha nem vagyunk írásban funkcionál magunkat, amely 58 00:02:34,840 --> 00:02:36,869 tettünk egy kicsit eddig CS50. 59 00:02:36,869 --> 00:02:39,910 Láttuk nyomtatási f, például, amely egy olyan funkció, hogy nem írtunk 60 00:02:39,910 --> 00:02:42,305 magunkat, de ne használja minden alkalommal. 61 00:02:42,305 --> 00:02:44,180 Ha nem vagyunk írásban A funkciók magunkat, 62 00:02:44,180 --> 00:02:48,450 nem igazán kell tudni, hogyan kell ezt ténylegesen végrehajtott a motorháztető alatt. 63 00:02:48,450 --> 00:02:51,710 >> Így például a fekete doboz I csak azt mutatta, hogy a szorzás, 64 00:02:51,710 --> 00:02:53,740 Több, b lehetne defined-- és ez még csak 65 00:02:53,740 --> 00:02:57,902 Néhány pseudocode-- lehet meghatározása a kimeneti egy alkalommal b. 66 00:02:57,902 --> 00:02:58,860 Van ennek valami értelme, ugye. 67 00:02:58,860 --> 00:03:01,370 Ha van olyan függvény is Több, hogy úgy két bemenettel. 68 00:03:01,370 --> 00:03:04,750 Azt várnánk, hogy a kibocsátást a két bemenet megszorozva együtt, 69 00:03:04,750 --> 00:03:06,240 Egy alkalommal b. 70 00:03:06,240 --> 00:03:09,170 De mult is lehet végre, mint ez, 71 00:03:09,170 --> 00:03:13,150 van egy számláló változót kap meg benne a mult 0. 72 00:03:13,150 --> 00:03:18,000 És akkor ismételje meg ezt a folyamatot b szor hozzá a számláló. 73 00:03:18,000 --> 00:03:24,270 Például, ha megszorozzuk 3a által 5b, azt mondhatnánk, állítsa számlálóját 0, 74 00:03:24,270 --> 00:03:27,700 ismételje meg ötször, adjunk hozzá 3 a számláló. 75 00:03:27,700 --> 00:03:34,490 Tehát kezdjük 0 és akkor mi ezt ötször 3, 6, 9, 12, 15. 76 00:03:34,490 --> 00:03:37,500 Ez az eredmény ugyanaz. Mi még mindig 3-szor 5 csak 77 00:03:37,500 --> 00:03:39,500 a végrehajtás különböző. 78 00:03:39,500 --> 00:03:41,490 >> Ez az, amit értünk amikor azt mondjuk, egy fekete doboz. 79 00:03:41,490 --> 00:03:44,406 Ez csak azt jelenti, hogy nem igazán érdekel hogyan is végrehajtott a motorháztető alatt 80 00:03:44,406 --> 00:03:46,170 mindaddig, amíg a kimeneti, amit várunk. 81 00:03:46,170 --> 00:03:49,045 Tény, hogy ez a szerződés részét Az olyan funkciók használatát, különösen 82 00:03:49,045 --> 00:03:50,630 funkciók mások írni. 83 00:03:50,630 --> 00:03:53,980 A viselkedés mindig megy jellemzőnek, kiszámíthatatlan 84 00:03:53,980 --> 00:03:55,420 alapján a függvény nevét. 85 00:03:55,420 --> 00:03:57,500 És ez az, amiért ez tényleg fontos, ha írsz funkciók 86 00:03:57,500 --> 00:04:00,020 vagy amikor más emberek írni funkciók, hogy lehet használni, 87 00:04:00,020 --> 00:04:03,590 hogy ezek a funkciók már világos, viszonylag egyértelmű neveket, 88 00:04:03,590 --> 00:04:04,990 és jól dokumentáltak. 89 00:04:04,990 --> 00:04:08,560 Amely minden bizonnyal a helyzet A funkció, mint a nyomtatási f. 90 00:04:08,560 --> 00:04:09,860 >> Szóval miért használjuk funkciók? 91 00:04:09,860 --> 00:04:14,220 Nos, mint mondtam korábban, ha írunk minden kedves kód belsejében fő dolog 92 00:04:14,220 --> 00:04:17,120 tud igazán nehézkes és nagyon bonyolult. 93 00:04:17,120 --> 00:04:19,980 Funkciók lehetővé teszik számunkra a lehetőség szervezni a dolgokat, és szakítani 94 00:04:19,980 --> 00:04:24,540 egy nagyon összetett probléma, a sokkal kezelhetőbb al alkatrészeket. 95 00:04:24,540 --> 00:04:28,130 Funkciók is lehetővé teszi számunkra, hogy egyszerűsítse a kódolási folyamat. 96 00:04:28,130 --> 00:04:33,080 Ez sokkal könnyebb a hibakeresés 10 vonalfunkcióval szemben a 100 vonalon 97 00:04:33,080 --> 00:04:35,890 funkciót vagy egy 1000 funkció használatát. 98 00:04:35,890 --> 00:04:38,400 Ha már csak a hibakeresés kis darab egy időben, 99 00:04:38,400 --> 00:04:42,110 vagy írjon apró darabokra idején, ez teszi, hogy programozási tapasztalat 100 00:04:42,110 --> 00:04:43,070 sokkal jobb. 101 00:04:43,070 --> 00:04:44,910 Hidd el nekem, hogy az egyik. 102 00:04:44,910 --> 00:04:48,400 >> Végül, ha írunk függvények tudja használni ezeket különböző részein. 103 00:04:48,400 --> 00:04:49,880 Funkciók újrahasznosíthatók. 104 00:04:49,880 --> 00:04:51,880 Ezeket lehet használni egy program vagy egy másik. 105 00:04:51,880 --> 00:04:53,713 Te már írtam A funkciót, akkor 106 00:04:53,713 --> 00:04:56,530 kell tennie, hogy elmondja, hogy a program hol találom ezt a funkciót. 107 00:04:56,530 --> 00:04:59,680 Már újrahasznosítás és használata print f több mint 40 éve. 108 00:04:59,680 --> 00:05:02,150 De ez csak írásbeli egyszerre. 109 00:05:02,150 --> 00:05:04,270 Elég hasznos, ugye. 110 00:05:04,270 --> 00:05:04,830 Minden rendben. 111 00:05:04,830 --> 00:05:06,040 Szóval funkciók nagy. 112 00:05:06,040 --> 00:05:06,860 Tudjuk, hogy. 113 00:05:06,860 --> 00:05:08,700 Most kezdjük írás őket. 114 00:05:08,700 --> 00:05:10,830 Kezdjük egyre azokat a programokat. 115 00:05:10,830 --> 00:05:13,869 Ahhoz, hogy ezt megtehessük, az első semmi mást nem csinálnak állapítsa meg a funkciót. 116 00:05:13,869 --> 00:05:16,160 Amikor egy függvény amit alapvetően csinál 117 00:05:16,160 --> 00:05:18,900 azt mondja a fordító, hé, csak hogy tudd, 118 00:05:18,900 --> 00:05:20,850 Én megyek, hogy írásban függvényében a későbbiekben 119 00:05:20,850 --> 00:05:22,987 és itt mit fog kinézni. 120 00:05:22,987 --> 00:05:24,820 Ennek az az oka az, mert összeállítói is 121 00:05:24,820 --> 00:05:27,900 csinálni valami furcsa dolog, ha látnak meg azokat a szimbólumokat 122 00:05:27,900 --> 00:05:29,560 hogy ők nem ismerik. 123 00:05:29,560 --> 00:05:33,000 Szóval csak adni a fordító egy heads up, hozok létre funkciót 124 00:05:33,000 --> 00:05:35,492 és ez meg fog tenni. 125 00:05:35,492 --> 00:05:38,450 Funkció nyilatkozatok általában, ha te szervező a kódot módon 126 00:05:38,450 --> 00:05:41,872 hogy mások képesek lesznek megérteni és kihasználni, 127 00:05:41,872 --> 00:05:44,330 akkor általában akarja tenni az összes a funkció nyilatkozatok 128 00:05:44,330 --> 00:05:48,220 legtetején a kódot, jobb megkezdése előtt írásban fő sőt. 129 00:05:48,220 --> 00:05:50,770 És kényelmesen, van Nagyon formanyomtatvány 130 00:05:50,770 --> 00:05:53,500 hogy minden függvény deklaráció következik. 131 00:05:53,500 --> 00:05:56,090 Ezek mind nagyon sokat néz ki. 132 00:05:56,090 --> 00:06:01,440 Három részből függvényében nyilatkozatot, visszatérő típus, név, 133 00:06:01,440 --> 00:06:03,420 és paraméterek listája. 134 00:06:03,420 --> 00:06:07,180 >> Most a visszatérési típus az, hogy milyen változó a függvény kimenete. 135 00:06:07,180 --> 00:06:10,710 Így például, ha azt gondoljuk vissza perce a megszorozzák két 136 00:06:10,710 --> 00:06:15,690 szám funkciót, mit várunk, ha megszorozzuk egy egész szám egy egész számmal 137 00:06:15,690 --> 00:06:18,502 a kimenet Valószínűleg egy egész, igaz. 138 00:06:18,502 --> 00:06:20,710 Szorozni két egész szám együtt, akkor kap egy egész. 139 00:06:20,710 --> 00:06:24,167 Tehát a visszatérési típus, hogy funkció lenne int. 140 00:06:24,167 --> 00:06:26,000 Név, amit akar felhívni a funkciót. 141 00:06:26,000 --> 00:06:29,330 Ez talán a legkevésbé fontos részét a funkciót nyilatkozatot, 142 00:06:29,330 --> 00:06:30,827 funkcionális szempontból. 143 00:06:30,827 --> 00:06:33,160 De valójában talán egy A legfontosabb alkatrészek 144 00:06:33,160 --> 00:06:36,243 A funkció szerinti nyilatkozat hogy tudjuk, mi a funkciója ténylegesen 145 00:06:36,243 --> 00:06:37,120 csinál. 146 00:06:37,120 --> 00:06:40,474 Ha elnevezni a funkció F vagy G vagy h vagy rejtélyt, vagy valami ilyesmi, 147 00:06:40,474 --> 00:06:42,765 akkor valószínűleg fog kapni egy kicsit megbotlott a próbálkozást 148 00:06:42,765 --> 00:06:44,650 emlékezni, milyen azok a funkciók csinálni. 149 00:06:44,650 --> 00:06:47,880 Ezért fontos, hogy a függvény értelmes nevet. 150 00:06:47,880 --> 00:06:51,030 >> Végül paraméterek listája található A vesszővel elválasztva 151 00:06:51,030 --> 00:06:55,260 összes be-, hogy a funkció, amelyek mindegyike egy típus és egy név. 152 00:06:55,260 --> 00:06:57,840 Tehát nem csak akkor kell meghatározza, hogy milyen típusú változó 153 00:06:57,840 --> 00:07:00,760 A funkció kimenet, Ön is szeretné megadni 154 00:07:00,760 --> 00:07:07,694 milyen típusú és típusú változók a funkciót, hogy elfogadtam bemenet. 155 00:07:07,694 --> 00:07:08,860 Tehát lássuk példának. 156 00:07:08,860 --> 00:07:10,220 Nézzük csak vess egy pillantást Konkrétabban egy. 157 00:07:10,220 --> 00:07:13,130 Tehát itt egy példa a függvény nyilatkozat, hogy a funkció 158 00:07:13,130 --> 00:07:14,925 Hozzáteszem, két egész együtt. 159 00:07:14,925 --> 00:07:17,800 Az összeg két egész számot fog egész szám lehet is, hiszen mi csak 160 00:07:17,800 --> 00:07:18,450 tárgyalt. 161 00:07:18,450 --> 00:07:21,610 És így a visszatérő jellege, itt a zöld, lenne int. 162 00:07:21,610 --> 00:07:25,190 Hogy csak azt mondja, hogy adjunk hozzá két ints fog, a végén a nap, 163 00:07:25,190 --> 00:07:28,799 kimenet, vagy köpje vissza ki nekünk, egész szám. 164 00:07:28,799 --> 00:07:31,590 Tekintettel arra, amit ez a funkció nem vagyunk akarjuk, hogy ez egy értelmes nevet. 165 00:07:31,590 --> 00:07:33,630 Adjunk hozzá két ints tűnik megfelelő, figyelembe véve, 166 00:07:33,630 --> 00:07:37,574 elvisszük két egész szám, mint bemenet és remélhetőleg hozzá őket össze. 167 00:07:37,574 --> 00:07:40,240 Lehet, hogy egy kicsit nehézkes nevet és őszintén szólva ez a funkció 168 00:07:40,240 --> 00:07:42,430 valószínűleg nem szükséges mivel van a kiegészítéssel, 169 00:07:42,430 --> 00:07:46,310 üzemben, ha visszaemlékeztek a mi vita a piaci szereplők, a korábban. 170 00:07:46,310 --> 00:07:49,650 De mondjuk, a kedvéért érv, hogy ez a funkció hasznos 171 00:07:49,650 --> 00:07:52,860 és így fogunk nevezni adjunk hozzá két ints. 172 00:07:52,860 --> 00:07:55,230 Végül ez a függvény két bemenet. 173 00:07:55,230 --> 00:07:56,960 Amelyek mindegyike egy egész szám. 174 00:07:56,960 --> 00:07:59,900 Szóval itt van ez a vessző elválasztott listája bemenet. 175 00:07:59,900 --> 00:08:02,830 Most általában szeretnének hogy nevet adjon mindegyik 176 00:08:02,830 --> 00:08:05,070 úgy, hogy lehet használni a funkción belül. 177 00:08:05,070 --> 00:08:07,180 A nevek nem igazán fontos. 178 00:08:07,180 --> 00:08:11,400 >> Ebben az esetben mi nem feltétlenül nincs értelme tárolni. 179 00:08:11,400 --> 00:08:13,140 Így tudjuk csak hívja őket a és b. 180 00:08:13,140 --> 00:08:14,257 Ez teljesen rendben. 181 00:08:14,257 --> 00:08:16,090 Ha azonban azt találjuk, magát olyan helyzetben, 182 00:08:16,090 --> 00:08:19,497 ahol a nevét a változók talán valóban fontos, 183 00:08:19,497 --> 00:08:21,830 érdemes felhívni őket valami más, mint az a és b 184 00:08:21,830 --> 00:08:24,701 hogy nekik valami szimbolikusan értelmezhető. 185 00:08:24,701 --> 00:08:27,700 De ebben az esetben, nem igazán tudom, semmi mást erről a funkcióról. 186 00:08:27,700 --> 00:08:29,320 Csak azt akarjuk, hogy két egész számot. 187 00:08:29,320 --> 00:08:32,429 Ezért most is csak hívni azok egész számok a és b. 188 00:08:32,429 --> 00:08:33,990 Ez egy példa. 189 00:08:33,990 --> 00:08:36,287 >> Miért nem veszel egy második gondolni ezt, 190 00:08:36,287 --> 00:08:38,870 Hogyan írnánk egy függvény nyilatkozat, hogy a funkció 191 00:08:38,870 --> 00:08:42,940 szoroz két lebegőpontos számok? 192 00:08:42,940 --> 00:08:45,910 Emlékszel, milyen lebegőpontos szám? 193 00:08:45,910 --> 00:08:48,120 Mi lenne ez a funkció nyilatkozatot néz ki? 194 00:08:48,120 --> 00:08:53,330 Igazából javasoljuk, hogy állítsa meg a videót Itt és megteszi, hogy mennyi idő van szüksége. 195 00:08:53,330 --> 00:08:55,521 Gondoljunk bele, milyen ez a függvény deklaráció lenne? 196 00:08:55,521 --> 00:08:56,770 Mi lenne a visszatérési típus lehet? 197 00:08:56,770 --> 00:08:58,103 Milyen lenne egy értelmes nevet lenni? 198 00:08:58,103 --> 00:08:59,580 Mi lenne a bemenet legyen? 199 00:08:59,580 --> 00:09:03,190 Akkor miért nem szünetelteti a videót itt és írni-up függvényében nyilatkozat 200 00:09:03,190 --> 00:09:07,640 Egy funkció, amely megsokszorozza Két lebegőpontos számok együtt. 201 00:09:07,640 --> 00:09:09,330 Remélhetőleg Ön szünetelteti a videót. 202 00:09:09,330 --> 00:09:12,950 >> Szóval vessünk egy pillantást az alábbi Az egyik lehetséges nyilatkozatot. 203 00:09:12,950 --> 00:09:17,340 Float mult két valós számok úszó x, y úszó. 204 00:09:17,340 --> 00:09:19,090 A termék két lebegőpontos számok, 205 00:09:19,090 --> 00:09:21,710 amelyek emlékeztetnek a hogyan reprezentálja a valós számok 206 00:09:21,710 --> 00:09:26,770 vagy számokat decimális értékeket c, lesz egy lebegőpontos szám. 207 00:09:26,770 --> 00:09:28,570 Ha megszorozzuk a tizedes egy tizedes, 208 00:09:28,570 --> 00:09:30,460 akkor valószínűleg lesz, hogy a tizedes. 209 00:09:30,460 --> 00:09:31,960 Azt akarod, hogy ez egy megfelelő nevet. 210 00:09:31,960 --> 00:09:33,810 Szorozni két valós számok úgy tűnik, rendben van. 211 00:09:33,810 --> 00:09:36,620 De tényleg nevezni Több két úszik, vagy mult úszik. 212 00:09:36,620 --> 00:09:39,540 Bármi hasonló, mindaddig, amíg ez adott néhány valós értelmét, amit 213 00:09:39,540 --> 00:09:41,469 ez a fekete doboz akartam csinálni. 214 00:09:41,469 --> 00:09:44,260 És ismét, ebben az esetben, mi nem Úgy tűnik, hogy nincs értelme csatolt 215 00:09:44,260 --> 00:09:46,390 a nevét változók vagyunk halad, 216 00:09:46,390 --> 00:09:48,645 így hívjuk őket, x és y. 217 00:09:48,645 --> 00:09:51,020 Most, ha hívjuk őket valami mást, ez teljesen rendben van. 218 00:09:51,020 --> 00:09:53,310 Sőt, ha nem ez a nyilatkozat helyett 219 00:09:53,310 --> 00:09:55,450 a páros helyett Az úszók, ha visszaemlékeztek 220 00:09:55,450 --> 00:09:59,100 hogy páros egy másik módja, hogy pontosabban 221 00:09:59,100 --> 00:10:02,330 adja valós számok, vagy lebegőpontos változók. 222 00:10:02,330 --> 00:10:03,620 Ez teljesen rendben is. 223 00:10:03,620 --> 00:10:04,670 Vagy egy ilyen jó lenne. 224 00:10:04,670 --> 00:10:06,711 Tény, hogy számos a különböző kombinációk 225 00:10:06,711 --> 00:10:08,410 módon nyilatkozni ez a funkció. 226 00:10:08,410 --> 00:10:10,884 De ez a két nagyon jó is. 227 00:10:10,884 --> 00:10:12,550 Már nyilvánították funkciót, ez nagyszerű. 228 00:10:12,550 --> 00:10:15,700 Már mondtam a fordító mit van, hogy mit fogunk csinálni. 229 00:10:15,700 --> 00:10:17,630 Most valóban azt írja, hogy a funkció. 230 00:10:17,630 --> 00:10:20,750 Adjunk meghatározását, úgy, hogy a fekete dobozban 231 00:10:20,750 --> 00:10:22,840 a kiszámítható viselkedés történik. 232 00:10:22,840 --> 00:10:26,270 Sőt, mi szaporodnak két igazi számokat össze, vagy a számok hozzáadását 233 00:10:26,270 --> 00:10:29,760 együtt, avagy bármi is hogy arra kértük a funkciót csinálni. 234 00:10:29,760 --> 00:10:32,780 >> Tehát valójában, próbáljuk meghatározni és szorozni két valós számok, amelyek már csak 235 00:10:32,780 --> 00:10:35,350 beszélt egy másodperccel ezelőtt. 236 00:10:35,350 --> 00:10:38,560 Most az elején függvénydefiníciójában 237 00:10:38,560 --> 00:10:41,720 úgy néz ki, szinte pontosan megegyezik függvényében nyilatkozatot. 238 00:10:41,720 --> 00:10:43,170 Én mindkettőt itt. 239 00:10:43,170 --> 00:10:47,770 Ezek közül a legfontosabb a funkció nyilatkozatot, típus, név, vesszővel elválasztva érv 240 00:10:47,770 --> 00:10:49,410 listáját, pontosvessző. 241 00:10:49,410 --> 00:10:53,800 A pontosvessző azt jelzi, hogy hogy egy olyan funkció nyilatkozatot. 242 00:10:53,800 --> 00:10:57,060 Az elején a funkció meghatározása úgy néz ki, majdnem pontosan 243 00:10:57,060 --> 00:11:03,790 ugyanaz, típus, név, vesszővel elválasztva paraméterek listája, nincs pontosvessző, 244 00:11:03,790 --> 00:11:05,206 nyissa kapcsos zárójel. 245 00:11:05,206 --> 00:11:07,580 A nyitott zárójel, mint ahogy mi már ennek a fő, 246 00:11:07,580 --> 00:11:09,540 azt jelenti, hogy most kezdik meghatározni 247 00:11:09,540 --> 00:11:14,567 mi történik a fekete dobozban, hogy úgy döntöttünk, hogy hívja mult két valós számok. 248 00:11:14,567 --> 00:11:15,900 Itt az egyik módja annak végrehajtására. 249 00:11:15,900 --> 00:11:20,370 Mondhatnánk, kijelenthetjük új változó float típusú nevezett termék 250 00:11:20,370 --> 00:11:24,020 és hozzá, hogy a változó Az x érték idők y. 251 00:11:24,020 --> 00:11:27,306 És akkor vissza terméket. 252 00:11:27,306 --> 00:11:28,430 Mit jelent visszatérést jelenti itt. 253 00:11:28,430 --> 00:11:31,090 Nos visszatérés az út azt mutatják, hogy ez hogyan 254 00:11:31,090 --> 00:11:33,400 mi megy a kimeneti visszakozni. 255 00:11:33,400 --> 00:11:38,160 Így vissza valamit, ugyanaz, mint a, Ez a kimenet a fekete doboz. 256 00:11:38,160 --> 00:11:40,732 Szóval így csinálod. 257 00:11:40,732 --> 00:11:42,190 Itt egy újabb módja annak végrehajtására. 258 00:11:42,190 --> 00:11:45,050 Így egyszerűen visszatérhet x-szer y. 259 00:11:45,050 --> 00:11:45,870 x egy úszó. 260 00:11:45,870 --> 00:11:46,660 y egy úszó. 261 00:11:46,660 --> 00:11:48,490 Tehát x-szer y is bontható. 262 00:11:48,490 --> 00:11:50,750 Nem is kell, hogy hozzon létre egy másik változó. 263 00:11:50,750 --> 00:11:56,750 Szóval ez egy másik módja annak, végre pontosan ugyanazt a fekete doboz. 264 00:11:56,750 --> 00:11:58,570 >> Most egy pillanatra, szünetelteti a videót újra, 265 00:11:58,570 --> 00:12:01,680 és megpróbálja meghatározni adjunk hozzá két ints, amely a többi funkció, amit a 266 00:12:01,680 --> 00:12:03,090 beszélt az imént. 267 00:12:03,090 --> 00:12:06,440 Ismét itt, amit tesz a funkciót nyilatkozatot, és így a pontosvessző, 268 00:12:06,440 --> 00:12:08,420 és egy nyitott zárójel és egy zárt göndör 269 00:12:08,420 --> 00:12:12,080 zárójel jelzi, hol fogunk tölteni a tartalmát adjunk hozzá két ints, 270 00:12:12,080 --> 00:12:15,530 hogy mi határozza meg az adott viselkedését a fekete dobozban. 271 00:12:15,530 --> 00:12:16,380 Tehát szünetelteti a videót. 272 00:12:16,380 --> 00:12:18,790 És annyi időt, mint meg kell próbálni, és meghatározza 273 00:12:18,790 --> 00:12:25,040 egy megvalósítása adjunk hozzá két ints, mint hogy ha a funkció kiad egy értéket, 274 00:12:25,040 --> 00:12:29,209 ez nem, sőt, visszatérő az összeget a két bemenet. 275 00:12:29,209 --> 00:12:32,000 Szóval, mint az előző példában, számos különböző módon 276 00:12:32,000 --> 00:12:34,210 hogy meg tudná végrehajtani adjunk hozzá két ints. 277 00:12:34,210 --> 00:12:35,130 Itt van egy. 278 00:12:35,130 --> 00:12:37,172 Itt vagyok narancssárga voltam Csak volt néhány comments-- 279 00:12:37,172 --> 00:12:38,880 Már csak hozzá némi kommentek jelzésére 280 00:12:38,880 --> 00:12:41,400 mi történik az egyes kódsort. 281 00:12:41,400 --> 00:12:45,430 Szóval, hogy egy változót nevezett összeget int típusú. 282 00:12:45,430 --> 00:12:47,279 Azt mondom összeg eléri a plusz b. 283 00:12:47,279 --> 00:12:50,070 Ez az, ahol valójában csinál a munka hozzátéve A és B együtt. 284 00:12:50,070 --> 00:12:51,850 És visszatérek összeget. 285 00:12:51,850 --> 00:12:56,460 És hogy van értelme, mert összege egy egész típusú változó. 286 00:12:56,460 --> 00:13:00,180 És mi van az adatok típusát, hogy ez a függvény azt mondja, ez lesz a kimenet? 287 00:13:00,180 --> 00:13:00,680 Int. 288 00:13:00,680 --> 00:13:03,072 Úgyhogy visszatérő összeget, amely egy egész típusú változó. 289 00:13:03,072 --> 00:13:06,030 És hogy van értelme adni, amit mi már A bejelentett és megadott a funkciót 290 00:13:06,030 --> 00:13:07,320 csinálni. 291 00:13:07,320 --> 00:13:09,700 >> Most Ön is meghatározhat A funkció így, 292 00:13:09,700 --> 00:13:15,260 int összeg eléri a plusz b-- kihagyom első step-- majd vissza az összeget. 293 00:13:15,260 --> 00:13:17,760 Most is lehetett volna végre ezt így, 294 00:13:17,760 --> 00:13:19,180 amit én nagyon nem ajánlom. 295 00:13:19,180 --> 00:13:22,540 Ez rossz stílus egy dolog, és nagyon rossz tervezés, 296 00:13:22,540 --> 00:13:24,420 de ez nem, sőt, a munka. 297 00:13:24,420 --> 00:13:30,199 Ha ezt a kódot, amely int add rossz vipera dot c, és használja azt. 298 00:13:30,199 --> 00:13:31,990 Ez valójában ez hozzá két egész együtt. 299 00:13:31,990 --> 00:13:37,632 Ez egy nagyon rossz végrehajtás ennek a különös viselkedést. 300 00:13:37,632 --> 00:13:38,340 De ez nem működik. 301 00:13:38,340 --> 00:13:41,200 Csak itt, hogy bemutassa a lényeg, hogy mi nem igazán 302 00:13:41,200 --> 00:13:44,530 érdekel, hogy mi történik belül A fekete doboz, mindaddig, 303 00:13:44,530 --> 00:13:46,510 mint azt a kimenetet, hogy várunk. 304 00:13:46,510 --> 00:13:48,870 Ez egy rosszul megtervezett fekete doboz. 305 00:13:48,870 --> 00:13:53,801 De a végén a nap, ez nem Még mindig kimeneti összege plusz b. 306 00:13:53,801 --> 00:13:54,300 Minden rendben. 307 00:13:54,300 --> 00:13:56,320 Így már bejelentett funkciókat. 308 00:13:56,320 --> 00:13:57,490 És mi már meghatározott funkciót. 309 00:13:57,490 --> 00:13:58,540 Szóval ez tényleg jó. 310 00:13:58,540 --> 00:14:03,020 Most kezdjük használni a funkciókat hogy már bejelentett és mi már meghatározott. 311 00:14:03,020 --> 00:14:05,960 Felhívása function-- ez valójában csinos easy-- annyit kell tennie, 312 00:14:05,960 --> 00:14:09,070 ez adja át a megfelelő érvekkel, érvek az adatok típusa 313 00:14:09,070 --> 00:14:11,600 hogy arra számít, és majd rendelni a visszatérés 314 00:14:11,600 --> 00:14:15,190 értéke, hogy a funkció és this-- mentség me-- 315 00:14:15,190 --> 00:14:19,390 rendelni a visszatérési értéke, hogy a funkció hogy valamit a megfelelő típusú. 316 00:14:19,390 --> 00:14:22,410 >> Szóval vessünk egy pillantást ez a gyakorlatban egy fájlban 317 00:14:22,410 --> 00:14:27,730 úgynevezett vipera 1 pont c, amely Nekem van az én CS50 IDE. 318 00:14:27,730 --> 00:14:31,042 Tehát itt van a kiegészítés 1 pont c. 319 00:14:31,042 --> 00:14:33,500 Az elején látod én én magában, font közé, 320 00:14:33,500 --> 00:14:35,460 szabvány IO, és CS50 pont h. 321 00:14:35,460 --> 00:14:37,700 És akkor ott van a függvény deklaráció. 322 00:14:37,700 --> 00:14:39,570 Ez az, ahol én vagyok mondja a fordító vagyok 323 00:14:39,570 --> 00:14:42,850 fog írni egy nevezett funkció adjunk hozzá két ints. 324 00:14:42,850 --> 00:14:45,780 Ez lesz az output egész típusú változó. 325 00:14:45,780 --> 00:14:47,360 Ez az, amit ez a rész itt. 326 00:14:47,360 --> 00:14:51,950 És akkor már két bemenet, hogy egy és b, amelyek mindegyike egy egész szám. 327 00:14:51,950 --> 00:14:58,250 Belül a fő, kérem a felhasználói számára input, mondván, hogy nekem egy egész szám. 328 00:14:58,250 --> 00:15:01,040 És kéri, hogy felejtse el int, amely egy olyan funkció, amely 329 00:15:01,040 --> 00:15:03,240 benne van a CS50 könyvtárban. 330 00:15:03,240 --> 00:15:07,660 És hogy kerül tárolásra x, egy egész szám. 331 00:15:07,660 --> 00:15:09,886 >> Aztán készteti a másik egész. 332 00:15:09,886 --> 00:15:13,070 Kapunk még egy egész és tárolja, hogy az y. 333 00:15:13,070 --> 00:15:17,990 És akkor itt a 28. sor, a ahol azt, hogy mi funkció hívást. 334 00:15:17,990 --> 00:15:23,770 Azt mondjuk, int z egyenlők adjunk hozzá 2 ints x vessző y. 335 00:15:23,770 --> 00:15:25,980 Látod, hogy ez miért van értelme? 336 00:15:25,980 --> 00:15:29,710 x jelentése egész szám típusú változó és y jelentése egész szám típusú változó. 337 00:15:29,710 --> 00:15:31,220 Szóval ez jó. 338 00:15:31,220 --> 00:15:34,570 Van ennek valami értelme, amit mi funkcióval nyilatkozatot a 17. sorban néz ki. 339 00:15:34,570 --> 00:15:38,300 A vesszővel elválasztott bemeneti lista elvárja két egész számot, a és b. 340 00:15:38,300 --> 00:15:40,300 Ebben az esetben tudjuk hívni nekik, amit csak akarunk. 341 00:15:40,300 --> 00:15:42,300 Csak arra számít, két egész szám. 342 00:15:42,300 --> 00:15:44,930 És x jelentése egész szám, és y jelentése egész szám. 343 00:15:44,930 --> 00:15:45,640 Ez működik. 344 00:15:45,640 --> 00:15:48,680 >> És tudjuk, hogy a funkció fog a kimeneti egy egész szám is. 345 00:15:48,680 --> 00:15:51,290 És így tárolja a kimenete a funkció, 346 00:15:51,290 --> 00:15:56,050 adjunk hozzá két ints, egy egész típusú változó, amit hívsz részt. 347 00:15:56,050 --> 00:16:01,980 És akkor azt mondhatjuk, az összege százalékkal i és százalék i százalék i. 348 00:16:01,980 --> 00:16:06,210 x, y és z rendre Töltsd azokban százalékkal i-re. 349 00:16:06,210 --> 00:16:08,334 Mi az a meghatározás, adjunk hozzá két ints néz ki? 350 00:16:08,334 --> 00:16:09,125 Nagyon egyszerű. 351 00:16:09,125 --> 00:16:11,270 Ez az egyik az általunk Most láttam egy perce, 352 00:16:11,270 --> 00:16:14,390 int összeg eléri a plusz b visszatérő összeget. 353 00:16:14,390 --> 00:16:15,420 Működik ez? 354 00:16:15,420 --> 00:16:17,270 Mentsük el a fájlt. 355 00:16:17,270 --> 00:16:22,080 És akkor itt lent az én terminál Megyek, hogy a kiegészítés 1, 356 00:16:22,080 --> 00:16:23,000 és törölhetem a képernyőn. 357 00:16:23,000 --> 00:16:25,791 Megyek a nagyítás, mert tudom, ez egy kicsit nehéz belátni. 358 00:16:25,791 --> 00:16:31,520 359 00:16:31,520 --> 00:16:33,770 >> Tehát fordítani ezt a programot, mint a kiegészítés 1. 360 00:16:33,770 --> 00:16:37,910 Így nem tehetünk dot perjel kiegészítés 1. 361 00:16:37,910 --> 00:16:40,060 Adj nekem egy egész, 10. 362 00:16:40,060 --> 00:16:42,380 Adj még egy egész, 20. 363 00:16:42,380 --> 00:16:45,200 A összege 10 és 20 30. 364 00:16:45,200 --> 00:16:47,615 Így készült a sikeres függvényhívás. 365 00:16:47,615 --> 00:16:55,820 Futtathatja a funkció ismételt negatív 10, 17 összege negatív 10 és 17 7. 366 00:16:55,820 --> 00:16:57,120 Ez a funkció. 367 00:16:57,120 --> 00:16:59,240 Azt a viselkedést hogy elvárná. 368 00:16:59,240 --> 00:17:03,610 És így tettünk egy sikeres funkciót, meghatározása, nyilatkozat, 369 00:17:03,610 --> 00:17:07,288 és a függvény. 370 00:17:07,288 --> 00:17:09,079 Pár egyéb pontok a funkciók 371 00:17:09,079 --> 00:17:10,611 mielőtt megkötik ezt a szakaszt. 372 00:17:10,611 --> 00:17:12,319 Emlékezzünk a mi tárgyalása adattípusok, 373 00:17:12,319 --> 00:17:16,109 korábban, hogy a funkciók Néha nem tesz bemenet. 374 00:17:16,109 --> 00:17:17,930 Ha ez a helyzet, állapítsa meg a funkciót 375 00:17:17,930 --> 00:17:19,788 mintha egy void paraméterek listája. 376 00:17:19,788 --> 00:17:21,579 Emlékszik, amit a leggyakoribb funkció 377 00:17:21,579 --> 00:17:25,036 láttuk eddig, hogy vesz void paraméterek listája található? 378 00:17:25,036 --> 00:17:27,300 Ez a fő. 379 00:17:27,300 --> 00:17:30,850 Emlékezzünk vissza, azt is, hogy a funkció néha valójában nem is egy kimenetet. 380 00:17:30,850 --> 00:17:34,210 Ebben az esetben mi állapítsa meg a funkciót mintha egy void visszatérési típus. 381 00:17:34,210 --> 00:17:37,880 Nézzük Ebben a részben a tűzésével gyakorlatban problémát. 382 00:17:37,880 --> 00:17:39,900 >> Tehát itt van a probléma lefektetett. 383 00:17:39,900 --> 00:17:43,630 Azt akarom, hogy írjon egy funkciót nevű érvényes háromszöget. 384 00:17:43,630 --> 00:17:47,410 Mi ezt a funkciót kell tennie A valós számok, hogy három 385 00:17:47,410 --> 00:17:51,930 hogy képviselje a hossza a három Egy háromszög oldalai, mint a paraméterei, 386 00:17:51,930 --> 00:17:54,550 vagy érveit, vagy inputs-- másik meg a szinonimákat 387 00:17:54,550 --> 00:17:57,340 hogy lehet találkozni. 388 00:17:57,340 --> 00:18:01,120 Ezt a funkciót vagy kimenet igaz vagy hamis 389 00:18:01,120 --> 00:18:04,960 attól függően, hogy az említett három hosszban képesek, hogy egy háromszög. 390 00:18:04,960 --> 00:18:09,930 Emlékszel az adatok típusát, hogy szoktuk azt mutatják, igaz vagy hamis? 391 00:18:09,930 --> 00:18:11,436 Most hogyan alkalmazza ezt? 392 00:18:11,436 --> 00:18:13,810 Nos tudom, van egy pár A vonatkozó szabályok háromszögek 393 00:18:13,810 --> 00:18:15,480 hogy valóban hasznos tudni. 394 00:18:15,480 --> 00:18:18,292 A háromszög csak akkor lehet fél pozitív hosszúságú. 395 00:18:18,292 --> 00:18:19,000 Ennek van értelme. 396 00:18:19,000 --> 00:18:21,432 Akkor valószínűleg mondván hülyeség. 397 00:18:21,432 --> 00:18:23,390 A másik dolog megjegyezni de az, hogy az összeg 398 00:18:23,390 --> 00:18:25,484 hosszának bármely két oldalán a háromszög 399 00:18:25,484 --> 00:18:27,650 kell, hogy legyen nagyobb, mint a hossza a harmadik oldala. 400 00:18:27,650 --> 00:18:28,690 Ez valóban igaz. 401 00:18:28,690 --> 00:18:34,150 Nem lehet egy háromszög oldalainak 1, A 2. és 4., például azért, mert 1 plusz 2 402 00:18:34,150 --> 00:18:36,270 nem nagyobb, mint 4. 403 00:18:36,270 --> 00:18:38,870 Tehát ezek a szabályok, amelyek e vagy sem a három 404 00:18:38,870 --> 00:18:42,740 bemenetek elképzelhető háromszöget alkotnak. 405 00:18:42,740 --> 00:18:46,360 Tehát hogy egy pár percig és állapítsa meg, majd meghatározzák 406 00:18:46,360 --> 00:18:49,810 Ez a funkció az úgynevezett érvényes háromszög, mint az, hogy ténylegesen 407 00:18:49,810 --> 00:18:51,650 az a viselkedés az itt megadott. 408 00:18:51,650 --> 00:18:57,030 >> Ez kiírja, igaz, ha e három oldalról képesek, amely egy háromszög, 409 00:18:57,030 --> 00:19:01,950 és egyébként false Készülj fel, hogy hogyan csinálta? 410 00:19:01,950 --> 00:19:04,650 Itt van egy végrehajtásáról Az érvényes háromszög. 411 00:19:04,650 --> 00:19:05,770 Ez nem az egyetlen. 412 00:19:05,770 --> 00:19:07,770 Tisztelettel esetleg kis mértékben változhatnak. 413 00:19:07,770 --> 00:19:11,040 De ez nem, sőt, van azt a viselkedést várunk. 414 00:19:11,040 --> 00:19:14,450 Kinyilvánítjuk funkciót a legtetején, bool érvényes háromszög 415 00:19:14,450 --> 00:19:16,630 float x float y úszó részt. 416 00:19:16,630 --> 00:19:18,930 Szóval megint, ez a funkció úgy három valós számok 417 00:19:18,930 --> 00:19:22,280 mint az érvelését, úszó pont értéke változó, 418 00:19:22,280 --> 00:19:26,510 és kiad egy igaz vagy hamis érték, amely egy logikai, visszahívás. 419 00:19:26,510 --> 00:19:28,660 Tehát ezért a visszatérési típus int. 420 00:19:28,660 --> 00:19:30,016 Aztán a függvényt. 421 00:19:30,016 --> 00:19:33,140 Az első dolog, amit tennie, győződjön meg róla, hogy az összes oldalról pozitív. 422 00:19:33,140 --> 00:19:37,010 Ha x kisebb vagy egyenlő, a 0, vagy ha y értéke 0, 423 00:19:37,010 --> 00:19:41,050 vagy ha Z kisebb vagy egyenlő 0, hogy sem lehet egy háromszög. 424 00:19:41,050 --> 00:19:42,380 Nem kell a pozitív oldalát. 425 00:19:42,380 --> 00:19:45,790 És így is vissza hamis ebben a helyzetben. 426 00:19:45,790 --> 00:19:49,010 Következő, győződjön meg róla, hogy minden pár bemenetek 427 00:19:49,010 --> 00:19:51,830 nagyobb, mint a harmadik. 428 00:19:51,830 --> 00:19:54,530 >> Tehát, ha x plus y kisebb vagy egyenlő, mint a Z, 429 00:19:54,530 --> 00:19:57,060 vagy ha x plus z kevesebb vagy egyenlő, mint Y, 430 00:19:57,060 --> 00:20:01,730 vagy ha y plusz z értéke kisebb vagy egyenlő, mint x, hogy szintén nem lehet érvényes háromszög. 431 00:20:01,730 --> 00:20:03,800 Tehát return false újra. 432 00:20:03,800 --> 00:20:06,900 Feltételezve mentünk mind az ellenőrzések mégis, akkor mi is vissza igaz. 433 00:20:06,900 --> 00:20:09,440 Mivel e három oldalról képesek returning-- 434 00:20:09,440 --> 00:20:11,647 létrehozásának érvényes háromszöget. 435 00:20:11,647 --> 00:20:12,230 És ez az. 436 00:20:12,230 --> 00:20:13,830 Már most azt nyilatkozta, és meghatározott. 437 00:20:13,830 --> 00:20:17,330 És lehet, hogy most használni, és ezt a funkciót. 438 00:20:17,330 --> 00:20:19,470 Remek munka. 439 00:20:19,470 --> 00:20:20,650 Én Doug Lloyd. 440 00:20:20,650 --> 00:20:22,820 Ez CS50. 441 00:20:22,820 --> 00:20:24,340