Procedury a funkce Základní charakteristika a použití v programu
Základní charakteristika procedury a funkce tvoří posloupnost instrukcí, které potřebujeme v programu na různých místech zopakovat a jsou to ve své podstatě podprogramy, logické uzavřené programové celky jazyk Pascal umí tyto celky pojmenovat a pak toto jméno využívat k volání těchto celků tam, kde jsou požadovány jakožto výpočetní proces zvyšují také přehlednost programu a usnadňují ladění programu snad jediný rozdíl mezi procedurou a funkcí je ten, že funkce vrací hodnotu, kdežto procedura nikoli
Základní požadavky a definování prvků procedury = procedure funkce = function následuje identifikátor procedury či funkce, za nímž se uvádí seznam formálních parametrů f. parametry musí být stejného datového typu jako skutečné parametry, se kterými se daná procedura či funkce volá mohou se definovat interní datové typy, proměnné, procedury i funkce tyto nadefinované prvky však mají pouze lokální charakter, mohou se tedy použít pouze v dané proceduře nebo funkci v těle procedury a funkce se mohou použít tyto nadefinované prvky stejně jako i prvky, které mají globální charakter = globální proměnné (byly nadefinovány v hlavním programu)
Základní struktura procedury procedure (parametry); label ; const ; type ; var : ; begin ; end;
Základní struktura funkce function (parametry) : datový typ label ; const ; type ; var : <deklarace procedur a funkcí>; begin ; end; Funkce mají obdobnou strukturu jako procedury, ale začínají hlavičkou funkce a končí označením datového typu, který funkce vrací. Důležité pro funkci je to, že v těle funkce se musí objevit příkaz přiřazení, který identifikátoru funkce přiřadí hodnotu.
Modelový příklad napište funkci a proceduru pro výpočet n-té mocniny čísla
Řešení pro funkci function MOCNINA (X:real;n:integer):real; var i:integer; vysledek:real; begin if n=0 then MOCNINA:=1 else begin vysledek:=X; for i:=1to n-1 do vysledek:=vysledek*X; MOCNINA:=vysledek; end; formální parametry lokální proměnné hodnotaidentifikátor funkce
Řešení pro proceduru procedure MOCNINA_2 (X:real; n:integer; var vysledek:real); var i:integer; begin if n=0 then vysledek:=1 else begin vysledek:=X; for i:=1 to n-1 do vysledek:=vysledek*X; end; volání proměnné odkazem formální parametry lokální proměnné
Hlavní část programu – volání funkce program umocnovani; var v,x:real; n:integer; begin write('Zadej číslo: '); readln(x); write('Zadej exponent: '); readln(n); writeln(); write('výsledek je: ', MOCNINA(x,n)); writeln(); volání funkce – vrací hodnotu
Hlavní část programu – volání procedury write('Zadej číslo: '); readln(x); write('Zadej exponent: '); readln(n); writeln(); MOCNINA_2(x,n,v); write('výsledek je: ',v); writeln; end. volání procedury