5.       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)