Tölvunarfræði/Föll

Úr Wikibókunum

Fall (e. Subroutine) er heiti yfir samanpakkaða runu af atvikum sem forrit getur framkvæmt.

Föll[breyta]

Föll eru skilgreind í kóða með ákveðnu nafni og innihalda lista af atvikum sem verða keyrð þegar að forrit reynir að framkvæma ákveðið fall (þ.e. “kalla á fall”). Grunnhugmyndin að falli er að það getur t.d. tekið inn í sig breytu(r), framkvæmt runu af útreikningum á breytunum og skilað frá sér nýja breytu(r).

Uppruni[breyta]

Heiðurinn að hugmyndinni að föllum hefur verið tileinkaður þeim Marice Wilkes, David Wheeler og Stanley Gill.

Föll og tungumál[breyta]

Hvernig föll eru skilgreind í kóði fer eftir í hvaða forritunarmáli er verið að vinna í, hér að neðan eru nokkur dæmi sem sýna hvernig föll eru skilgreind á mismunandi hátt.

void main(); // C++
Function Function() (') Visual Basic
def func() # Python

Kostir falla[breyta]

Notkun á föllum býður upp á marga kosti fyrir framleiðsu á forritum, en allra helst ber þar að nefna:

  • Gerir forriturum kleift að brjóta forrit upp í einingar, sem gerir forritið bæði auðveldara í lestri og í vinnu.
  • Leyfir endurnotkun á kóða, sem gerir forrit um leið minna.
  • Eykur rekjun á keyrandi kóða þar flest forritunarmál auðvelda reykjun með því að skilgreina í keyrslugrunnum í hvaða föll hafa verið kölluð.

Ókostir falla[breyta]

Ólíkt því að ef allur kóðinn væri í einu falli kallar notkun margra falla á aukna vinnslu tölvunnar (e. Overhead) vegna þeirra aukaskrefa sem nauðsynleg eru til að virkja fallið.

Föll og hlutbundin forritun[breyta]

Í hlutbundinni forritun (e. Object Oriented Programming) geta föll verið partur af klösum sem haga sér eins og tilvik. Þegar að um tilviksföll er að ræða getur forrit ekki fengið aðgang að fallinu nema að það hafi þegar búið til tilvik af klasanum sem geymir ákveðna fallið.

Í mörgum hlutbundnum forritunarmálum er einnig hægt að skilgreina aðgangsskilyrði fyrir föll, sem stjórnar því hvort að forrit hefur beinan aðgang að breytu á klasahlut.

class NewClassObject()
{
public:
        public PublicFunction(); // forritið getur kallað beint í þessa breytu
private:
	private PrivateFunction(); // bara NewClassObject getur sjálft kallað í þessa breytu
}

Forskriftar bókasöfn[breyta]

Flest forritunarmál koma með svo kölluð forskriftar bókarsöfn (e. Programming Library) og er þeim oft skipt í flokka sem innihalda fyrirfram skilgreind föll. Þessum fyrir fram skilgreindum föllum geta forritarar svo nýtt sér við að skrifa forrit.

Að fyrstu voru fyrirfram skilgreind föll sett inn til að auðvelda aðgang forritara í flóknar færslur, en hefur einnig þróast áfram fyrir aðgerðir sem eru oft notaðar, sem gerir það að þörf forritara til að skilgreina sama fall aftur í mörgun hlutum forrits minkar.

Hefðir falla[breyta]

Sú hefð hefur skapast að nafngiftir falla skulu vera lýsandi fyrir hlutverk þeirra eða vinnu. Föllum eru gefin sagnorð ef þau framkvæma verk (t.d. print), lýsingarorð ef þau gera fyrirspurn og nafnorð ef þau taka gildi breytna.

Einnig er mikilvægt að fall þjóni aðeins einum tilgangi. Ef fall er farið gera tvö eða fleiri verk ætti að skipta fallinu niður í fleiri föll sem framkvæma þau verk.

Heimildir[breyta]

Árni Björnsson & Húni Hinrichsen