6. Procedúry a funkcie

Procedúra je deklarovaný podprogram, ktorý možno volať z príkazovej časti programu pomocou jeho názvu.

Deklarácia procedúry:

procedure MenoProcedury; { hlavicka procedury }
begin { príkazová časť }
prikaz1;
prikaz2;
...
prikazn
end;

Procedúry bez lokálnych objektov a bez parametrov

používajú spoločné (globálne) premenné alebo iné objekty.

Príklad 1: Rozdelenie programu na výpočet priemeru dvoch čísel do procedúr.

program ZLOZENY;
uses crt;
var A,B,C: real;

{----- Deklaracia procedur -----}

procedure VSTUP;
begin
writeln(’Zadaj 2 čísla’);
readln(A);
readln(B);
end;

procedure PRIEMER;
begin
C:=(A+B)/2;
end;

procedure VYSTUP;
begin
writeln(’Priemer je: ’,C:0:2);
readln;
end;

{----- Prikazova cast programu -----}

begin
clrscr;
VSTUP;
PRIEMER;
VYSTUP;

end.

Procedúry s lokálnymi objektami a bez parametrov

Premenné definované v procedúrach zaberajú pamäť len počas činnosti procedúry.

Príklad 2: Výmena dvoch čísel.

program PouzitieVymeny;
uses CRT;
var A,B: integer;

{----- Deklaracia procedury -----}

procedure VYMENA;
var POM: integer;
begin
POM:=A; A:=B; B:=POM;
end;

{----- Prikazova cast programu -----}

begin
clrscr;
writeln('Vymena dvoch cisel.');
writeln('Zadaj 2 cele cisla:');
readln(A);
readln(B);
VYMENA;
writeln('Vymenene cisla su: ',A,' , ',B);
readln;
end.

Funkcie

Funkcia je podprogram, ktorý prenáša hodnoty cez premenné v zátvorke a sám vráti hodnotu. Deklaruje sa slovom function. Hodnotu funkcii priradíme spôsobmi:

  1. Pridadíme ju premennej Result. Netreba ju deklarovať, ak je vo FreePascale zapnutá kompatibilita s Delphi v menu: Options - Compiler.
  2. Hodnotu priradíme premennej s rovnakým názvom ako má fukcia.

Príklad 3: Program na výpočet mocniny 10^2.

program mocniny;

{----- Dekláracia funkcie -----}

function mocnina (zaklad, exponent: integer): integer;
var c, vysledok: integer;
begin
vysledok := 1;
for c := 1 to exponent do
vysledok := vysledok * zaklad;
mocnina := vysledok;
end;

{----- Samotný program -----}

begin
writeln(mocnina(10,2));
readln;
end.

..................

Príklad 4: Program na výpočet mocniny X^Y.

program mocniny;
uses Crt;
var X,Y: integer;

{----- Dekláracia funkcie -----}

function mocnina (zaklad, exponent: integer): integer;
var c, vysledok: integer;
begin
vysledok := 1;
for c := 1 to exponent do
vysledok := vysledok * zaklad;
mocnina := vysledok;
end;

Príklad 5: Program na výpočet faktoriálu X!.

Algoritmus: Faktoriál je súčin celých čísel 1 * 2 * ... X. V programe možno použiť cyklus s pevným počtom opakovaní:

Y:=1;
For i:=1 To X Do Y:=Y*i;