Færibreyta
- Þessi grein fjallar um færibreytu í tölvunarfræði en færibreyta getur vísað til stika í stærðfræði.
Stiki[1] eða færibreyta[1] er í forritun breyta sem vísar til gagna sem falli er látið í té, þar sem gögnin sjálf kallast frumbreytur[2] eða óháðar breytur[2]. Með færibreytum er átt við eins konar "ramma" sem eru fyrir hendi í öllum málum, en fylla má út á mismunandi hátt (gefa mismunandi gildi) í ólíkum málum.
Við skulum taka dæmi um færibreytur með falli skrifað í forritunarmálinu C.
int summa( int a, int b )
Í þessu tilfelli eru færibreyturnar heiltölurnar a og b og hegðar fallið sér í samræmi við færibreyturnar. Mjög líklegt má telja að fallið myndi skila a +b, enda heitir fallið jú summa.
Færibreyta er í raun ekkert annað en vísir á minnishólf sem við höfum skýrt einhverju nafni okkur til einföldunar. Þegar við sendum færibreytu inn í fall höfum við val um að senda hana á nokkra vegu hvað minnishólfameðhöndlun varðar. Við getum sent inn afritunarfæribreytu eða tilvísunarfæribreytu. Munurinn er sá að þegar afritunarfæribreyta er send inn er gildi innsendu breytunnar afritað í nýtt minnishólf sem eingöngu er aðgengilegt innan fallsins. Þegar breyta er send inn í fall sem tilvísunarfæribreyta er í raun verið að senda inn tilvísun í minnishólf breytunnar. Þannig vísar breytan sem lifir innan fallsins í sama minnishólf og breytan sem send var inn í fallið og hafa því allar breytingar áhrif á báðum stöðum.
Einfaldast er að sýna þetta með stuttum dæmum:
Afritunarfæribreyta
breytavoid fall(int a, int b); int _tmain(int argc, _TCHAR* argv[]) { int x,y; x = 1; y = 2; fall( x ,y ); cout << "x = " << x << " & y = " << y << endl; return 0; } void fall(int a, int b) { a = 3; b = 4; }
Efst skilgreinum við fallið "fall" sem tekur inn tvær færibreytur með tölulegum gildum. Í aðal forritinu (main) búum við til tvær talnabreytur, x og y sem við gefum svo gildin 1 og 2. Því næst köllum við í fallið "fall" og sendum x og y inn í fallið sem færibreytur. Við þetta afritast gildi x inn í nýtt minnishólf breytunnar a og gildi y í nýtt minnishólf breytunnar b. Í fallinu er breytunni a gefið gildið 3 og breytunni b gefið gildið 4. Að keyrslu fallsins loknu heldur keyrsla aðal forritsins áfram og gildi breytanna x og y er prentað út á skjá. Þar sem a og b fengu ný minnishólf hefur gildi þeirra engin áhrif á x og y og því prenatast "x = 1 & y = 2"
Tilvísunarfæribreyta
breytavoid fall(int& a, int& b); int _tmain(int argc, _TCHAR* argv[]) { int x,y; x = 1; y = 2; fall( x ,y ); cout << "x = " << x << " & y = " << y << endl; return 0; } void fall(int& a, int& b) { a = 3; b = 4; }
Eini munurinn í skilgreiningu fallsins "fall" er að & merkinu hefur verið bætt fyrir framan skilgreiningu a og b. Þegar x og y eru svo send inn í fallið vísar a á sama minnishólf og x og b á sama minnishólf og y. Þegar a er síðan gefið gildið 3 vistast það í þetta sameiginlega minnishólf og þegar b er gefið gildið 4 vistast það í hólfið sem b á sameiginlegt með y. Í þessu tilfelli skrifast því út "x = 3 & y = 4" í lokin.
Tilvísanir
breyta- ↑ 1,0 1,1 stiki1 kk. Geymt 3 maí 2015 í Wayback Machine á Tölvuorðasafninu
- ↑ 2,0 2,1 „frumbreyta kv.“. Afrit af upprunalegu geymt þann 3. maí 2015. Sótt 25. september 2011.
Heimildir
breytaFyrirmynd greinarinnar var „Parameter (computer science)“ á ensku útgáfu Wikipedia. Sótt 23. mars 2007.