Funkcie sú podobné podprogramy ako procedúry, len s tým rozdielom, že funkcia po vykonaní tela nadobudne hodnotu, ktorej typ je definovaný v hlavičke funkcie. V tele funkcie sa musí nachádzať aspoň jeden príkaz priradenia, na ktorého ľavej strane sa nachádza meno funkcie a na pravej strane je hodnota, ktorú funkcia nadobudne po jej skončení. Táto hodnota sa nasledovne môže použiť v hlavnom programe.
Príklad:
Namiesto procedúry "scitaj" vytvoríme funkciu "scitaj", ktorá vykoná ten istý úkon. Teraz však netreba globálnu premennú "vysledok", ale stačí premenná "vysledok" ako lokálna premenná pre danú funkciu.
..........
FUNCTION scitaj(cislo1,cislo2:longint):longint;
VAR vysledok:longint;
BEGIN
vysledok:=cislo1+cislo2;
scitaj:=vysledok;
END;
.........
writeln(´vysledok je :´,scitaj(10,20));{vypíše výsledok 30 na obrazovku}
....
26 B – najde vsetky parne a pocet neparnych cisel v postupnosti cisel ukoncenych 0
program parneaneparne;
uses crt;
var cislo,i,j,pocetneparnych:byte;
parne:array[1..100] of byte;
begin
clrscr;
i:=0;
pocetneparnych:=0;
repeat
read(cislo);
if (cislo mod 2=0) then
begin
inc(i);
parne[i]:=cislo;
end
else
begin
inc(pocetneparnych);
end;
until cislo=0;
writeln;
j:=1;
writeln('Vsetky parne cisla v postupnosti su: ');
repeat
write(parne[j],',');
inc(j);
until j>i;
writeln;
writeln('Pocet vsetkych neparnych cisel je: ',pocetneparnych);
readln;
end.