Procedúry a funkcie

Pod procedúrami rozumieme skupiny príkazov, ktoré si na začiatku programu zadefinujeme a pascal ich odvtedy pozná a v hlavnom programe tieto
programy môžne zavolať jediným príkazom - menom procedúry. Sú ta vlastne také programy v programe.


Šablóna:

Procedure Meno (parametre);
begin
prikaz1;
prikaz2;
...

end;

program MojProgram;

var Premenna1,Premenna2: Integer;

procedure PisMeno (Meno : string);
begin

    writeln('Ahoj, volas sa ',Meno);

end;

{Začiatok hlavného programu. Procedúry aj funkcie sa deklarujú pred hlavným beginom, čo presne vystihuje ich účel. Pri spustení programu
sa začnú vykonávať príkazy práve od hlavného beginu v programe. Procedúra je niečo, čo nechceme, aby sa vykonalo automaticky, len sme programu
také niečo zadeklarovali a a použijeme to v budúcnosti}

begin

    PisMeno('Marek Zeman');

end.

Tento program vypíše na obrazovku hlášku Ahoj, volas sa arek Zeman, presne ako keby boli príkazy definované v procedúre napísané priamo v programe.
Parameter je hodnota, ktorú dostane procedúra ako vstup a môže s ním narábať, ako keby existovala premenná rovnakého mena. Procedúra môže mať jeden, viac
parametrov, alebo sa im niekedy hovorí aj argumenty, ale nemusí mať ani žiadne.

Procedure Ukonci;
begin

    writeln('Program dostal zly vstup a nemoze dalej pokracovat. Preto teraz skonci svoj beh.');
    halt;

end;

Toto je príklad na procedúru bez parametra.

Funkcia je veľmi podobná ako procedúra, líši sa tým, že vracia nejakú návratovú hodnotu, presne ako matematické funkcie, ktoré vracajú číslo.

Šablóna

function MojaFunkcia (parametre): TypVystupnejHodnoty;
begin

    prikazy...

    MojaFunkcia:=VystupnaHodnota;

end;

Príklad:

function Dvojnasobok(a:integer):integer;
begin

    Dvojnasobok:=a*2;

end;

Výstupná hodnota je to, čo chceme, aby funkcia vracala - môže to byť hocijaký typ, aký môže mať premenná. S výstupnou hodnotou sa pracuje tak, že sa
vytvorí niečo ako premenná, ktorá má rovnaké meno ako je názov funkcie. Keď sa vykoná posledný príkaz funkcie, tak návratová hodnota bude presne to, čo
sme uložili do tejto premennej. Pozor ale, nie je to klasická premenná, nemôžme s ňou robiť všetko to, čo s normálnou premennou.

Keď sme si zadefinavali takúto funkciu, teraz môžeme do hlavného programu napísať príkaz

writeln(Dvojnasobok(5));

a dostaneme výsledok 10, to je hodnota, ktorú nám vrátila funkcia (v hlavnom programe sa na funkciu vlastne pozaráme ako na hodnotu, ktorú vracia a tak
s ňou pracujeme.)
Môžeme kľudne napísať aj takéto:

a:= b + dvojnasobok (c);

Dvojnasobok(c) bude nejaká hodnota, ktorú nám vráti funkcia zavolaná s parametrom c.