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;