Függvény (programozás)
A Wikipédiából, a szabad enciklopédiából.
A programozásban a függvény (szubrutin, metódus, procedúra vagy alprogram) egy nagyobb program kódjának része, amely egy adott feladatot hajt végre, a kód többi részétől viszonylag független és többször felhasználható.
[szerkesztés] A függvények használatnak előnyei
- csökkenthető a kódismétlődés
- ugyanaz a függvény más programban is használható
- összetett problémák egyszerűbb részekre bonthatók, ami könnyebbé teszi a kód frissítését és bővítését
- javítható a program olvashatósága
- elrejthetők és szabályozhatók a program egyes részei
[szerkesztés] A függvények összetevői lehetnek
- a kód törzse, amely a híváskor végrehajtódik
- paraméterek, melyeket a függvény híváskor megkap
- visszatérési érték, amely a hívás helyére adódik vissza
Több nyelvben, mint például a Pascal, a FORTRAN és az Ada különbséget tesznek a függvények (function) (függvény alprogramok – function subprograms), amelyek értéket adnak vissza (return utasítással), és a szubrutinok (subroutine) vagy eljárások (procedure) között, amelyek nem adnak vissza értéket.
Más nyelvekben, mint a C és a LISP, nincs meg ez a különbségtétel és ezeket a fogalmakat szinonimaként használják. A metódus (method) kifejezést gyakran használják az objektumorientált programozással kapcsolatban, különösen olyan szubrutinokra, amelyek objektum részei. Ezen kívül még a típusosztályokkal kapcsolatban is használják.
A függvények első használata Maurice Wilkes, Stanley Gill és David Wheeler nevéhez fűződik (ők még „closed subroutine”-nak hívták).
[szerkesztés] Példa az eljárások és a függvények közti különbségre
Ez a Pascal nyelvű eljárás (origox,origoy) középpontú, r sugarú kör rajzolására lesz alkalmas:
PROCEDURE rajzolKor(origox, origoy : Int; r : Real);
Ez a Pascal függvény pedig képes lesz kiszámolni egy r sugarú kör kerületét, majd a hívó programnak visszaadni:
FUNCTION szamolKorKerulet(r : Real) : Real;
Például kirajzolhatunk egy 50 képpont átméréjű kört a (100,100)-as pontba, majd kiírathatjuk ugyanennek a körnek a kerületét:
... rajzolKor(100,100,50); WriteLn(szamolKorKerulet(50)); ...
Ugyanez a különbség C-ben a void visszatérési típusnév használatával érhető el:
void RajzolKor(int x, int y, double r); double SzamolKorKerulet(double r); ... int x = 100; int y = 100; double r = 50; RajzolKor(x, y, r); std::cout << SzamolKorKerulet(r) << std::endl;