A Modula2 programozási nyelv

Alprogramok

Alprogramok

Szintaxis

Az alprogram fejléce az azonosítót és a formális paraméterek listáját adja meg, a törzs lokális változódeklarációkat és utasítások sorozatát tartalmazza. A törzs végét lezáró utasításban meg kell ismételni az alprogram azonosítóját. Az alprogram lehet eljárás, vagy eredményt is visszaadó függvény. Érdekesség, hogy mindkettôt ugyanaz a kulccszó jelzi. Szintaxis:

PROCEDURE Eljaras(Parameterek)
BEGIN
  ...
END Eljaras
vagy
PROCEDURE Fuggveny(Parameterek): EredmenyTipus
BEGIN
  ...
END Fuggveny
 

Paraméterátadás

 A formális paraméterek azonosítók, amelyekkel az alprogram a kapott adatokra hivatkozni fog. Az érték szerint átadott paraméter valójában lokális változó, amely kezdôértékét az aktuális paraméter - mint kifejezés - értékébôl kapja. A változó paraméter cím szerinti átadást jelöl. Ekkor az aktuális paraméternek változónak vagy rekord mezejének kell lennie és minden hivatkozás a formális paraméterre ezt a változót vagy mezôt fogja használni. A lokális változók értéke meghatározatlan az alprogramba való belépéskor, explicit inicializálni kell ezeket.

 A formális paraméterek felsorolhatók egyenként vagy - ha az egymás utániak típusa megegyezik - csoportosítva is. A cím szerinti átadást külön jelezni kell, az alapértelmezést, az érték szerintit nem. Szintaxis:

Parameter1, ..., ParameterN: KozosTipus
vagy
Parameter1: Tipus1; ...; ParameterN: TipusN;
vagy
VAR ValtozoParameter: Tipus

 Tömb típusú formális paraméter esetén lehagyhatók az indexhatárok

Parameter: ARRAY OF BazisTipus

 formában. Ekkor az N elemû aktuális tömb indexhatára a [0, N-1] intervallumba képezôdik le és a formális tömb csak elemenként indexelve érhetô el vagy szintén indextartomány nélküli tömb paraméterû alprogramnak adható át.

 Az alprogram hívásában az aktuális paramétereket ugyanabban a sorrendben és ugyanolyan típussal kell megadni, mint ahogy a formális paraméterek állnak az alprogram fejlécében. A típuskompatibilitás alóli kivétel a típus nélküli paraméter, amelyet a

Parameter: ARRAY OF WORD

 formában kell definiálni. Ez minden típussal kompatibilis. A függvény visszatérési értéke csakis egyszerû típus lehet.
 

Láthatóság, egymásbaágyazás

 Az alprogram törzs elején deklarált konstansok, változók, típusok, modulok és alprogramok lokálisak az alprogramra nézve: kívülrôl nem láthatók. Az alprogramban látható az összes formális paraméter és lokálisan deklarált azonosító, valamint az alprogramot magába ágyazó alprogramok azon lokális azonosítói es azon globális azonosítók, amelyeket nem fed el egy ugyanolyan lokális azonosító.

 Mivel alprogramok is deklarálhatók a törzs elején, az alprogramok tetszôleges mélységben egymásba ágyazhatók.