[Powered by Google Translate] Mga pag-andar ay mga seksyon ng code na ginagamit sa loob ng isang mas malaking programa
upang isagawa ang isang partikular na gawain.
Din ito ay kilala bilang pamamaraan, subroutines, at subprograms,
dahil sila ay talagang lamang ang mini programa sa loob ng programa.
Kahit na maaaring hindi mo napansin,
pinaka-tiyak na ginamit function na kung na program sa C.
Kapag sumulat ka ng mga bagay-bagay sa screen gamit printf,
aktwal na gumagamit ka ng isang function na tinatawag na printf.
Gayundin, GetInt at GetString function na nagbibigay ng CS50 para sa iyo.
Bilang programmer, ginagamit namin ang mga function para sa isang bilang ng mga kadahilanan.
>> Ang pagkakaroon ng mga function upang magsagawa ng mga karaniwang gawain tulad ng pagsusulat sa screen
at pagdikta sa gumagamit para sa input sine-save sa amin ng oras kapag programa.
Ito ay hindi kinakailangan na magsulat ng code na gawin ang mga parehong bagay
dahil tapos ka na para sa amin.
Ito ay hindi kahit na kinakailangan para sa amin upang maunawaan kung paano ang mga function gumagana sa loob.
Sa halip, kami na lang ay upang malaman kung paano gamitin o tawagan ang mga ito sa aming mga programa.
Ay kapaki-pakinabang din upang sumulat ng mga function sa mas malaking programa
kahit na hindi ka pagpaplano sa pagkakaroon ng iba gamitin ang mga ito,
lamang hatiin ang mas malaking gawain sa kamay.
Sa ganitong paraan, magbibigay sa iyo ng istraktura sa iyong code na halos tulad na nais mong magbigay ng istraktura sa isang sanaysay,
at may talagang malaking proyekto pinagana mo ang maraming tao
upang gumana sa iba't ibang bahagi sa parehong oras
dahil malinaw kung saan trabaho ang isang tao ay nagtatapos at isa pa nagsisimula.
>> Karaniwang ay nagpapatakbo ng mga pag-andar sa 1 o higit pang mga input, na kilala bilang mga argumento o mga parameter,
pagbabago ng mga input sa isang halaga ng output na bumalik.
Gayunpaman, posible ring magkaroon ng mga function na hindi gamitin ang anumang mga argumento ng input
at hindi nagbabalik ng isang output.
Okay, sapat na may malambot na mga bagay-bagay.
Natin tingnan sa ilang mga tunay na mga function sa C.
>> Narito kami ay may isang function na tinatawag na parisukat na, naniniwala ito o hindi,
computes ang square ng input.
Magkatay natin ang syntax nito.
Ang unang salita na nakikita mo sa pag-andar, int,
tumutukoy ang return uri ng pag-andar, iyon ay, ang C uri ng output ng pag-andar.
Ang function na ito ay output ng isang halaga na may uri int.
Ang susunod na salita na nakikita mo ay ang pangalan ng pag-andar, parisukat sa kasong ito.
Pagpapangalan function naaangkop ay partikular na mahalaga
dahil ito ay marahil ang pinaka-nakikita dokumentasyon ng kung ano ang ginagawa ng function na.
Maaaring maging cool na pangalanan ito function na shazam o booyah,
ngunit hindi sabihin sa amin ng kahit ano tungkol sa kung ano ang ginagawa ng function na.
>> Pagsunod sa ang pangalan ng function na dumating ang mga input sa pag-andar, ang mga argumento.
Mga ito ay nakalista sa loob ng isang hanay ng mga panaklong
sa parehong kanilang mga uri at isang pangalan upang gamitin para sa mga ito sa loob ng katawan ng function na.
Square tumatagal lamang ng 1 argumento, ang int sa square,
kung saan ako nagpasya upang bigyan ang pangalan x.
Ito ay nagtatapos ang deklarasyon ng function na o prototype.
Ang kulot tirante nakapalibot sa lahat ng pag-andar
tukuyin ang simula at katapusan ng mga function na ang katawan,
ang kahulugan ng function na mismo.
Square ay isang medyo simpleng function na.
Lamang ito nakakuha 1 linya, dahil ang lahat kami ay may sa gawin ay multiply x mismo.
Ang salitang return tinutukoy ang halaga ng output at pinalitaw ang dulo ng function na.
Upang gamitin ang function na parisukat, kailangan namin upang ibigay ang mga naaangkop na input
at pagkatapos makuha ang output.
Dito, makikita mo ng ilang mga paraan ng paggawa na.
Maaari naming pumasa sa isang raw int, tulad ng 6, o maaari naming pumasa sa isang variable na tulad ng isang.
Tandaan na ang bawat oras tawagan namin square,
namin makuha ang output sa isang variable at pagkatapos ay i-print ito.
Gayunpaman, hindi namin upang mag-imbak ang return halaga sa isang variable at pagkatapos ay i-print.
Lang namin ipadala ito nang direkta sa printf ng ginagawa namin kapag kami square 10,
ngunit ito ay nangangahulugan na hindi namin magkaroon ng access sa return halaga ng parisukat 10
sa ibang lugar sa ang code.
Tingnan natin sa isa pang simpleng halimbawa.
>> Oras na ito, makikita namin nagtutuos 2 kamay upang maaari naming makita kung ano ang function na kamukha
kapag ito ay nakakuha ng 2 input sa halip na lamang 1.
Tulad ng iyong nakikita, ito ay hindi magkano ang iba't ibang.
Ang ginagawa namin ay idagdag sa 2nd argument, Float na pinangalanang b,
ang listahan ng argumento gamit ang isang kuwit upang paghiwalayin ang mga ito mula sa unang argumento, lumutang ang isang.
Kaya, ang aming square at mga function sa kabuuan ay medyo madaling maunawaan
dahil hindi nila katumbas sa mga function na nakita mo bago sa klase sa matematika.
Ngayon, tingnan natin sa isang function na ay bahagyang naiiba.
Sa halip na bumabalik ng isang halaga, binabago ang isang estado.
Ito ay kilala bilang nagkakaroon ng side effect.
Sa programang ito, ang printf_fudd_style function na
ay may return na hindi namin nakita bago, walang bisa ang uri.
>> Walang bisa ay ginagamit upang sabihin na ang isang function na ay hindi bumalik sa anumang.
Walang mga variable ng uri void,
kaya kung sinubukan mong upang magbalik ng bagay mula sa isang function tulad printf_fudd_style,
tagatala ay sumigaw sa iyo.
Inside printf_fudd_style, nakikita namin na habang ang function pa rin ang gumaganap ng isang gawain,
lalo, lumipat lahat ng Rs sa Ws,
ang punto ng pag-andar ay upang baguhin ang string at pagkatapos ay i-print ito sa screen,
pagbabago ng estado ng programa sa halip na bumabalik resulta.
Gamit ang function na ay napaka tulad ng paggamit ng aming square at mga function sa kabuuan,
maliban sa hindi namin iimbak ang resulta sa isang variable o ipasa ang mga ito sa isa pang function na
dahil walang resulta na magsalita ng.
Kaya, kapag makatipon namin at patakbuhin ang aming Elmer Fudd programa,
makikita mo na "Ikaw hindi matapat kuneho!" maipo-transformed karapatan sa
"Ikaw wascally wabbit!"
>> Sa wakas, may 1 pang function na nagkakahalaga tinatalakay
dahil ikaw gamitin ito sa bawat C programa na iyong nakasulat, pangunahing.
Main ay isang function tulad ng anumang iba pang.
Ito ay nakuha ng isang uri ng return, pangalan, ng isang listahan ng mga argumento, at ng katawan.
Ang return uri ng pangunahing palaging isang int,
at ang int na ito ay ginagamit upang makipag-usap sa katayuan ng mga programa kapag natapos.
>> Ba ito patakbuhin matagumpay, o ito magtapos ang maagang dahil sa isang error?
Bumabalik sa zero nagpapahiwatig ng isang matagumpay na run,
at nagbabalik ng anumang di-zero na halaga ay nagpapahiwatig ng isang error.
Depende sa uri ng programa sumusulat ka,
magbabalik ang mga iba't ibang code para sa iba't ibang mga error ay maaaring maging kapaki-pakinabang
para sa mga tao na gumagamit ng iyong programa sa ibang pagkakataon.
Mains argumento ng kaunti pa kumplikadong.
>> Ang argument listahan ay maaaring walang laman,
na nagpapahiwatig namin sa pamamagitan ng pagsusulat ng walang bisa in sa pagitan ng mga panaklong,
o listahan 2 argumento: isang int at isang array ng magpasinda * s.
Ito ay ginagamit kapag ang iyong programa ay nagnanais na gamitin ang
argumento na ang pumasa sa sa linya ng command kapag ang programa ay mahihingi.
Ang int argument ay karaniwang tinatawag na argc,
at pantay-pantay ang haba ng magpasinda array *, na kilala bilang argv.
Argv naglalaman ng utos mga argumento ng linya pumasa sa sa programa.
Sa ibang maikling, magpapadala kami makipag-usap tungkol sa kung paano gamitin ang mga variable na ito nang mas detalyado.
Sa ngayon, maaari mong huwag mag-atubiling upang idedeklara pangunahing alinman paraan.
Karaniwang pinili ko na magsulat ito ang mas maikling paraan, na walang argumento, kapag posible.
>> Ngayon na alam mo kung paano magsulat ng function,
ikaw na rin sa iyong paraan sa pagbuo ng mas malaki, mas kumplikadong mga programa.
Ang pangalan ko ay Nate Hardison. Ito ay CS50.