Föll og stefjur
Úr Wikipediu, frjálsa alfræðiritinu

Kynning
Föll og stefjur eru fyrirbæri í hefðbundnum forritunarmálum sem eru notuð til að einangra og einfalda vandamálið. Föll og stefjur eru einnig notuð við endurnýtingu forritskóða, þú skrifar fallið eða stefjuna einu sinni en getur notað það mörgum sinnum.
Föll og stefjur hafa tvo hluta: yfirlýsingarhluta og útfærsluhluta. Yfirlýsingarhluti þarf að koma á undan útfærsluhluta og þurfa að hafa samsvörun. Yfirlýsingarhluti er hausinn á fallinu eða stefjunni og útfærslunhlutinn er síðan hausinn og útfærslan. Í Delphi ( Object Pascal ) eru til tvær tegundir af föllum og stefjum sem geta haft færibreytur.
Færibreytur
Föll og stefjur geta tekið við og skilað út gildum í færibreytum og úttaksgildi.
Tilvísanafæribreytur (reference variables): Þá er vísað í minnisvæði breytunnar sem inniheldur gildið sem á að nota.
Gildisfæribreytur (value variables): Þá er sett gildi breytunnar sem á að nota.
Úttaksfæribreytur (return variables): Þá skilar fallið/stefjan út gildi í breytuna sem send er í fallið/stefjuna.
Stefjur
Stefjur hafa frátekna orðið procedure og forritskóði er settur inn á milli begin ... end blokka en þau eru einnig frátekin orð.
Dæmi um stefju
Procedure summaKoda( var kodi: integer; const tala: integer; out summa: integer ); var intTempTala: integer; begin intTempTala := tala * kodi; summa := intTempTala * ( kodi + tala ); end;
Útskýring á stefju
kodi er tilvísanafæribreyta þar sem hún hefur frátekna orðið var fyrir framan sig.
tala er gildisfæribreyta. Frátekna orðið const er sett fyrir framan hana en þarf í raun ekki að vera nema koma eigi í veg fyrir að átt sé við gildið úr breytunni í stefjunni ef talið er þörf á að passa uppá það.
summa er úttaksfæribreyta þar sem hún hefur frátekna orðið out fyrir framan sig.
Allar breyturnar hafa integer fyrir aftan sig sem segir að þær eru allar af taginu heiltala.
Í stefjum er einnig hægt að skilgreina staðbundnar breytur (local variables) til að nota í stefjunni. Það er gert með því að setja frátekna orðið var fyrir framan begin í stefjunni.
Föll
Föll hafa frátekna orðið function og hefur einnig begin ... end blokk sem forritskóði er settur inn á milli.
Til að breyta ofangreindri stefju í fall þá þarf að breyta þremur atriðum:
Fjarlægja línuna out summa: integer úr skilgreiningunni og ; einnig, muna eftir því.
Setja : integer fyrir aftan svigann ) í skilgreiningunni.
Skipta út summa með frátekna orðinu Result í útfærslunni.
Dæmi um fall
Function summaKoda( var kodi: integer; const tala: integer ): integer; var intTempTala: integer; begin intTempTala := tala * kodi; Result := intTempTala * ( kodi + tala ); end;
Útskýring á falli
Result er skilagildi úr falli sem skýrir þörfina á : integer fyrir aftan svigann ) í skilgreiningunni.
Þar sem fallið hefur skilagildi þá var summa færibreytan óþörf og mátti því fjarlægja hana.
Ítarefni
Fyrir þá sem eru búnir að læra eitthvað um hlutbundin fræði þá er ágætt að vita eftirfarandi:
Föll og stefjur geta einnig haft frátekna orðið Class fyrir framan sig en þá er hægt að nota fallið eða stefjuna án þess að hafa búið til tilvik (instance) af einingu (unit) sem fallið eða stefjan er skilgreind í.
Föll og stefjur er hægt að skilgreina og útfæra í öðrum föllum og stefjum. Um föllin og stefjurnar gilda sömu almennu atriði og um föll og stefjur nema fallið eða stefjan kemur fyrir aftan procedure í fallinu eða stefjunni sem það á að vera í og á undan frátekna orðinu var ef það er þá notað í fallinu eða stefjunni.
Dæmi um fall í falli í einingu sem ekki þarf að búa til tilvik af
Class Function summaKoda( var kodi: integer; const tala: integer ): integer; Function reiknaSummu( kodi, tala, tempTala: integer ): integer; begin Result := tempTala * ( kodi + tala ); end; var intTempTala: integer; begin intTempTala := tala * kodi; Result := reiknaSummu( kodi, tala, intTempTala ); end;