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ť.