Alprogram
A Programozás Wiki wikiből
Tartalomjegyzék |
[szerkesztés] Bevezető
A szoftverfejlesztésben alprogramnak nevezünk egy függvényt, eljárást, vagy műveletet. Tágabb értelemben szinte bármilyen körülhatárolható programrészt hívhatunk alprogramnak: egy blokkot, modul, de akár egy elágazás egy ágát is.
A fogalom a strukturált és moduláris programozás térnyerésekor alakult ki, az objektumorientált fejlesztés szóhasználatában már kissé elhalványulni látszik.
Érdekességként meg lehet említeni, hogy a Fortranban jelent meg elsőként, az összes eljárásorientált nyelv karakterisztikus egysége. Az újrafelhasználhatóság és a procedurális absztrakció eszköze.
- Újrafelhasználhatóság
Ha a program különböző részein ugyanaz az utasítássorozat fordul elő, akkor ki lehet emelni. A kiemelés helyéről hivatkozva rá lehet azt aktivizálni.
- Procedurális absztrakció
Lehetőség van a kiemelt szövegrész paraméterezésére, így nem csak egy tevékenység, hanem egy tevékenységcsoport végrehajtására képes.
Egy bemeneti adatcsoportból produkál kimeneti adatcsoportot, jól definiált specifikáció alapján. Nem tartalmazza a transzformációt - az implementáció ismeretlen - . A hívás helyén a specifikáció a lényeges, lehet hívni úgy is, hogy nem tudjuk mit csinál.
[szerkesztés] Az alprogram fő részei
Formálisan három jól elkülöníthető részből áll.
- Fej - A specifikációt tartalmazza.
- Törzs - Tetszőleges utasítások, tetszőleges számban és sorrendben. Természetesen figyelni kell az adott nyelv szintaktikai és szemantikai szabályira, bár utóbbit általában nehezebb felderíteni.
- Vég - A fej és a vég általában külön alapszóval van megadva.
[szerkesztés] Az alprogram tartalmi komponensei
Az alprogramnak tartalmilag négy komponense van.
- 1, Név - Ez egy azonosító, ezért az alprogramot is deklarálni kell.
- 2, Formális paraméterek - Vagy más néven formális paraméterlista. A procedurális absztrakciót teszi lehetővé. Az alprogramok egy problémaosztályt oldanak meg. A probléma akkor konkretizálható, amikor az alprogramot az aktuális paraméterek megadásával meghíjuk. A fejben található, általában kerek zárójelek között. A nyelvek egy része azt mondja, hogy nem kell zárójel, ha az alprogramnak nincs formális paramétere (Pascal), más része szerint pedig a zárójel nem a paraméterekhez, hanem az alprogramhoz tartozik, tehát paraméterek nélkül is ki kell tenni (C). Nyelvfüggő, hogy a paraméterek mivel vannak elválasztva. A paraméterlistán szereplő nevek a törzsben különféle objektumok lehetnek:
- változók,
- konstansok, nevesített konstansok,
- állomány nevek,
- más alprogramok azonosítói.
A korábbi nyelvekben a listán csak a paraméterek azonosítói szerepeltek, később a név mellett megjelent típusmegjelölés, de lehetnek plusz információk is, amelyek a formális paraméterek futás közbeni viselkedését szabályozzák. Számuk bármennyi lehet, a nulla paraméterrel rendelkező alprogramot paraméter nélküli alprogramnak is hívjuk. A törzsben deklarált objektumok és formális paraméterek az alprogram lokális objektumai.
- 3, A törzs - Az implementációt tartalmazza. Felépítése: [deklarációs utasítások] végrehajtó utasítások.
- 4, A környezet - A globális változók együttese.
[szerkesztés] Az alprogramok fajtái
Két fajta alprogram létezik, az eljárás és a függvény. A nyelvek általában külön alapszóval jelzik, hogy melyikről van szó. A függvényt majdnem minden nyelvben a function szóval vezetik be, míg az eljárást a procedure (Pascal) szóval.
[szerkesztés] Alprogram példák
A feladat egy tetszőleges változó első bájtjának kiíratása.
- Pascal nyelven.
Program Elso_Byte; Uses Crt; Var szoveg:String; {eljárás létrehozása} Procedure ProcFByte(Var variable_here); Var elso:Byte Absolute variable_here; Begin Write(elso); End; {függvény létrehozása} Function FuncFByte(Var variable_here):Byte; Var e:Byte Absolute variable_here; Begin FuncFByte:=e; End; Begin szoveg:='Almafa'; Write('ProcFByte hivasa: '); ProcFByte(szoveg);{eljárás hívása} WriteLn; Write('FuncFByte hivasa: ', FuncFByte(szoveg)); {függvény hívása} End.