Podprogramy
Posloupnost příkazů je možné pojmenovat a později toto jméno používat jako reprezentanta celé posloupnosti. Takto pojmenovanou posloupnost příkazů nazýváme podprogram. Pascal používá dva typy podprogramů: procedury a funkce.
Tělo podprogramů má podobnou strukturu jako tělo programu, pouze je uvozeno jiným klíčovým slovem. Ovšem také je v nich možné deklarovat konstanty a proměnné, definovat vlastní typy, případně psát vnitřní procedury a funkce. Tyto konstanty, datové typy a proměnné mají však pouze lokální charakter, neboť jsou k dispozici pouze uvnitř daného podprogramu.
Procedury
Procedury se vyznačují tím, že nevracejí žádnou hodnotu. Další rozdíl je, že volání procedury je ze syntaktického hlediska příkazem, kdežto volání funkce výrazem. Deklarace procedur se v programu uvádějí v deklarační části za úsekem deklarací proměnných.

Volání procedury
- V okamžiku zavolání procedury musí dojít k náhradě formálních parametrů skutečnými.
- V posloupnosti příkazů, která tvoří tělo procedury, se mohou používat všechny objekty existující v hlavním programu.
- Pomocí těchto objektů, které nazýváme globálními objekty, může procedura komunikovat se svým okolím.
- Současně je možné definovat a deklarovat objekty platné jen v rámci dané procedury.
- Tyto objekty nazýváme lokálními objekty.
Způsoby předávání parametru
- Navázání skutečného parametru na formální lze dosáhnout několika odlišnými způsoby. Ve většině dnešních programovacích jazyků se používají hlavně předávání parametrů hodnotou a odkazem
Parametry volané hodnotou
- Při předávání hodnotou (call-by-value) se těsně před zpracováním těla procedury skutečný parametr vyčíslí a výsledek se zkopíruje do lokální proměnné uvnitř volané funkce.
- Jakékoli změny parametru uvnitř volané procedury nemají vliv na volající proceduru, neboť se pracuje s lokální kopií, předávání hodnotou tedy lze používat pouze pro vstupní parametry.
- Parametry volané odkazem mají tvar: Identifikátor: datový typ;

Parametry volané odkazem
- Při předávání odkazem (call-by-reference) se formální parametr uvnitř volané procedury bere jen jako jiné označení (alias) pro proměnnou předanou jako skutečný parametr, tzn. ve volané proceduře se pracuje přímo s předávanou proměnnou, nevytváří se tedy kopie (což zvláště u strukturovaných proměnných znamená zpravidla úsporu času i paměti).
- Volaná procedura změnou parametru ovlivňuje i volající proceduru (takže předávání odkazem lze používat pro výstupní či vstupně-výstupní parametry), nevýhodou však je, že parametrem může být jen proměnná a nikoli výsledek obecného výrazu. Předávání odkazem se obvykle implementuje pomocí ukazatele na předávanou proměnnou.
- Parametry volané odkazem mají tvar: var Identifikátor: datový typ;
Vstupní a výstupní parametry
- Vstupní parametry procedur voláme hodnotou a výstupní odkazem.
- Je-li před formálním parametrem uvedené rezervované slovo var, jedná se o volání odkazem, není-li uvedeno slovo var, jedná se o volání hodnotou.
Funkce
Funkce je podprogram, který
na rozdíl od procedur poskytuje svým voláním přímo nějakou hodnotu. Tato
hodnota je dosažitelná z funkce přes její identifikátor. Tzn. že se
nevyužívá klíčového slova return
(jako v jiných jazycích), nýbrž se výsledek
uloží do proměnné, která má stejný název jako funkce.
Volání funkce
- Typ funkce nesmí být strukturovaný typ.
- Formální parametry mají stejný význam jako v případě procedur.
- V těle funkce se musí vyskytovat přiřazovací příkaz, kterým se přiřazuje hodnota jménu funkce a jehož provedením se definuje výsledná hodnota.
- Skutečné parametry a jejich náhrada za formální parametry se řídí stejnými pravidly jako pro procedury. Avšak zatímco volání procedury je příkaz, zápis funkce je výraz označující hodnotu, tudíž musí být sám použit v nějakém jiném příkazu.
