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é.