1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Funktsioonid on osades kood, mida kasutatakse suurema programmi 2 00:00:09,640 --> 00:00:11,430 et täita teatud ülesannet. 3 00:00:11,430 --> 00:00:15,060 Nad on tuntud ka kui kord, alamprogrammid, ja alaprogramme, 4 00:00:15,060 --> 00:00:18,320 kuna nad tegelikult on lihtsalt mini programmide raames. 5 00:00:18,320 --> 00:00:20,340 Kuigi te ei pruugi olla märganud, 6 00:00:20,340 --> 00:00:24,090 Te kindlasti olete kasutanud funktsioone juba siis, kui olete programmeeritud C. 7 00:00:24,090 --> 00:00:26,770 Kui Sa kirjutad kraami ekraani kasutades printf, 8 00:00:26,770 --> 00:00:29,380 sa oled tegelikult kasutades funktsiooni nimetatakse printf. 9 00:00:29,380 --> 00:00:33,760 Samuti GetInt ja getString on funktsioone, mis CS50 annab teile. 10 00:00:33,760 --> 00:00:37,750 Kuna programmeerijad, me kasutame funktsioone mitmel põhjusel. 11 00:00:37,750 --> 00:00:41,240 >> Võttes ülesandeid täitma ühiseid ülesandeid nagu kirjalikult ekraanil 12 00:00:41,240 --> 00:00:44,480 ja õhutusel kasutaja sisend säästab meid ajal, kui programmeerimine. 13 00:00:44,480 --> 00:00:47,510 Ei ole vaja kirjutada koodi teha neid samu asju 14 00:00:47,510 --> 00:00:49,520 kuna nad juba teinud meie heaks. 15 00:00:49,520 --> 00:00:54,580 See ei ole isegi vaja meid täpselt aru, kuidas need funktsioonid töötavad sisemiselt. 16 00:00:54,580 --> 00:00:58,880 Selle asemel me lihtsalt pead teadma, kuidas kasutada neile saab helistada meie programmides. 17 00:00:58,880 --> 00:01:02,040 Samuti on kasulik kirjutada funktsioone suuremate programmide 18 00:01:02,040 --> 00:01:04,330 isegi kui sa ei plaani võttes teised kasutavad neid, 19 00:01:04,330 --> 00:01:06,830 lihtsalt jagada suurema ülesande. 20 00:01:06,830 --> 00:01:11,910 Nii, sa annad struktuur oma koodi meelega sa annad struktuur essee, 21 00:01:11,910 --> 00:01:15,180 ja tõesti suured projektid te lubade mitu inimest 22 00:01:15,180 --> 00:01:16,730 töö erinevaid osi samal ajal 23 00:01:16,730 --> 00:01:20,480 kuna on selge, kus ühe inimese töö lõpeb ja teine ​​on algust. 24 00:01:20,480 --> 00:01:26,530 >> Funktsioonid üldiselt töötavad 1. või mitme sisendi tuntud argumendid või parameetreid, 25 00:01:26,530 --> 00:01:30,520 muutes need sisendid toodangu väärtus, mis on siis tagasi. 26 00:01:30,520 --> 00:01:34,950 Siiski on võimalik ka funktsioone, mis ei kasuta sisestatud argumente 27 00:01:34,950 --> 00:01:36,400 ja tagasi ei tule väljund. 28 00:01:36,400 --> 00:01:38,790 Okei, aitab kohev kraam. 29 00:01:38,790 --> 00:01:41,790 Võtame pilk mõned tõelised funktsioonide C. 30 00:01:41,790 --> 00:01:45,570 >> Siin on meil funktsioon nimega ruut, et uskuge või mitte, 31 00:01:45,570 --> 00:01:47,570 arvutab ruudu sisendi. 32 00:01:47,570 --> 00:01:49,490 Olgem lahkama süntaks see. 33 00:01:49,490 --> 00:01:51,860 Esimene sõna, mida näed funktsiooni, keskmine, 34 00:01:51,860 --> 00:01:57,460 täpsustatakse tagastamise tüüpi funktsioon, see on, C tüüpi funktsiooni väljund. 35 00:01:57,460 --> 00:02:00,370 See funktsioon tulemus on väärtus tüüpi int. 36 00:02:00,370 --> 00:02:04,100 Järgmine sõna näed on funktsiooni nimi, ruut käesoleval juhul. 37 00:02:04,100 --> 00:02:07,390 Naming funktsiooni sobivalt on eriti oluline 38 00:02:07,390 --> 00:02:11,260 kuna see on ilmselt kõige nähtavam dokumentatsioon, mida funktsioon teeb. 39 00:02:11,260 --> 00:02:14,880 Oleks lahe kui nimetada seda funktsiooni Shazam või Hurraa, 40 00:02:14,880 --> 00:02:18,340 kuid see ei ütle meile midagi selle kohta, mida funktsioon teeb. 41 00:02:18,340 --> 00:02:23,470 >> Pärast funktsiooni nimi tulnud sisendite funktsioon, argumendid. 42 00:02:23,470 --> 00:02:26,380 Need on loetletud sees komplekti sulgudes 43 00:02:26,380 --> 00:02:30,160 nii oma liigi ja nime kasutada neid kehas funktsioon. 44 00:02:30,160 --> 00:02:34,030 Square võtab vaid 1 argument, int kandiline, 45 00:02:34,030 --> 00:02:36,160 mis ma olen otsustanud anda nime x. 46 00:02:36,160 --> 00:02:40,760 See lõpeb funktsiooni deklaratsiooni või prototüüp. 47 00:02:40,760 --> 00:02:43,320 Looksulg ümbritsev ülejäänud funktsioon 48 00:02:43,320 --> 00:02:45,870 tähistavad alguses ja lõpus funktsiooni keha, 49 00:02:45,870 --> 00:02:48,320 mõiste funktsioon ise. 50 00:02:48,320 --> 00:02:50,300 Square on päris lihtne ülesanne. 51 00:02:50,300 --> 00:02:54,100 See on ainult sain 1 rida, sest kõik me peame tegema, on korrutada x iseenesest. 52 00:02:54,100 --> 00:02:59,250 Sõna tagasi määrab toodangu väärtus ja vallandab lõpuks funktsiooni. 53 00:02:59,250 --> 00:03:03,430 Et kasutada ruudu funktsioon, peame andma asjakohaseid sisendeid 54 00:03:03,430 --> 00:03:05,310 ja siis jälle väljund. 55 00:03:05,310 --> 00:03:08,140 Siin näed paar viise seda. 56 00:03:08,140 --> 00:03:13,600 Me võime läbida toores int, nagu 6 või saame läbida muutuja nagu. 57 00:03:13,600 --> 00:03:15,700 Pidage meeles, et iga kord, kui me helistada ruut, 58 00:03:15,700 --> 00:03:18,330 me lüüa toodangu muutuja ja proovige uuesti printida. 59 00:03:18,330 --> 00:03:22,690 Kuid me ei pea salvestada tagastatav väärtus on muutuv ja seejärel printida. 60 00:03:22,690 --> 00:03:27,090 Me võiksime lihtsalt saatke see otse printf nagu me teeme, kui me väljak 10, 61 00:03:27,090 --> 00:03:30,580 kuid see ei tähenda, et meil ei ole juurdepääsu tagastatav väärtus väljak 10 62 00:03:30,580 --> 00:03:32,230 mujal kood. 63 00:03:32,230 --> 00:03:34,890 Vaatame veel üks lihtne näide. 64 00:03:34,890 --> 00:03:38,750 >> Seekord me kokku 2 ujukite kokku, et me saaksime näha, mida funktsioon välja näeb 65 00:03:38,750 --> 00:03:41,220 kui see sai 2 sisendit asemel vaid 1. 66 00:03:41,220 --> 00:03:43,950 Nagu näete, see ei ole palju erinev. 67 00:03:43,950 --> 00:03:47,330 Kõik me teeme, on lisada 2. argument, float nimega b, 68 00:03:47,330 --> 00:03:51,820 Seoses argumendiga nimekirja kasutades koma, et eraldada see esimene argument, float. 69 00:03:51,820 --> 00:03:55,550 Niisiis, meie ruut ja summa funktsioonid on üsna lihtne aru saada 70 00:03:55,550 --> 00:03:58,930 sest nad on samaväärsed funktsioonid, et olete näinud matemaatika klassi. 71 00:03:58,930 --> 00:04:01,610 Nüüd vaatame funktsioon, mis on veidi teistsugune. 72 00:04:01,610 --> 00:04:04,620 Selle asemel, et tagastada raha, see muudab riigi. 73 00:04:04,620 --> 00:04:07,260 Seda tuntakse võttes kõrvaltoime. 74 00:04:07,260 --> 00:04:10,750 Selles programmis, printf_fudd_style funktsioon 75 00:04:10,750 --> 00:04:13,410 on naasmise tüüp, et me pole varem näinud, tühine. 76 00:04:13,410 --> 00:04:16,730 >> Tühjus on tavaks öelda, et funktsioon ei tagasta midagi. 77 00:04:16,730 --> 00:04:19,410 Puuduvad muutujad tüüpi tühine, 78 00:04:19,410 --> 00:04:22,760 nii et kui sa püüad midagi tagastada alates funktsioon nagu printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 kompilaator ütleb teile. 80 00:04:24,290 --> 00:04:29,390 Toas printf_fudd_style, näeme, et kui funktsioon ikka täidab ülesande 81 00:04:29,390 --> 00:04:31,890 nimelt, lülitus kõik Rs et Ws, 82 00:04:31,890 --> 00:04:36,380 punkt on funktsiooni muuta stringi ja seejärel printida ekraanil 83 00:04:36,380 --> 00:04:39,400 oleku muutmisel programmi asemel, et tagastada tulemus. 84 00:04:39,400 --> 00:04:43,700 Selle funktsiooni abil on väga sarnane kasutades meie ruut ja summa funktsioone, 85 00:04:43,700 --> 00:04:46,950 välja arvatud me ei salvesta tulemus muutuja või andke see välja mõne muu funktsiooni 86 00:04:46,950 --> 00:04:49,520 kuna puudub tulemus rääkida. 87 00:04:49,520 --> 00:04:53,180 Nii et kui me kompileerida ja käivitada meie Elmeri programmi 88 00:04:53,180 --> 00:04:56,970 näed, et "Sa vallatu küülik!" saab ümber õigus 89 00:04:56,970 --> 00:04:58,730 "Sa wascally Wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Lõpuks on veel 1 funktsioon tasub arutada 91 00:05:02,250 --> 00:05:06,810 kuna olete kasutanud seda iga C programm olete kunagi kirjutatud, peamised. 92 00:05:06,810 --> 00:05:09,450 Peamine on funktsioon palju nagu iga teine. 93 00:05:09,450 --> 00:05:13,580 See sai tulu liik, nimi, argumentide loetelu, ja keha. 94 00:05:13,580 --> 00:05:16,110 Tüübi tagastamise peamine on alati int, 95 00:05:16,110 --> 00:05:19,120 ja see int kasutatakse suhelda staatuse programmi, kui ta lõpetab. 96 00:05:19,120 --> 00:05:23,360 >> Kas see kestab edukalt, või tegid seda varem lõppenud, sest vea? 97 00:05:23,360 --> 00:05:26,390 Tulles tagasi nulli näitab edukat kulgema, 98 00:05:26,390 --> 00:05:29,510 ja jälle igal nullist väärtus näitab viga. 99 00:05:29,510 --> 00:05:31,950 Sõltuvalt sellest, millist programmi sa oled kirjalikult, 100 00:05:31,950 --> 00:05:34,960 tagasi erinevad koodid erinevad vead võivad olla abiks 101 00:05:34,960 --> 00:05:37,210 inimestele, kes kasutavad oma programmi hiljem. 102 00:05:37,210 --> 00:05:40,220 Võrgutoide argumendid on veidi keerulisem. 103 00:05:40,220 --> 00:05:42,150 >> Argument nimekiri võib olla kas tühi, 104 00:05:42,150 --> 00:05:45,330 mis me näidata, kirjutades tühine vahel sulgudes, 105 00:05:45,330 --> 00:05:50,220 või loendil võib olla 2 argumenti: int ja array char * s. 106 00:05:50,220 --> 00:05:52,820 Neid kasutatakse, kui teie programm kavatseb kasutada 107 00:05:52,820 --> 00:05:56,490 argumentide sisse käsureal, kui programm on tuginetud. 108 00:05:56,490 --> 00:05:59,690 Int argument on tavaliselt nimetatakse argc, 109 00:05:59,690 --> 00:06:03,300 ja see on võrdne pikkus char * rida, mida tuntakse argv. 110 00:06:03,300 --> 00:06:07,080 Argv sisaldab käsurea argumente läks programm. 111 00:06:07,080 --> 00:06:11,440 Teises Ühesõnaga, me räägime, kuidas kasutada neid muutujaid üksikasjalikumalt. 112 00:06:11,440 --> 00:06:15,220 Praegu võite julgelt kuulutada peamine ükskõik kummale poole. 113 00:06:15,220 --> 00:06:19,410 Ma tavaliselt valida kirjutada seda lühem tee, ilma argumentideta, kui võimalik. 114 00:06:19,410 --> 00:06:22,230 >> Nüüd sa tead, kuidas kirjutada funktsioone, 115 00:06:22,230 --> 00:06:25,030 sa oled hästi oma viis arendada suuremad keerulisi programme. 116 00:06:25,030 --> 00:06:29,740 Minu nimi on Nate Hardison. See on CS50.