next up previous contents
Next: Parametry versus lokální proměnné Up: Podprogramy Previous: Globální proměnné v podprogramech   Obsah

Špatné používání parametrů v podprogramech

V Pascalu (a dá se říci, že ve většině vyšších programovacích jazyků) se v podprogramech používají dva typy předávání parametrů. Prvnímu typu se říká předávání hodnotou. Hlavička procedury s tímto typem parametru vypadá takto:
procedure necoUdelej(parametr: integer);
Parametr předávaný hodnotou se při zavolání zkopíruje na zásobník vyhrazený podprogramu. S hodnotou tohoto parametru můžeme v podprogramu dělat cokoliv, aniž by se to projevilo vně podprogramu. Z toho vyplývá, že při volání podprogramu můžeme jako parametr použít i konstanty.

Pozor ovšem při používání ukazatelů! Potom se sice nedá změnit hodnota ukazatele, ale dá se změnit paměť na kterou tento ukazatel ukazuje.

Druhým typem předávání parametrů je předávání odkazem. Hlavička procedury s tímto typem parametru vypadá takto:

procedure necoUdelej(var parametr: integer);
Na zásobník podprogramu se tentokrát nekopíruje hodnota parametru, ale odkaz na něj. Cokoliv v podprogramu uděláme s tímto parametrem, se projeví i vně podprogramu. Proto se tento typ parametru používá, pokud potřebujeme vracet výsledky z podprogramu. Z toho vyplývá, že v tomto případě můžeme při volání použít jako parametr výhradně proměnné (do konstanty by nešlo zapisovat).

Jméno parametru platí (je viditelné) jenom v rámci svého podprogramu. Proto můžeme mít více podprogramů se stejně pojmenovanými parametry. Totéž platí i pro lokální proměnné.


next up previous contents
Next: Parametry versus lokální proměnné Up: Podprogramy Previous: Globální proměnné v podprogramech   Obsah
David Martinek 2002-10-01