„Függvény (programozás)” változatai közötti eltérés
[ellenőrzött változat] | [ellenőrzött változat] |
Tartalom törölve Tartalom hozzáadva
Nincs szerkesztési összefoglaló |
Nincs szerkesztési összefoglaló |
||
3. sor:
== A szubrutin ==
Ha egy adott műveletsorra egy programban több helyen is szükség van, az elemi megoldás az, hogy az adott kódrészletet mindenhol elhelyezzük, beillesztve a környezetébe. Ha újabb helyen merül fel rá igény, akkor a kódrészletet átmásoljuk a következő helyre is és így tovább. Ez terjengős és nehezen elemezhető forráskódot eredményezne, valamint nagyon sok fölösleges munkát. Ezért minden magas szintű programnyelv tartalmaz olyan utasítást, amelyet oda kell elhelyezni, ahol az adott kódrészletnek szerepelnie kellene, maga a kódrészlet (''rutin'') pedig a programban tetszőleges, külön helyen lehet. A rutint helyettesítő utasítás végrehajtásakor a számítógép odaugrik a rutin kezdőpontjára, végrehajtja a benne levő utasításokat, majd amikor egy utasítás jelzi, hogy ez a rutin véget ért, automatikusan visszatér az előző helyre, és onnan folytatódik a program végrehajtása, ahonnan a külön rutinra való átirányítás volt. A rutint elindító utasítás szakkifejezéssel ''meghívta'' a külön programrészletet, amelyet, mivel logikailag alárendelt része lett az egész programnak, valójában a ''szubrutin'' (al-rutin) névvel illetnek. A módszer előnye az, hogy ha egy másik helyen van szükség ugyanerre a szubrutinra, oda is csak a meghívó utasítás kerül, és amikor a szubrutin véget ért, a program automatikusan onnan folytatódik, ahonnan ''most'' a szubrutint meghívták. Tehát a visszatérés mindig az éppen aktuális meghívás helyére történik. Ebből eredően a szubrutin tetszőleges helyről tetszőleges alkalommal használatba vehető, és a kódját csak egyszer kellett megírni. (A szubrutin kódja egyenértékű a többi kóddal, ezért a szubrutinból is meghívhatók újabb szubrutinok is.) Ha pedig a szubrutinban levő műveletsoron változtatni kellett, így egyetlen helyen is elég volt a változást elvégezni.
Ez a megoldás annyira alapvetővé vált a számítógépes programokban, hogy a legalacsonyabb szinten, magában a [[gépi kód]]ban is megvan a hívó és
A szubrutin egy viszonylag rugalmas eszköz, olyannyira, hogy a visszatérési utasításnak nem is kötelező a szubrutin utolsó sorában lennie, sőt a szubrutinban több helyen is szerepelhet.
21. sor:
== A függvény és az eljárás különbsége ==
Az eljárás a végrehajtása során keletkező új adatokat a program egy közös tárhelyen helyezi el, amelyeket a program többi része az egyéb esetekben szokásos módon használ fel. A programokban kényelmesebb nem minden egyes elemi lépésre önálló utasítást adni, hanem ezekből néhányat egyszerűsítve összevonni is lehet, a programnyelvek ehhez különböző mértékű és fajtájú segítséget adnak. Az összevonások egyik fő fajtája a ''kifejezések'' használata. Ha például egy adott számot meg akarunk szorozni 2-vel, majd hozzáadni 3-at, a két lépés egyben írható le az X×2+3 alakkal. Ez már egy kifejezés, amelynek van egy végső értéke, eredménye. Ha a 2 helyén egy olyan
A matematikai függvények elvi jellegzetessége az, hogy a számítási képlet – amelynek a programban a számítást elvégző programrész felel meg – értéke egy vagy több megadott ''függvényváltozó'' értékétől függ. A programokban is megengedett ez; ha a területszámításhoz meg kell adni a téglalap A és B oldalait, akkor az eljárást elindító utasítás nézhet ki így:
33. sor:
Hangsúlyozzuk, hogy a szubrutin, eljárás és függvény közötti technikai különbségtétel kizárólag kényelmi célokat szolgál, a programozó munkájának megkönnyítésére alakultak ki, mivel valójában minden program megírható ezek használata nélkül is.
Több nyelvben, mint például a [[Pascal programozási nyelv|Pascal]], a modern [[BASIC]], a [[FORTRAN]] és az [[Ada programozási nyelv|Ada]] különbséget tesznek a függvények és az eljárások között. Más nyelvekben, mint a [[C_(programozási_nyelv)|C]] és a [[LISP]], nincs meg ez a különbségtétel és ezeket a fogalmakat szinonimaként használják, itt a függvény kódjában (például a VOID kódszóval) jelzik, ha a függvény nem ad vissza értéket, csak eljárás szerepében kerül használatba.
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, utalva a szubrutinok formailag is láthatóvá tett lezárására.
* csökkenthető a kódismétlődés <!-- (e.g., by replicating useful functionality, such as [[function (mathematics)|mathematical functions]]) -->
48. sor:
* elrejthetők és szabályozhatók a program egyes részei<!-- hiding or regulating part of the program (see [[Information hiding]]) -->
* a kód törzse, amely a híváskor végrehajtódik<!-- a body of code to be executed when the subroutine is called -->
* paraméterek, melyeket a függvény híváskor megkap<!-- parameters that are passed to the subroutine from the point where it is called -->
* visszatérési érték, amely a hívás helyére adódik vissza<!-- a value that is returned to the point where the call occurs -->
== Példa az eljárások és a függvények közti különbségre ==
96 ⟶ 89 sor:
std::cout << SzamolKorKerulet(r) << std::endl;
</source>
{{DEFAULTSORT:Fu~ggveny}}
|