[Powered by Google Translate] Funkcioj estas sekcioj de kodo uzata en pli granda programo
plenumi apartan taskon.
Ili estas ankaŭ sciata kiel proceduroj, subrutinas, kaj subprogramoj,
ĉar ili vere estas nur minimuma programoj ene programoj.
Kvankam eble vi ne rimarkis,
vi plej certe uzis funkcioj jam se vi planas en C.
Kiam vi skribas aĵojn al la ekrano uzante printf,
vi fakte uzas funkcio nomita printf.
Same, GetInt kaj GetString estas funkcioj kiuj CS50 provizas por vi.
Kiel programistoj, ni uzas funkcioj por pluraj kialoj.
>> Havante funkcioj por realigi komunajn taskojn kiel skribi al la ekrano
kaj instigante la uzanto por enigo savas nin tempo kiam programado.
Estas necese skribi kodon por fari tiujn samajn aferojn
ekde ili estas jam farita por ni.
Estas eĉ ne necesas ke ni komprenu ĝuste kiel tiuj funkcioj funkcias interne.
Anstataŭe, ni nur devas scii uzi aŭ nomas ilin en niaj programoj.
Estas ankaŭ helpema por skribi funkciojn en pli granda programoj
eĉ se vi ne planas havi aliaj uzas ilin,
nur por disdividi la pli granda tasko en mano.
Tiel vi donas strukturo al via kodo multe kiel vi volas doni strukturon al provo,
kaj kun vere granda projektoj vi ebligi plurajn personojn
por labori en malsamaj partoj en la sama tempo
ĉar ĝi estas klara kie persono laboro finiĝas kaj alia homo komencas.
>> Funkcioj tipe operacii la 1 aŭ pli enigoj, konata kiel argumentoj aŭ parametroj,
transformante tiuj enigoj enen eligo valoro kiu estas tiam revenis.
Tamen, ĝi estas ankaŭ ebla al havi funkciojn kiuj ne uzas ajnan enigo argumentoj
kaj ne revenas eliro.
Konsentite, sufiĉas la lanugaj stuff.
Ni rigardu kelkajn reala funkcioj en C.
>> Ĉi tie ni havas funkcion nomita kvadrato ke, kredu aŭ ne,
komputas la kvadrato de la enigo.
Ni elsekigi la sintakso de ĝi.
La unua vorto vi vidas en la funkcio, int,
Specifas la reveno tipon de la funkcio, tio estas, la C tipon de la funkcia potenco.
Ĉi tiu funkcio estos Eligu valoro kun tipo int.
La sekvan vorton vi vidas estas la nomo de la funkcio, kvadrata en ĉi tiu kazo.
Enoficigante funkcioj taŭge estas aparte grava
ĉar ĝi estas probable la plej videbla dokumentado de kio la funkcio faras.
Povus esti cool nomi tiun funkcion Shazam aŭ booyah,
sed kiu ne diru al ni ion pri tio, kion la funkcio faras.
>> Post la funkcio nomo venas la enigoj por la funkcio, la argumentoj.
Ili estas listigitaj interne aro de krampoj
kun ambaŭ siaj tipo kaj nomon uzi por ili ene de la korpo de la funkcio.
Kvadrata prenas nur 1 argumento, la int al placo,
kiu Mi decidis doni la nomon x.
Ĉi tie finas la funkcio deklaro aŭ prototipo.
La frizita krampoj ĉirkaŭ la resto de la funkcio
signifi la komenco kaj fino de la funkcio korpon,
la difino de la funkcio mem.
Kvadrato estas bela simpla funkcio.
Ĝi estas nur alvenis 1 linio, ĉar ĉiuj ni devas fari estas multipliki x por oni.
La vorto reveno specifas la eligo valoron kaj provokas la fino de la funkcio.
Por uzi la kvadrata funkcio, ni bezonas provizi la taŭga enigoj
kaj tiam kapti la eligo.
Ĉi tie, oni vidas kelkajn manierojn fari tion.
Ni povas pasi en kruda int, kiel 6, aŭ ni povas pasi en variablo kiel.
Notu ke ĉiu tempo ni nomas kvadrato,
ni kapti la eligo en variablo kaj poste presi ĝin.
Tamen, ni ne devas gardi la reveno valoron en variablo kaj poste presi.
Ni povus simple sendi ĝin rekte al printf kiel ni faras kiam ni kvadrataj 10,
sed ĉi tio signifas ke ni ne havas aliron al la reveno valoro de kvadrata 10
aliloke en la kodo.
Ni rigardu alia simpla ekzemplo.
>> Ĉi-foje, ni adiciu 2 kaleŝegoj kune tiel ke ni povos vidi kion funkcio similas
kiam ĝi atingis 2 enigoj anstataŭ nur 1.
Kiel vi povas vidi, ĝi ne estas tre malsama.
Ĉiuj ni estas aldoni en la 2-a argumento, kaleŝego nomata b,
al la argumento listo uzante komo por disigi ĝin de la unua argumento, flosi al.
Do, niaj kvadrato kaj sumo funkcioj estas bela facila por kompreni
ĉar ili estas ekvivalentaj al funkcioj, ke vi vidis antaŭe en math klaso.
Nun, ni rigardu funkcio kiu estas iomete malsamaj.
Anstataŭ reveni valoro, ĝi modifas stato.
Ĉi tiu estas sciata kiel havi kromefikon.
En ĉi tiu programo, la printf_fudd_style funkcio
havas reveno tipo kiun ni ne vidis antaŭe, malplenon.
>> Void uzas por diri ke funkcio ne redonas nenion.
Ne estas variabloj de tipo void,
do se vi provas redoni ion de funkcio kiel printf_fudd_style,
la tradukilo krias al vi.
Ene printf_fudd_style, ni vidas, ke dum la funkcio ankoraŭ plenumas taskon,
nome, ŝanĝante ĉiuj Rs al WS,
la punkto de la funkcio estas modifi la kordo kaj poste presi ĝin sur la ekrano,
ŝanĝi la staton de la programo anstataux redoni rezulto.
Uzanta ĉi tiu funkcio estas tre multe kiel uzi nian kvadrato kaj sumo funkcioj,
krom ni ne stoki la rezultita en variablo aŭ pasi ĝin al alia funkcio
ekde estas ne rezulto paroli.
Do, kiam ni tradukigi kaj ruli nia Elmer Fudd programo,
vi vidas ke "Vi friponojn kuniklo!" gets transformita rajton
"Vi wascally wabbit!"
>> Fine, ekzistas ankoraŭ 1 funkcio valoras diskuti
ĉar vi jam uzis ĝin en ĉiu C-programo vi iam skribis, ĉefa.
Artikolo estas funkcio multe kiel ajna alia.
Oni havas reveno tipo, nomo, listo de argumentoj, kaj korpo.
La reveno tipo de ĉefa estas ĉiam int,
kaj ĉi int uzas por komuniki la stato de la programo kiam finas.
>> Ĉu ĝi funkcias kun sukceso, aŭ ĉu ĝi finos frue pro eraro?
Reveni al nulo indikas sukcesan kuri,
kaj revenante ĉiu ne-nula valoro indikas eraron.
Depende de la tipo de programo vi skribas,
reveni malsamaj kodoj por diversaj eraroj povas esti utila
por homoj kiuj uzas vian programon poste.
Elektra reto argumentoj estas iom pli komplika.
>> La argumento listo povas ĉu esti malplena,
kiuj ni indikas per skribanta malplena en inter la krampoj,
aŭ la listo povas havi 2 argumentojn: estas int kaj tabelo de char * s.
Tiuj estas uzataj kiam via programo intencas uzi
argumentoj pasis en la komanda linio kiam la programo estas alvokebla.
La int argumento estas tipe nomata argc,
kaj estas egala la longo de la char * aro, konata kiel argv.
Argv enhavas la komandlinio argumentoj transiris en la programo.
En alia mallonga, ni parolos pri kiel uzi tiujn variablojn en pli detalo.
Por la momento, vi povas senti libere deklari ĉefa ajna maniero.
Mi tipe elektas skribi ĝin malplilongigita maniero, sen argumentoj, kiam eblas.
>> Nun ke vi scias skribi funkciojn,
vi bone sur via vojo al evoluantaj grandaj, pli kompleksajn programojn.
Mia nomo estas Nate Hardison. Ĉi tiu estas CS50.