Procedúry a funkcie

Funkcie a procedúry vzhľadomna ich postavenie voči programu, ktorý ich používa môžeme nazvať i podprogramy. Podprogram je tvorený skupinou príkazov označených menom.

Funkcie a procedúry sa líšia spôsobom použitia. Kým procedúra realizuje čiastkový algoritmus a môže komunikovať so svojím okolím (volajúcou jednotkou) prostredníctvom vstupných a výstupných parametrov, funkcia naviac nadobúda hodnotu jednoduchého typu, ktorú odovzdáva prostredníctvom svojho identifikátora – používame jej volanie vo výrazoch príslušného typu.

Použitie procedúry alebo funkcie nazývame volaním. Predstavuje to vlastne skok na začiatok príslušného podprogramu.

 

Procedúry

Záhlavie procedúry určuje meno a formálne parametre (vstupné, výstupné, vstupno – výstupné), ktoré sú pri vykonávaní procedúry nahradené skutočnými hodnotami.

Telo tvorí deklaračná (deklaruje lokálne premenné) a operačná časť.

Procedúra bez parametrov

procedure pis;

begin

writeln; writeln; writeln

end;

volanie procedúry ......... pis

 

program rataj;

var i,j,k: integer; ................... i, j, k sú globálne premenné

...

...

procedure zmenijk;

var x: integer; .................... x je lokálna premenná

begin

i:=i+1;

j:=j+1; .................... i,j,k sú vstupné i výstupné nosiče informácií pre procedúru

x:=i+j;

k:=x

end;

volanie procedúry ......... zmenijk

 

Vzhľadom na možné vedľajšie účinky, je lepšie odovzdávať innformáciu do a z procedúry prostredníctvom parametrov.

 

 

Procedúra volaná hodnotou

- formálne parametre nahradzované hodnotou môžu slúžiť len ako vstupné parametre, teda len

na prenos údajov do procedúry

- zmeny vykonaní na parametroch po ukončení podprogramu strácajú platnosť

program volanie-hodnotou;

var x: integer;

procedure prva(i:integer); ............ i je formálny parameter ( vstupný)

begin

writeln(i);

i:=i+1;

writeln(i);

end;

begin

x:=5;

prva(x); ........ x je skutočný parameter............... vypíše 5,6

writeln(x) ........ zostane sa pôvodná hodnota ......... vypíše 5

end.

Pri volaní procedúry prva sa za i dosadila hodnoda x, x sa po vykonaní procedúry nemení.

 

Procedúra volaná odkazom

program volanie-odkazom;

var x: integer;

procedure prva( var i:integer); ............ i je formálny parameter (vstupno-výstupný)

begin

writeln(i);

i:=i+1;

writeln(i);

end;

begin

x:=5;

prva(x); ........ x je skutočný parameter............... vypíše 5,6

writeln(x) ........zmení sa pôvodná hodnota ........... vypíše 6

end.

Pri volaní procedúry prva sa za i dosadí hodnota x, x po vykonaní procedúry zmení hodnotu.

Jednotlivé typy parametrov je možné kombinovať.