U programskom jeziku Pascal potprograme realizujemo kao funkcije ili kao procedure. Funkcije i procedure definišu se (kažemo još: uvode se) u programu posle deklaracije promenljivih, a pre glavnog Begin-a tj. pre početka programa. Kada ih koristimo u programu kažemo da ih pozivamo.
Primer 1: Napisati program stepenovanje i funkciju stepen koja izračunava stepen celog broja a. Program ispisuje stepen unetog broja n. Ulazni podaci su n i m. Program Stepenovanje; var n , m, p : integer; function stepen (a, st :integer): integer; var an,i: integer; Begin an:=1; for i:=1 to n do an:=an*a; stepen:= an; End; BEGIN {program pocinje od ovog reda} readln (n,m); p:= stepen (n,m); {poziv funkcije iz glavnog programa} writeln ('stepenovan broj je', p); END. Napisati program pravougaonik koji korišćenjem funkcija obim i pov (napisati i te funkcije) izračunava obim i površinu pravougaonika zadatog preko svojih stranica a i b. Program Pravougaonik; var a,b,O,P : real; function Obim (a,b:real):real; Begin Obim:=2*a+2*b; End; function Pov (a,b:real): real; Begin Pov:=a*b; End; BEGIN read (a,b); P:=Pov(a,b); O:=Obim (a,b); Write ('Povrsina je ', p:10:3, ' Obim je ',O:10:3); END. Vežbe Napisati funkciju koja a) određuje rastojanje tačaka A(X1,Y1) i B(X2,Y2) b) izračunava obim trougla sa temenima A(X1,Y1), B(X2,Y2) i C(X3,Y3) c) izračunava površinu trougla sa temenima A(X1,Y1), B(X2,Y2) i C(X3,Y3) Testirati napisane funkcije f-je u programu: a) određivanjem koji od dva data trougla ima veću površinu b) izračunavanjem površine četvorougla. c) izračunavanjem dužine poligonalne linije, ako se unosi broj temena N, a zatim redom njihove koordinate Program fje; const eps=0.0001; var X1,Y1,X2,Y2,X3,Y3,X4,Y4,P1,P2,S: real; n,i : integer; function rastojanje (X1,Y1,X2,Y2:real):real; Begin rastojanje:=sqrt(sqr(X1-X2) + sqr (Y1-Y2)); End; function Obim (X1,Y1,X2,Y2,X3,Y3:real):real; Begin Obim := rastojanje (X1,Y1,X2,Y2) + rastojanje (X1,Y1,X3,Y3)+ rastojanje (X2,Y2,X3,Y3); End; function Povrsina (X1,Y1,X2,Y2,X3,Y3:real):real; var a, b, c, s : real; Begin a:= rastojanje (X1,Y1,X2,Y2); b:= rastojanje (X1,Y1,X3,Y3); c:= rastojanje (X2,Y2,X3,Y3); s:=(a+b+c) / 2; Povrsina := sqrt (s*(s-a)*(s-b)*(s-c)); End; BEGIN { a) } read(X1,Y1,X2,Y2,X3,Y3); p1:=Povrsina(X1,Y1,X2,Y2,X3,Y3); read(X1,Y1,X2,Y2,X3,Y3); p2:=Povrsina(X1,Y1,X2,Y2,X3,Y3); if (p1 > p2 + Eps) then write ('P1 je veci'); if (p1 < p2 - Eps) then write ('P2 je veci'); if (abs(p1-p2) < Eps) then write ('Jednaki su'); {kraj a)} {b) cetvorougao} read(X1,Y1,X2,Y2,X3,Y3,X4,Y4); p1:=Povrsina(X1,Y1,X2,Y2,X3,Y3); p2:=Povrsina(X3,Y3,X4,Y4,X1,Y1); writeln('Povrsina cetvorougla je '(p1+p2):10:5); {kraj b } {c) - poligonalna linija} readln (n); readln (X1,Y1); s:=0.0; for i:=1 to n-1 do Begin readln(X2,Y2); s:=s+rastojanje (X1,Y1,X2,Y2); X1:=X2; Y1:=Y2; End; writeln ('duzina je ', s:10:5); {kraj c} END. |