Alprogram

A Programozás Wiki wikiből

Bevezető[szerkesztés]

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.


Az alprogram fő részei[szerkesztés]

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.


Az alprogram tartalmi komponensei[szerkesztés]

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.

Az alprogramok fajtái[szerkesztés]

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.

Alprogram példák[szerkesztés]

A feladat egy tetszőleges változó első bájtjának kiíratása.

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.

Kapcsolódó témakörök[szerkesztés]