miercuri, 14 aprilie 2010

SUBPROGRAME

Definitie.
Subprogramul este prin urmare un ansamblu alcatuit din tiputi de date, variabile si instructiuni scrise in vederea unei anumite prelucrari (calcule, citiri, scrieri), care se identifica printr-un nume si care poate fi executat doar daca este apelat .

Avantajele utilizarii subprogramelor:
· Modularizarea problemei (descompunerea in subprobleme)
· Reutilizarea aceleasi secvente de mai multe ori (in contexte diferite)
· Depanarea si intretinerea mai usoara



O funcţie este formata din antet si corp:
antet_funcţie
{corpul_funcţiei
}
Sau:
tip_val_return nume_func (lista_declaraţiilor_param_ formali)
{declaraţii_variabile_locale
instrucţiuni
[return valoare]
}


Antetul unei functii:
Prima linie reprezintă antetul funcţiei, în care se indică: tipul funcţiei, numele acesteia şi lista declaraţiilor parametrilor formali.
La fel ca un operand sau o expresie, o funcţie are un tip, care este dat de tipul valorii returnate de funcţie în funcţia apelantă. Dacă funcţia nu întoarce nici o valoare, în locul tip_vali_return se specifică void. Dacă tip_val_return lipseşte, se consideră, implicit, că acesta este int.
Nume_funcţie este un identificator
Lista_declaraţiilor_param_formali (încadrată între paranteze rotunde) constă într-o listă (enumerare) care conţine tipul şi identificatorul fiecărui parametru de intrare, despărţite prin virgulă. Tipul unui parametru poate fi oricare, chiar şi tipul pointer. Dacă lista parametrilor formali este vidă, în antet, după numele funcţiei, apar doar parantezele ( ), sau (void).


Corpul funcţiei este un bloc, care implementează algoritmul de calcul folosit de către funcţie. În corpul funcţiei apar (în orice ordine) declaraţii pentru variabilele locale şi instrucţiuni. Dacă funcţia întoarce o valoare, se foloseşte instrucţiunea return valoare. La execuţie, la întâlnirea acestei instrucţiuni, se revine în funcţia apelantă.


În limbajul C/C++ se utilizează declaraţii şi definiţii de funcţii.

Declaraţia conţine antetul funcţiei şi informează compilatorul asupra tipului, numelui funcţiei şi a listei parametrilor formali (în care se poate indica tipul parametrilor formali şi numele acestora). Declaraţiile de funcţii se numesc prototipuri, şi sunt constituite din antetul funcţiei.
Definiţia conţine antetul funcţiei şi corpul acesteia. Nu este admisă definirea unei funcţii în corpul altei funcţii.

Apelul şi prototipul funcţiilor

O funcţie poate fi apelată printr-o construcţie urmată de punct şi virgulă, numită instrucţiune de apel, de forma:
nume_funcţie (lista_parametrilor_efectivi);

Parametrii efectivi trebuie să corespundă cu cei formali ca ordine şi tip. La apel, se atribuie parametrilor formali valorile parametrilor efectivi, după care se execută instrucţiunile din corpul funcţiei. La revenirea din funcţie, controlul este redat funcţiei apelante, şi execuţia continuă cu instrucţiunea următoare instrucţiunii de apel, din funcţia apelantă. O altă posibilitate de a apela o funcţie este aceea în care apelul funcţiei constituie operandul unei expresii (apelul functiei intervine intr-o expresie). Acest lucru este posibil doar în cazul în care funcţia returnează o valoare, folosită în calculul expresiei(doar pentru functiile cu tip).

Parametrii declaraţi în antetul unei funcţii sunt numiţi formali, pentru a sublinia faptul că ei nu reprezintă valori concrete, ci numai ţin locul acestora pentru a putea exprima procesul de calcul realizat prin funcţie. Ei se concretizează la execuţie prin apelurile funcţiei.
Parametrii folosiţi la apelul unei funcţii sunt parametri reali, efectivi, concreţi, actuali iar valorile lor vor fi atribuite parametrilor formali, la execuţie. Utilizarea parametrilor formali la implementarea funcţiilor şi atribuirea de valori concrete pentru ei, la execuţie, reprezintă un prim nivel de abstractizare în programare. Acest mod de programare se numeşte programare procedurală şi realizează un proces de abstractizare prin parametri.

Variabilele declarate în interiorul unei funcţii, cât şi parametrii formali ai acesteia nu pot fi accesaţi decât în interiorul acesteia. Aceste variabile sunt numite variabile locale şi nu pot fi accesate din alte funcţii. Domeniul de vizibilitate a unei variabile este porţiunea de cod la a cărei execuţie variabila respectivă este accesibilă. Deci, domeniul de vizibilitate a unei variabile locale este funcţia în care ea a fost definită.

Niciun comentariu:

Trimiteţi un comentariu