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 comple! poate fi rezolvat prin divizarea ei "ntr#un set de p ri mai mici$ Pentru fiecare parte se scrie o anumit secven de instruciuni% denumi t subprogram.
'n limba(ul P)SC)* e!ist + tipuri de suprograme% i anume% funcii i proceduri, -Suprograme.,,/0-Funcie.12 -Procedur .13

&nteraciunea "ntre program i subprogram

Funcii
Funciile sunt subprograme care calculeaz i returneaz o valoare$ *imba(ul P)SC)* conine un set de funcii predefinite% cunoscute oric rui 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 e!tinde noiunea de e!presie P)SC)*$ 4e!tul P)SC)* al unei declaraii de funcie are forma,

Function f5!1% !+% $$$% !n 6 , tr1 D1 begin $$$

f , / e1 $$$ end1

f# numele funciei1 (x1, x2, ..., xn )- lista opional de paremetri formali reprezint"nd argumentele funciei1 tr# tipul rezultatului1 acesta trebuie s fie numele unui tip simplu sau tip referin $ )ntetul este urmat de corpul funciei% format din declaraiile locale opionale D i instruciunea compus begin ... end$ 7umele f al funciei apare cel puin o dat" "n partea st"ng a unei instruciuni de atribuire care se e!ecut , f:=e. 8ltima valoare atribuit lui f va fi introdus "n programul principal$

Proceduri
Procedurile s"nt subprograme care efectueaz prelucrarea datelor comunicate "n momentul apelului$ *imba(ul 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 e!tinde noiunea de instruciune P)SC)*$

Forma general a te!tului unei declaraii de procedur este, Procedure p5!1% !+% $$$% !n 6 1 D1 begin $$$ end;
p# numele procedurii1 (x1, x2, ..., xn ) 9lista opional de parametri formali1 'n corpul procedurii s"nt incluse, D# declaraiile locale5 opionale6 grupate dup aceleai reguli ca "n cazul funciilor1 Begin...end- instruciune compus 1 ea nu conine vreo atribuire asupra numelui procedurii$

Procedura poate s "ntoarc mai multe rezultate% dar nu prin numele ei% ci prin variabile desemnate special5 cu prefi!ul var6 "n lista de parametri formali, Parametri#valoare v1% v+% $$$% v:,tp 5 servesc pentru transmiterea de valori din programul principal "n
procedur 61

Parametri#variabil
programul principal61

var v1% v+% $$$% v:,tp

5serves pentru "ntoarcerea rezultatelor din procedur "n

Domenii de vizibilitate
Corpul unui program sau subprogram se numete bloc$ Deoarece subprogramele s"nt incluse "n programul principal i pot conine la r"ndul lor alte subprograme% rezult c blocurile pot fi imbric te5incluse unul "n altul6$ )ceast imbricare de blocuri este denumit structur! de bloc a programului P)SC)*$
Prin Domeniul de "i#ibilit te al unei declaraii se "nelege te!tul de program% "n care numele introdus desemneaz obiectul specificat de declaraia "n studiu$ Domeniul de vizibilitate "ncepe imediat dup" terminarea declaraiei i se sf"rete o dat cu te!tul blocului respectiv$Domeniul de vizibilitate al unei declaraiei inclus acoper domeniul de vizibilitate al declaraiei ce implic acelai nume din blocul e!terior$ Cunoaterea domeniilor de vizibilitate ale declaraiilor este necesar pentru determinarea obiectului curent desemnat de un nume$ De e!emplu% identificatorul c din instruciunea c,/c;r5d6 desemneaz o variabil de tip c;ar$

Comunicarea prin variabile globale


Orice variabil este local "n subprogramul "n care a fost declarat $ O variabil este global relativ la un subprogram atunci c"nd ea se declar "n programul sau subprogramul ce "l cuprinde f r s fie redeclarat "n subprogramul% c"t 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% limba(ul P)SC)* permite transmiterea argumentelor prin variabile globale i parametri#variabil $ Prin efect col ter l se "nelege o atribuire5 "n corpul funciei6 a unei valori la o variabil global sau la un parametru formal variabil $ Efectele colaterale pot influena "n mod neateptat e!ecuia 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; "dresa return, adic adresa instruciunii ce urmea# dup apel.

$ecursia este deosebit de util n ca#urile n care elaborarea unor algoritmi nerecursivi este foarte complicat: translarea programelor %"&'"L, n limba(ul cod!main, grafica pe calculator, recunoaterea formelor .a.

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