Arrays paraméterek
Az alprogramok paraméterei nemcsak egyszerű, hanem összetett típusok, például tömbök, rekordok, készletek változóinak is lehetnek. Illusztrációként vegye figyelembe a tömböket.
A feladat. Két tömb van, két szám mindegyik. Adja meg az egyes tömbök elemeinek összegét. Használja az összeg függvényt, amelynek egyetlen paramétere az összegző tömb neve.
TYPE vektor = az Integer [1..2] tömbje;
FUNKCIÓ összege (c: vektor): Integer;
WriteLn (összeg (a), '', összeg (b));
A függvény összegének (a) kiszámításának kezdete. A Pascal helyettesíti az a tömb elemeinek értékét a cellákban a c tömb elemei számára. A (b) függvényösszeg számításából kiindulva. A Pascal helyettesíti a b tömb elemeinek értékeit a cellákban a c tömbelem elemei számára.
A funkció címében hibás lenne írni
függvény összege (c: tömb [1..2] egész szám): Integer.
Először meg kellett határozni a tömb típusát a TYPE szakaszban. majd ezt a definíciót használjuk a és b leírásában. és a funkció fejlécében. Ez a Pascal szintaxisának követelménye.
Paraméter-értékek és paraméterek-változók
Sok eljárás nem csak rajzol vagy hangzik, hanem a funkciókhoz hasonlóan kiszámít valamit hasznosnak. Például a következő program B művelete növeli az x globális változót az y paraméter értékével.
B) PROCEDURE (y: Integer);
A 1001-es szám nyomtatódik.
A projektmenedzserek azonban nem szeretik a szubrutinok globális változóinak nevét. Függetlenül attól, hogy ez nem elég - a fejre gondolni fogunk, hogy megváltoztassuk a változó nevét, és mi az akkor - újraírni az összes szubrutinokat? Ezért az úgynevezett változó paraméterekkel jöttek létre. Itt van ugyanaz a program a használatukkal:
B eljárás (y: Integer; var c: Integer);
Itt y egy jól ismert paraméter. Ezt paraméter-értéknek hívják. A szubrutin végrehajtásának kezdetén az értékparaméter egy helyre kerül a veremre, és ott a megfelelő tényleges paraméter (1) értéke kerül elküldésre.
Kérdés: Van értelme írni B (1, 1000). Válasz: Nem, mert az alprogram nem tudja, melyik változó adja az eredményt 1001-re. Természetesen a Pascal hibaüzenetet fog adni.
Feladatok a "Eljárások és funkciók" témakörben
Mi az eljárás? Mi a funkció? Mi a különbség?
Soroljon be néhány szabványos funkciót és eljárást.