5. Techniky programování – třídicí algoritmy, rekurze, dynamické datové struktury

  1. Procedury a funkce – Deklarace, parametry volané hodnotou a odkazem, rozdíl mezi procedurou a funkcí

Procedury a funkce se nazývají podprogramy
Při opakování použití kódu v programu
Využívají se např. když spolupracuje více programátorů na jednom projektu
Pokud používáme proceduární programovací jazyk

Co je procedura?

Procedura je funkce bez návratové hodnoty. Proč ještě procedury? Proč nestačí jen funkce? Procedura slouží k tomu, abysme mohli jedním příkazem vykonat celý blok příkazů uzavřených v proceduře. Procedura se deklaruje skoro stejně jako funkce, ale nemá návratovou hodnotu a místo klíčového slova function se používá slovo procedure. Procedury se hodně používají pro obsluhy událostí komponent. Příklad jedné procedury najdete v následující tabulce.

Co je to funkce?

Funkce je blok příkazů uzavřených mezi begin a end; + proměnné. Funkce může mí jeden, ale i několik argumentů a její tělo deklarujeme v sekci implementation. Delkarace funkce vypadá takto.

Deklarace procedury

PROCEDURE název(seznam formálních parametrů(proměnných);

VOLÁNÍ PROCEDURY – je samostatným příkazem

Název(seznam skutečných parametrů);

Deklarace funkce

FUNCTION název(seznam formálních parametrů:datový typ;

VOLÁNÍ FUNKCE – není samostatným příkazem, musíme použít v rámci jiného příkazu

Název(seznam skutečných proměných);

Funkce vrací jedinou hodnotu, kterou má v názvu. Typ se vztahuje k názvu.

Rozdíl mezi procedurou a funkcí

VE VOLÁNÍ
Procedura – Samostatný příkaz

Funkce – Není samostatný příkaz, musíme použít v rámci jiného příkazu

Název(seznam skutečných parametrů)

FUNKCE VRACÍ JEDINOU HODNOTU, KTERÁ JE ULOŽENA V NÁZVU FUNKCE
VOLÁNÍ HODNOTOU

Hodnota se zkopíruje do paměťového místa, které je zadáno formální proměnou (x)
Zejména pro řešení vstupů
Jsou vypsané proměnné bez „var“ PŘ) procedure BLA(x:real);

VOLÁNÍ ODKAZEM

Není další paměťové místo
Používá se pro výstup proměnných
Proměnná změní svůj název
Nedochází ke kopírování, zůstává stejné paměťové místo
Je psaná s „var“ procedure BLABLA(var x:real)