9. Funkcije i procedure /FUNCTION & PROCEDURE/

Redoslijedi izvođenja, postupak:

  1. Poziv procedure Prvi;
  2. Izođenje procedure Prvi; Ispis na ekranu: Limun
  3. Poziv procedure Drugi;
  4. Izođenje procedure Drugi; Ispis na ekranu: Kivi
  5. Poziv procedure Prvi;
  6. Izođenje procedure Prvi; Ispis na ekranu: Limun
  7. Kraj.

Područja definisanosti varijabli

Globalna varijabla

a - globalna varijabla

Lokalna varijabla

a - globalna varijabla

x - lokalna varijabla

Prenosivi parametri

Napisati program sa procedurom za ispis vrijednosti brojeva a i b, pridružuje novu vrijednosti u potprogramu a zatim ispisuje u glavnom programu novu vrijednost iz potprograma. Vrijednosti a i b se učitvaju u programu. Procedura na ulazu ima definisane varijable a i b u zaglavlju. Vrijednosti a i b se mijenju u proceduri a zatim se ispisuju u glavnom programu. Vrijednosti a i b se učitvaju u programu. Procedura na ulazu ima definisane varijable x i y u zaglavlju procedura sa VAR. Vrijednosti x i y se mijenju u proceduri i imaju novu vrijednost pri izlazu iz glavnog programa. Ulaz je a:=2; b:= 5; a potprogramu x se množi sa 2 a y umanjuje za 2.
PROGRAM p09111004;
{pro04 Ulazna varijable}
VAR
 a, b :Integer;
PROCEDURE Vrijednost;
BEGIN
  Writeln('Potprogram ulaza');
  Writeln('a ', a, '   b ',b);
  a:=5; 
  b:= 6;
  Writeln('Potprogram poslije promjene');
  Writeln('a ', a, '   b ',b);
END; {kraj PROCEDURE}

BEGIN       {MAIN}
  a:=1; 
  b:= 3;
  Writeln('Program');
  Writeln('a ', a, '   b ',b);
  Vrijednost;
  Writeln('Poslije povratka iz potprograma');
  Writeln('a ', a, '   b ',b);
  READLN;
END.

Ispis na ekranu:

PROGRAM p09111016;
{Ulazna varijable definisanu u PROCEDURE HEADER-u}
VAR
 a, b :Integer;
PROCEDURE Vrijednost (x, y:Integer);
BEGIN
  Writeln('Potprogram ulaza');
  Writeln('x ', x, '   y ', y);
  x:= x + 1;
  y:= y + 1;
  Writeln('Potprogram poslije promjene');
  Writeln('x ', x, '   y ', y);
END; {kraj PROCEDURE}
 
BEGIN       {MAIN}
  a:=1; 
  b:= 3;
  Writeln('Program');
  Writeln('a ', a, '   b ',b);
  Vrijednost (a, b);
  Writeln('Poslije povratka iz potprograma');
  Writeln('a ', a, '   b ',b);
  READLN;
END.

Ispis na ekran II verzija
Program
a 1   b 3
Potprogram ulaza
x 1   y 3
Potprogram poslije promjene
x 2   y 4
Poslije povratka iz potprograma
a 1   b 3
PROGRAM p09111018;
{Ulazna varijable definisanu u PROCEDURE HEADER-u}
VAR
 a, b: Integer;
PROCEDURE Vrijednost (VAR x, y: Integer);
BEGIN
  Writeln('Potprogram ulaza');
  Writeln('x ', x, '   y ',y);
  x:= x * 2; 
  y:= y - 2; 
  Writeln('Potprogram poslije promjene');
  Writeln('x ', x, '   y ',y);
END;

BEGIN       {MAIN}
  a:= 2; 
  b:= 5;
  Writeln('Program');
  Writeln('a ', a, '   b ',b);
  Vrijednost (a, b);
  Writeln('Poslije povratka iz potprograma');
  Writeln('a ', a, '   b ',b);
  READLN;
END.

Ispis na ekranu:

  II primjer: Procedura izračunava sumu s i ispisuje izračunatu vrijednost. Vrijednosti a i b se učitvaju u programu. Procedura na ulazu ima definisane varijable a i b u zaglavlju sa VAR. Vrijednosti a i b se mijenja u proceduri i imaju novu vrijednost pri izlaz iz glavnof programa. Ulaz je a:=1; b:= 3; a potprogramu a se uvećava a b umanjuje za 1.
 
PROGRAM p09111026;
{pro08 Sabrati brojeve iz MAIN-a u proceduri}
VAR
 x, y :Integer;  { globalne varijable }
PROCEDURE Suma;
VAR
  s: Integer;   { lokalna varijabla }
BEGIN
  s := x + y;
  Writeln(x, ' + ', y, ' = ', s);
END; {kraj PROCEDURE}

BEGIN       {MAIN}
  Writeln('Sabrati dva ucitana broja');
  Write ('Dva broja = ');
  Readln(x, y);
  Suma;
  READLN;
END.

Ispis na ekranu:
Sabrati dva ucitana broja
Dva broja = 2 3
2 + 3 = 5
PROGRAM p09111018;
{Ulazna varijable definisanu u PROCEDURE HEADER-u}
VAR
 a, b: Integer;
PROCEDURE Vrijednost (VAR x, y: Integer);
BEGIN
  Writeln('Potprogram ulaza');
  Writeln('x ', x, '   y ',y);
  x:= x * 2; 
  y:= y - 2; 
  Writeln('Potprogram poslije promjene');
  Writeln('x ', x, '   y ',y);
END;

BEGIN       {MAIN}
  a:= 2; 
  b:= 5;
  Writeln('Program');
  Writeln('a ', a, '   b ',b);
  Vrijednost (a, b);
  Writeln('Poslije povratka iz potprograma');
  Writeln('a ', a, '   b ',b);
  READLN;
END.

Ispis na ekranu:

 

 

 

Index