1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Mga pag-andar ay mga seksyon ng code na ginagamit sa loob ng isang mas malaking programa 2 00:00:09,640 --> 00:00:11,430 upang isagawa ang isang partikular na gawain. 3 00:00:11,430 --> 00:00:15,060 Din ito ay kilala bilang pamamaraan, subroutines, at subprograms, 4 00:00:15,060 --> 00:00:18,320 dahil sila ay talagang lamang ang mini programa sa loob ng programa. 5 00:00:18,320 --> 00:00:20,340 Kahit na maaaring hindi mo napansin, 6 00:00:20,340 --> 00:00:24,090 pinaka-tiyak na ginamit function na kung na program sa C. 7 00:00:24,090 --> 00:00:26,770 Kapag sumulat ka ng mga bagay-bagay sa screen gamit printf, 8 00:00:26,770 --> 00:00:29,380 aktwal na gumagamit ka ng isang function na tinatawag na printf. 9 00:00:29,380 --> 00:00:33,760 Gayundin, GetInt at GetString function na nagbibigay ng CS50 para sa iyo. 10 00:00:33,760 --> 00:00:37,750 Bilang programmer, ginagamit namin ang mga function para sa isang bilang ng mga kadahilanan. 11 00:00:37,750 --> 00:00:41,240 >> Ang pagkakaroon ng mga function upang magsagawa ng mga karaniwang gawain tulad ng pagsusulat sa screen 12 00:00:41,240 --> 00:00:44,480 at pagdikta sa gumagamit para sa input sine-save sa amin ng oras kapag programa. 13 00:00:44,480 --> 00:00:47,510 Ito ay hindi kinakailangan na magsulat ng code na gawin ang mga parehong bagay 14 00:00:47,510 --> 00:00:49,520 dahil tapos ka na para sa amin. 15 00:00:49,520 --> 00:00:54,580 Ito ay hindi kahit na kinakailangan para sa amin upang maunawaan kung paano ang mga function gumagana sa loob. 16 00:00:54,580 --> 00:00:58,880 Sa halip, kami na lang ay upang malaman kung paano gamitin o tawagan ang mga ito sa aming mga programa. 17 00:00:58,880 --> 00:01:02,040 Ay kapaki-pakinabang din upang sumulat ng mga function sa mas malaking programa 18 00:01:02,040 --> 00:01:04,330 kahit na hindi ka pagpaplano sa pagkakaroon ng iba gamitin ang mga ito, 19 00:01:04,330 --> 00:01:06,830 lamang hatiin ang mas malaking gawain sa kamay. 20 00:01:06,830 --> 00:01:11,910 Sa ganitong paraan, magbibigay sa iyo ng istraktura sa iyong code na halos tulad na nais mong magbigay ng istraktura sa isang sanaysay, 21 00:01:11,910 --> 00:01:15,180 at may talagang malaking proyekto pinagana mo ang maraming tao 22 00:01:15,180 --> 00:01:16,730 upang gumana sa iba't ibang bahagi sa parehong oras 23 00:01:16,730 --> 00:01:20,480 dahil malinaw kung saan trabaho ang isang tao ay nagtatapos at isa pa nagsisimula. 24 00:01:20,480 --> 00:01:26,530 >> Karaniwang ay nagpapatakbo ng mga pag-andar sa 1 o higit pang mga input, na kilala bilang mga argumento o mga parameter, 25 00:01:26,530 --> 00:01:30,520 pagbabago ng mga input sa isang halaga ng output na bumalik. 26 00:01:30,520 --> 00:01:34,950 Gayunpaman, posible ring magkaroon ng mga function na hindi gamitin ang anumang mga argumento ng input 27 00:01:34,950 --> 00:01:36,400 at hindi nagbabalik ng isang output. 28 00:01:36,400 --> 00:01:38,790 Okay, sapat na may malambot na mga bagay-bagay. 29 00:01:38,790 --> 00:01:41,790 Natin tingnan sa ilang mga tunay na mga function sa C. 30 00:01:41,790 --> 00:01:45,570 >> Narito kami ay may isang function na tinatawag na parisukat na, naniniwala ito o hindi, 31 00:01:45,570 --> 00:01:47,570 computes ang square ng input. 32 00:01:47,570 --> 00:01:49,490 Magkatay natin ang syntax nito. 33 00:01:49,490 --> 00:01:51,860 Ang unang salita na nakikita mo sa pag-andar, int, 34 00:01:51,860 --> 00:01:57,460 tumutukoy ang return uri ng pag-andar, iyon ay, ang C uri ng output ng pag-andar. 35 00:01:57,460 --> 00:02:00,370 Ang function na ito ay output ng isang halaga na may uri int. 36 00:02:00,370 --> 00:02:04,100 Ang susunod na salita na nakikita mo ay ang pangalan ng pag-andar, parisukat sa kasong ito. 37 00:02:04,100 --> 00:02:07,390 Pagpapangalan function naaangkop ay partikular na mahalaga 38 00:02:07,390 --> 00:02:11,260 dahil ito ay marahil ang pinaka-nakikita dokumentasyon ng kung ano ang ginagawa ng function na. 39 00:02:11,260 --> 00:02:14,880 Maaaring maging cool na pangalanan ito function na shazam o booyah, 40 00:02:14,880 --> 00:02:18,340 ngunit hindi sabihin sa amin ng kahit ano tungkol sa kung ano ang ginagawa ng function na. 41 00:02:18,340 --> 00:02:23,470 >> Pagsunod sa ang pangalan ng function na dumating ang mga input sa pag-andar, ang mga argumento. 42 00:02:23,470 --> 00:02:26,380 Mga ito ay nakalista sa loob ng isang hanay ng mga panaklong 43 00:02:26,380 --> 00:02:30,160 sa parehong kanilang mga uri at isang pangalan upang gamitin para sa mga ito sa loob ng katawan ng function na. 44 00:02:30,160 --> 00:02:34,030 Square tumatagal lamang ng 1 argumento, ang int sa square, 45 00:02:34,030 --> 00:02:36,160 kung saan ako nagpasya upang bigyan ang pangalan x. 46 00:02:36,160 --> 00:02:40,760 Ito ay nagtatapos ang deklarasyon ng function na o prototype. 47 00:02:40,760 --> 00:02:43,320 Ang kulot tirante nakapalibot sa lahat ng pag-andar 48 00:02:43,320 --> 00:02:45,870 tukuyin ang simula at katapusan ng mga function na ang katawan, 49 00:02:45,870 --> 00:02:48,320 ang kahulugan ng function na mismo. 50 00:02:48,320 --> 00:02:50,300 Square ay isang medyo simpleng function na. 51 00:02:50,300 --> 00:02:54,100 Lamang ito nakakuha 1 linya, dahil ang lahat kami ay may sa gawin ay multiply x mismo. 52 00:02:54,100 --> 00:02:59,250 Ang salitang return tinutukoy ang halaga ng output at pinalitaw ang dulo ng function na. 53 00:02:59,250 --> 00:03:03,430 Upang gamitin ang function na parisukat, kailangan namin upang ibigay ang mga naaangkop na input 54 00:03:03,430 --> 00:03:05,310 at pagkatapos makuha ang output. 55 00:03:05,310 --> 00:03:08,140 Dito, makikita mo ng ilang mga paraan ng paggawa na. 56 00:03:08,140 --> 00:03:13,600 Maaari naming pumasa sa isang raw int, tulad ng 6, o maaari naming pumasa sa isang variable na tulad ng isang. 57 00:03:13,600 --> 00:03:15,700 Tandaan na ang bawat oras tawagan namin square, 58 00:03:15,700 --> 00:03:18,330 namin makuha ang output sa isang variable at pagkatapos ay i-print ito. 59 00:03:18,330 --> 00:03:22,690 Gayunpaman, hindi namin upang mag-imbak ang return halaga sa isang variable at pagkatapos ay i-print. 60 00:03:22,690 --> 00:03:27,090 Lang namin ipadala ito nang direkta sa printf ng ginagawa namin kapag kami square 10, 61 00:03:27,090 --> 00:03:30,580 ngunit ito ay nangangahulugan na hindi namin magkaroon ng access sa return halaga ng parisukat 10 62 00:03:30,580 --> 00:03:32,230 sa ibang lugar sa ang code. 63 00:03:32,230 --> 00:03:34,890 Tingnan natin sa isa pang simpleng halimbawa. 64 00:03:34,890 --> 00:03:38,750 >> Oras na ito, makikita namin nagtutuos 2 kamay upang maaari naming makita kung ano ang function na kamukha 65 00:03:38,750 --> 00:03:41,220 kapag ito ay nakakuha ng 2 input sa halip na lamang 1. 66 00:03:41,220 --> 00:03:43,950 Tulad ng iyong nakikita, ito ay hindi magkano ang iba't ibang. 67 00:03:43,950 --> 00:03:47,330 Ang ginagawa namin ay idagdag sa 2nd argument, Float na pinangalanang b, 68 00:03:47,330 --> 00:03:51,820 ang listahan ng argumento gamit ang isang kuwit upang paghiwalayin ang mga ito mula sa unang argumento, lumutang ang isang. 69 00:03:51,820 --> 00:03:55,550 Kaya, ang aming square at mga function sa kabuuan ay medyo madaling maunawaan 70 00:03:55,550 --> 00:03:58,930 dahil hindi nila katumbas sa mga function na nakita mo bago sa klase sa matematika. 71 00:03:58,930 --> 00:04:01,610 Ngayon, tingnan natin sa isang function na ay bahagyang naiiba. 72 00:04:01,610 --> 00:04:04,620 Sa halip na bumabalik ng isang halaga, binabago ang isang estado. 73 00:04:04,620 --> 00:04:07,260 Ito ay kilala bilang nagkakaroon ng side effect. 74 00:04:07,260 --> 00:04:10,750 Sa programang ito, ang printf_fudd_style function na 75 00:04:10,750 --> 00:04:13,410 ay may return na hindi namin nakita bago, walang bisa ang uri. 76 00:04:13,410 --> 00:04:16,730 >> Walang bisa ay ginagamit upang sabihin na ang isang function na ay hindi bumalik sa anumang. 77 00:04:16,730 --> 00:04:19,410 Walang mga variable ng uri void, 78 00:04:19,410 --> 00:04:22,760 kaya kung sinubukan mong upang magbalik ng bagay mula sa isang function tulad printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 tagatala ay sumigaw sa iyo. 80 00:04:24,290 --> 00:04:29,390 Inside printf_fudd_style, nakikita namin na habang ang function pa rin ang gumaganap ng isang gawain, 81 00:04:29,390 --> 00:04:31,890 lalo, lumipat lahat ng Rs sa Ws, 82 00:04:31,890 --> 00:04:36,380 ang punto ng pag-andar ay upang baguhin ang string at pagkatapos ay i-print ito sa screen, 83 00:04:36,380 --> 00:04:39,400 pagbabago ng estado ng programa sa halip na bumabalik resulta. 84 00:04:39,400 --> 00:04:43,700 Gamit ang function na ay napaka tulad ng paggamit ng aming square at mga function sa kabuuan, 85 00:04:43,700 --> 00:04:46,950 maliban sa hindi namin iimbak ang resulta sa isang variable o ipasa ang mga ito sa isa pang function na 86 00:04:46,950 --> 00:04:49,520 dahil walang resulta na magsalita ng. 87 00:04:49,520 --> 00:04:53,180 Kaya, kapag makatipon namin at patakbuhin ang aming Elmer Fudd programa, 88 00:04:53,180 --> 00:04:56,970 makikita mo na "Ikaw hindi matapat kuneho!" maipo-transformed karapatan sa 89 00:04:56,970 --> 00:04:58,730 "Ikaw wascally wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Sa wakas, may 1 pang function na nagkakahalaga tinatalakay 91 00:05:02,250 --> 00:05:06,810 dahil ikaw gamitin ito sa bawat C programa na iyong nakasulat, pangunahing. 92 00:05:06,810 --> 00:05:09,450 Main ay isang function tulad ng anumang iba pang. 93 00:05:09,450 --> 00:05:13,580 Ito ay nakuha ng isang uri ng return, pangalan, ng isang listahan ng mga argumento, at ng katawan. 94 00:05:13,580 --> 00:05:16,110 Ang return uri ng pangunahing palaging isang int, 95 00:05:16,110 --> 00:05:19,120 at ang int na ito ay ginagamit upang makipag-usap sa katayuan ng mga programa kapag natapos. 96 00:05:19,120 --> 00:05:23,360 >> Ba ito patakbuhin matagumpay, o ito magtapos ang maagang dahil sa isang error? 97 00:05:23,360 --> 00:05:26,390 Bumabalik sa zero nagpapahiwatig ng isang matagumpay na run, 98 00:05:26,390 --> 00:05:29,510 at nagbabalik ng anumang di-zero na halaga ay nagpapahiwatig ng isang error. 99 00:05:29,510 --> 00:05:31,950 Depende sa uri ng programa sumusulat ka, 100 00:05:31,950 --> 00:05:34,960 magbabalik ang mga iba't ibang code para sa iba't ibang mga error ay maaaring maging kapaki-pakinabang 101 00:05:34,960 --> 00:05:37,210 para sa mga tao na gumagamit ng iyong programa sa ibang pagkakataon. 102 00:05:37,210 --> 00:05:40,220 Mains argumento ng kaunti pa kumplikadong. 103 00:05:40,220 --> 00:05:42,150 >> Ang argument listahan ay maaaring walang laman, 104 00:05:42,150 --> 00:05:45,330 na nagpapahiwatig namin sa pamamagitan ng pagsusulat ng walang bisa in sa pagitan ng mga panaklong, 105 00:05:45,330 --> 00:05:50,220 o listahan 2 argumento: isang int at isang array ng magpasinda * s. 106 00:05:50,220 --> 00:05:52,820 Ito ay ginagamit kapag ang iyong programa ay nagnanais na gamitin ang 107 00:05:52,820 --> 00:05:56,490 argumento na ang pumasa sa sa linya ng command kapag ang programa ay mahihingi. 108 00:05:56,490 --> 00:05:59,690 Ang int argument ay karaniwang tinatawag na argc, 109 00:05:59,690 --> 00:06:03,300 at pantay-pantay ang haba ng magpasinda array *, na kilala bilang argv. 110 00:06:03,300 --> 00:06:07,080 Argv naglalaman ng utos mga argumento ng linya pumasa sa sa programa. 111 00:06:07,080 --> 00:06:11,440 Sa ibang maikling, magpapadala kami makipag-usap tungkol sa kung paano gamitin ang mga variable na ito nang mas detalyado. 112 00:06:11,440 --> 00:06:15,220 Sa ngayon, maaari mong huwag mag-atubiling upang idedeklara pangunahing alinman paraan. 113 00:06:15,220 --> 00:06:19,410 Karaniwang pinili ko na magsulat ito ang mas maikling paraan, na walang argumento, kapag posible. 114 00:06:19,410 --> 00:06:22,230 >> Ngayon na alam mo kung paano magsulat ng function, 115 00:06:22,230 --> 00:06:25,030 ikaw na rin sa iyong paraan sa pagbuo ng mas malaki, mas kumplikadong mga programa. 116 00:06:25,030 --> 00:06:29,740 Ang pangalan ko ay Nate Hardison. Ito ay CS50.