Sunteți pe pagina 1din 4

Fia de documentare .

- Structura subprogramelor i transmiterea parametrilor


Un subprogram (funcie) are o definiie i attea apeluri cte sunt necesare. Definiia unui subprogram reprezint de fapt descrierea unui proces de calcul cu ajutorul variabilelor virtuale (parametri formali), iar apelul unui subprogram nseamn execuia procesului de calcul pentru cazuri concrete (cu ajutorul parametrilor reali, (efectivi, actuali) ). Parametri formali apar n antetul subprogramului i sunt utilizai de subprogram pentru descrierea abstract a unui proces de calcul . Parametri actuali apar n instruciunea de apelare a unui subprogram i sunt folosii la execuia unui proces de calcul pentru valori concrete. Parametrii formali nu sunt variabile. O variabil este caracterizat de nume, tip, i adres. Legarea unui parametru formal la o adres se realizeaz n timpul execu iei instruciunii de apelare a subprogramului. Definiia unei funcii are forma general: tip_returnat nume_funcie (lista parametrilor formali) { { { instruciune;// corpul funciei instruciune; // corpul funciei instruciune; // corpul funciei } } }

Tip_returnat

Reprezint tipul rezultatului calculat i returnat de funcie i poate fi: int, char, char*, long, float, void, etc. n cazul n care tipul rezultatului este diferit de void, corpul funciei trebuie s conin cel puin o instruciune return. Instruciunea return va specifica valoarea calculat i returnat de funcie care trebuie s fie de acelai tip ca i tip_returnat. Reprezint numele dat funciei de ctre cel ce o definete, pentru a o putea apela.

Nume_funcie

Lista_parametrilor_form Reprezint o list de declaraii de variabile separate prin virgul. Aceast list poate s fie i vid. ali Instruciune Este o instruciune vid sau o instruciune simpl sau o instruciune compus.

Construirea subprogramelor se face prin : Antet conine date despre : tipul rezultatului, nume i parametrii efectivi. Dac funcia nu returneaz nimic, tipul este void() Corp este un bloc de instruciuni declarative i imperative (de execuie) ce definesc modul de aciune al subprogramului Prototip pentru a putea fi apelat, funcia trebuie declarat. Conine date despre : tipul rezultatului, nume i parametrii efectivi. Apel este modul prin care subprogramul e pus n execuie. Apelul poate fi fcut ori de cte ori este nevoie. Parametrii datele care circul ntre modulul apelant i apelat se introduc ntre paranteze, dup numele subprogramului. Modul apelant blocul ce conine apelul subprogramului Modul apelat blocul ce conine funcia (subprogramul apelat). De exemplu, modelul cum arat un subprogram : # include <iostream.h> # include <conio.h> int max (int, int); void main (void) { clrscr(); cout << max(15, 30); getch(); } int max (int a, int b=3) { if (a>b) return a; else return b; } DEFINIIA FUNCIEI antetul funciei i corpul funciei APELUL FUNCIEI PROTOTIPUL FUNIEI

Transmiterea datelor ntre apelant i apelat se poate face fie prin parametri, fie prin variabile globale.Prin utilizarea variabilelor globale nu se face un transfer propriu-zis, ci se folosesc n comun anumite zone de memorie. Transferul se poate face prin valoare sau prin referin/adres. Datele care se transfer ntre apelant i apelat se introduc ntre paranteze, dup identificatorul subprogramului. -n antetul subprogramului parametrii se nscriu prin tip i nume, separai prin virgul, fr a fi grupai. Ei se numesc parametri formali. -n apelul subprogramului se nscriu separai prin virgul, n aceeai ordine ca n antet, prin valori concrete.Ei se numesc parametri efectivi (actuali). -Regula de coresponden notific o anumit concordan ntre numrul, ordinea i tipul parametrilor formali i a parametrilor efectivi. Numrul parametrilor formali poate s difere de numrul parametrilor efectivi n cazul funciilor cu numr de parametri variabil, respectiv n cazul suprancrcrii funciilor. Tipul parametrilor formali poate s difere de tipul parametrilor efectivin cazul conversiei implicite a parametrilor efectivi n tipul parametrilor formali, ca o operaie de atribuire, respectiv n cazul suprancrcrii funciei. Numele parametrilor formali poate s difere de numele parametrilor efectivi. Parametrii sunt memorai n segmentul de stiv n ordinea nscrierii lor. Transmiterea prin referin/adres - se transmite adresa parametrului actual. Este utilizat la prelucrarea unei variabile n interiorul unei funcii, astfel nct, la revenirea din funcie, variabila s rein valoarea modificat, nu valoarea de intrare. Parametrii transmii prin referin vor fi precedai de caracterul ampersand & , att la declararea, ct i la definirea funciei.n apel, parametrii efectivi corespunztori parametrilor formali transmii prin referin trebuie s fie variabil e de memorie. Transmiterea prin referin nseamn c parametrii sunt transmii prin referin atunci cnd ne intereseaz ca la revenirea din subprogram, variabila transmis s rein valoarea stabilit n timpul execuiei subprogramului. Transmiterea prin valoare se transmite o copie a parametrului actual.

Este utilizat la prelucrarea unei variabile n interiorul unei funcii. La revenirea din funcie, variabila nu reine valoarea modificat, ci valoarea de intrare. Parametrii transmii prin valoare se folosesc doar ca parametri de intrare. Pentru parametrii de ieire se va folosi instruciunea return(). n apel, parametrii efectivi corespunztori parametrilor formali transmii prin valoare pot fi : valori, variabile, expresii sau alte funcii. Transmiterea prin valoare se utilizeaz atunci cnd suntem interesai ca subprogramul s lucreze cu acea valoare, dar n prelucrare, nu ne intereseaz ca parametrul efectiv, cel din blocul apelant, s rein valoarea modificat n subprogram. Se pot transmite prin valoare: Valorile reinute de variabile : parametrii efectivi trebuie s fie numele variabilelor care se trimit prin valoare. Expresii, care pot conine i funcii : parametrii efectivi sunt expresii care mai nti se evalueaz.

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