A Pascal nyelv

Alprogramok

Alprogramok

A Pascal nyelv megkülönbözteti az eljárásokat és a függvényeket (ellentétben pl. a C-vel, ahol az eljárás egy olyan függvény, melynek nincs visszatérési értéke /void/).

Eljárás definiálása:

Függvény definiálása:

Az eljárás vagy függvény törzsét közvetlenül a fej után kell írnunk egy begin…end blokkba.

Két kivétel van, eljárást és függvényt a törzs megadása nélkül két esetben definiálhatunk:

A továbbiak illusztrálásához tekintsük az alábbi példaprogramot (a kapcsos zárójelpárban lévő számok megjegyzések a program szövegében):

procedure Csere (var a,b:integer); forward; {3} function Legkisebb (var elemek {2}; elemszam:integer); type tomb = array [1..30000] of integer; var a : integer; t : ^tomb; begin t:=addr(elemek); {4} for a:=1 to elemszam-1 do begin c:=a; for b:=a+1 to elemszam do if t[b]<t[c] then c:=b; Csere(tomb(elemek)[a] {5},tomb(elemek)[c] {5}); end; Legkisebb:=integer(elemek); {1} end; procedure Csere (var a,b:integer {2}); var c : integer; begin c:=a; a:=b; b:=c; end;

A fenti program egy tetszőleges elemszámú és indextartományú integer tömböt rendez beszúrásos rendezéssel, majd visszaadja legkisebb elemét.

Alprogramokban definiálhatunk konstansokat, típusokat, deklarálhatunk változókat. érdekesség, hogy Pascalban lehetőség van alprogrammok egymásba ágyazására, bár ez egy elég ritkán alkalmazott technika.

Az alprogramok lokális változóikat és paramétereiket a veremben (stack szegmens) helyezik el (szemben a globális változókkal, melyek az adatszegmensre kerülnek), így ez meghatározza az általuk igényelhető memória összméretét (erre rekurzív programok írásánál nem árt figyelni).