Procedure su tip potprograma koji može imati nekoliko izlaza, dok funkcije mogu imati samo jedan. Da ne duljim
sve ostalo objasnit ću na primjerima
Procedura za ispis broja:
var a:integer;
procedure ispis(a:integer); ovdje smo deklarirali proceduru naziva ispis koja sadržava varijablu a begin početak procedure
writeln(a);
end; kraj procedure
begin
readln(a);
ispis(a); na ovaj način pozivamo proceduru
readln();
end.
procedura za zbroj dva broja:
var a,b,c:integer;
procedure ispis(a,b:integer;var c:integer);
ako želimo da nam je neka varijabla zlaz moramo
begin prije nje staviti oznaku var
c:=a+b;
end;
begin
readln(a,b);
ispis(a,b,c); ako proceura ima više varijabli bitno ih je navesti redosljedom kojim dolaze
writeln(c); budući da nam je prije varijable c oznaa var možem ju ispisati
readln(); van procedure, ali mogli smo ju ispisati i unutar procedure
end.
procedura za opseg i površinu kruga:
var r,povrsina,opseg:real;
procedure kako(r:real;var povrsina,opseg:real);
begin
povrsina:=r*r*3.14;
opseg:=2*r*3.14
end;
begin
readln(r);
kako(r,povrsina,opseg);
writeln(povrsina:7:2);
writeln(opseg:7:2);
readln();
end.
procedura za sortiranje niza:
type niz=array[1..100] of integer; ovdje smo deklirari tip varijabli niz koji može sadržavati 100 brojeva,sada je niz sličan tipovima podataka integer, real...
var a,i,n,j:integer;
k,l:niz;
procedure suma(i,n,j,a:integer;k:niz;var l:niz);
begin
for i:=1 to n do begin
for j:=i to n do begin
if k[i]<k[j] then begin ovaj dio ispituje da li je sljedeći broj manji od sljedećeg, ako je izvršava se sljedeći dio naredbi
a:=k[i]; neka privremena vrijednost je k[i]
k[i]:=k[j]; k[i] postaje veći broj, tj. sljedeći
k[j]:=a; sljedeći broj postaje privremena vrijednost
end;
end;
end;
for i:=1 to n do
l[i]:=k[i]; budući da je l izlazna varijabla moramo izvršiti ovu zamjenu
end;
begin
readln(n);
for i:=1 to n do
readln(k[i]);
suma(i,n,j, a,k,l);
for i:=1 to n do
writeln(l[i]); ovdje ispisujemo sortirani niz readln); end.
procedura koja računa koliko je brojeva u nizu djeljivo s 5
type niz=array[1..100] of integer;
var a,i,n,j:integer;
k,l:niz;
procedure suma(i,n,integer;k:niz;var a:integer);
begin
for i:=1 to n do begin
if k[i] mod 5=0 then a:=a+1;
end;
begin
readln(n);
for i:=1 to n do
readln(k[i]);
suma(i,n,k,a);
writeln(a);
readln();
end.