Sunteți pe pagina 1din 8

CAPITOLUL

Funcii i proceduri

Subprograme
Funcii
Proceduri
Domenii de vizibilitate
Comunicarea prin variabile globale
Efecte colaterale
Recursia

Subprograme
O problem complex poate fi rezolvat prin
divizarea ei ntr-un set de pri mai mici. Pentru
fiecare parte se scrie o anumit secven de
instruciuni, denumi
t subprogram.
n limbajul PASCAL exist 2
tipuri de suprograme, i
anume, funcii i proceduri:
<Suprograme>::={<Funci
e>;| <Procedur>;}

Interaciunea ntre program i subprogram

Funcii
Funciile sunt subprograme care calculeaz i returneaz o valoare. Limbajul
PASCAL conine un set de funcii predefinite, cunoscute oricrui program : sin, cos,
eof etc. n completare, programul poate defini funcii proprii, care se apeleaz n
acelai mod ca funciile-standart. Prin urmare, conceptul de funcie extinde
noiunea de expresie PASCAL.
Textul PASCAL al unei declaraii de funcie are forma:

Function f(x1, x2, ..., xn ) :


tr;
D;
begin
...

f : = e;
...
end;

f- numele funciei;
(x1, x2, ..., xn )- lista opional de
paremetri formali reprezintnd
argumentele funciei;
tr- tipul rezultatului; acesta trebuie s fie
numele unui tip simplu sau tip referin.
Antetul este urmat de corpul funciei,
format din declaraiile locale opionale D
i instruciunea compus begin ... end.
Numele f al funciei apare cel puin o
dat n partea stng a unei instruciuni
de atribuire care se execut: f:=e. Ultima
valoare atribuit lui f va fi introdus n

Proceduri
Procedurile snt subprograme care efectueaz prelucrarea datelor comunicate n
momentul apelului. Limbajul conine procedurile predefinite read, readln,write, writeln
.a. n completare, programatorul poate defini proceduri proprii, care se apeleaz n
acelai mod ca procedurile-standart. Prin urmare, conceptul de procedur extinde
noiunea de instruciune PASCAL.

Forma general a textului unei declaraii de procedur este:


p- numele procedurii;
Procedure p(x1, x2, ..., (x1, x2, ..., xn ) lista opional de parametri
formali;
xn ) ;
n corpul procedurii snt incluse:
D;
D- declaraiile locale( opionale) grupate dup
begin
aceleai reguli ca n cazul funciilor;
...
Begin...end- instruciune compus; ea nu
end;
conine vreo atribuire asupra numelui
Procedura poate s ntoarcprocedurii.
mai multe rezultate, dar nu prin numele

ei, ci prin variabile desemnate special( cu prefixul var) n lista de


parametri formali:
Parametri-valoare v1, v2, ..., vk:tp ( servesc pentru transmiterea de valori din
programul principal n procedur);

Parametri-variabil var v1, v2, ..., vk:tp

(serves pentru ntoarcerea

Domenii de vizibilitate
Corpul unui program sau subprogram se numete bloc.
Deoarece subprogramele snt incluse n programul
principal i pot conine la rndul lor alte subprograme,
rezult c blocurile pot fi imbricate(incluse unul n altul).
Aceast imbricare de blocuri este denumit structur
de bloc a programului PASCAL.
Prin Domeniul de vizibilitate al unei declaraii se nelege textul de
program, n care numele introdus desemneaz obiectul specificat de
declaraia n studiu. Domeniul de vizibilitate ncepe imediat dup terminarea
declaraiei i se sfrete o dat cu textul blocului respectiv.Domeniul de
vizibilitate al unei declaraiei inclus acoper domeniul de vizibilitate al
declaraiei ce implic acelai nume din blocul exterior.
Cunoaterea domeniilor de vizibilitate ale declaraiilor este necesar pentru
determinarea obiectului curent desemnat de un nume.
De exemplu, identificatorul c din instruciunea c:=chr(d) desemneaz o
variabil de tip char.

Comunicarea prin variabile globale


Orice variabil este local n subprogramul
n care a fost declarat. O variabil este
global relativ la un subprogram atunci cnd
ea se declar n programul sau
subprogramul ce l cuprinde fr s fie
redeclarat n subprogramul, ct i n afara
lui, ele pot fi folosite pentru transmiterea
datelor de prelucrat i returnarea
rezultatelor.

Efectele colaterale
Destinaia unei funcii este s ntoarc ca rezultat o
singur valoare. n mod obinuit, argumentele se
transmit funciei prin parametr-valoare, iar rezultatul
calculat se returneaz n locul de apel prin numele
funciei. n completare, limbajul PASCAL permite
transmiterea argumentelor prin variabile globale i
parametri-variabil.
Prin efect colateral se nelege o atribuire( n
corpul funciei) a unei valori la o variabil global
sau la un parametru formal variabil. Efectele
colaterale pot influena n mod neateptat execuia
unui program i complic procesele de depanare.

Recursia
Recursia se definete ca o situaie n care un subprogram se
autoapeleaz fie direct, fie prin intermediul altei funcii sau proceduri.
Subprogramul care se autoapeleaz se numete recursiv.
La orice apel de subprogram, n memoria calculatorului vor fi
depuse urmtoarele informaii:
Valorile curente ale parametrilor transmii prin valoare;
Locaiile(adresele) parametrilor-variabil;
Adresa return, adic adresa instruciunii ce urmeaz dup

apel.
Recursia este deosebit de util n cazurile n care elaborarea
unor algoritmi nerecursivi este foarte complicat: translarea
programelor PASCAL, n limbajul cod-main, grafica pe
calculator, recunoaterea formelor .a.

S-ar putea să vă placă și