Sunteți pe pagina 1din 12

Colegiul Naional Andrei Mureanu DEJ

Subprograme C++
Clase de variabile

Mecanisme de transfer al parametrilor

2012
Structura unui subprogram C++
Subprogramele C++ se numesc funcii.
Definirea unei funcii nseamn scrierea complet a acesteia:
antet tip Numef (lista_parametrilor_formali)
corpul funciei { declaraii locale;
instruciuni;
revenire;
}
Declararea unei funcii este antetul funciei urmat de ; i se
numete prototipul funciei.
prototip antet;
Prototipul trebuie scris obligatoriu nainte de definirea funciei
Exemple
Funcia suma

Prototipul funciei suma


Variabile C++
Variabilele dintr-un program C++ pot fi clasificate n:
1. Variabile globale 2. Variabile locale 3. Parametri formali

1. Variabile globale
Se declar n afara oricrei funcii din program
Sunt alocate static, n segmentul de date al programului
Sunt iniializate implicit, cu valoarea 0
Au domeniul de vizibilitate tot fiierul surs, adic pot fi folosite
din locul n care au fost definite i pn la sfritul fiierului
Au alocat spaiu n memorie tot timpul rulrii programului
Variabile locale
2. Variabile locale
Se declar doar n interiorul unei funcii din program,
inclusiv n funcia main ()
Sunt alocate implicit pe stiva sistemului
Nu sunt iniializate implicit, dac nu sunt iniializate
explicit de programator, rein o valoare oarecare, numit
valoare rezidual
Au domeniul de vizibilitate la nivelul blocului n care au fost
declarate, adic pot fi folosite doar n cadrul acelui bloc de
instruciuni
Au alocat spaiu n memorie numai n timpul rulrii blocului
respectiv de instruciuni
Parametri formali
3. Parametri formali reprezint o cale de comunicare ntre
modulul apelant i funcia apelat. Pot fi:
Parametri de intrare corespund datelor de intrare din
analiza problemei
- Sunt valori transmise de modulul apelant ctre funcia apelat
- Se transmit prin valoare
- Se declar ca orice variabil prin tip idvar
Parametri de ieire (rezultate) corespund datelor de
ieire din analiza problemei
- Sunt valori transmise de funcia apelat ctre modulul apelant
- Se transmit prin referin, este specificat prin tip& idvar
Parametri de intrare i ieire sunt parametri formali
transmii prin adres, dar care sunt folosii i pentru a
transmite date de intrare
Parametrii formali i actuali
Parametrii care sunt declarai n antetul unei funcii
se numesc parametri formali, iar cei care se gsesc
n instruciunea de apel se numesc parametri
efectivi (actuali sau de apel).
Legtura ntre parametrii formali i cei actuali este
dat de regulile urmtoare:
Parametrii actuali trebuie s coincid ca numr, tip i
ordine cu parametri formali
Transmiterea parametrilor are efectul unei atribuiri a
valorii parametrului actual ctre parametrul formal
corepsunztor
Metode de transfer al parametrilor
Transmiterea prin valoare se folosete atunci cnd
funcia primete acea valoare ca o dat de intrare, fr a
transmite n modulul apelant valoarea modificat n
subprogram.
Pot fi transmise prin valoare:
a) valorile reinute de variabile
b) valoarea unei expresii, care pot conine inclusiv apeluri
de funcii; expresiile sunt evaluate nainte de transfer
Transmiterea prin referin se folosete atunci cnd
n urma apelului dorim ca variabila transmis s rein
valoarea stabilit n timpul execuiei subprogramului
Apelul unei funcii i revenirea din apel
Apelul unei funcii suspend execuia modulului
apelant, pn la revenirea din apel
a) reprezint o instruciune pentru funciile de tip void
Numef (parametri_actuali);
b) reprezint valoarea returnat de instruciunea return pentru
funciile cu tip, care poate fi inclus n evaluarea unei expresii
matematice sau ntr-o instruciune de afiare
c) se salveaz pe stiva sistemului nregistrarea de activare (I.A.) a
subprogramului
Revenirea din apelul funciei
a) programul continu cu urmtoarea instruciune pentru funciile
de tip void
b) pentru funciile cu tip se folosete valoarea returnat n
evaluarea expresiei n interiorul creia a fost apelat sau n
instruciunea de afiare
c) se elibereaz stiva sistemului memoria ocupat de
nregistrarea de activare I.A. a subprogramului i se continu
executarea programului de la adresa de revenire A.R.
nregistrarea de activare (I.A.)
nregistrarea de activare I.A. a apelului unui
subprogram reprezint toate datele salvate pe stiva sistemului
la apelul subprogramului:
a) adresa de revenire (A.R.) este adresa instruciunii care se
efectueaz dup apel i se aloc spaiu pentru rezultatul
funciilor cu tip
b) valorile variabilelor transmise prin valoare sau adresele
valorilor transmise prin referin
c) se aloc variabilele locale

I.A.
- A.R. adresa de revenire
- Spaiu pentru rezultatul funciei cu tip
-Valoarea parametrilor actuali transmii prin valoare
-Adresa parametrilor actuali transmii prin referin
-Variabilele locale
Exemplu
Scriei un program care afieaz maximul dintre dou
numere ntregi. Se va folosi o funcie care calculeaz
maximul a dou numere ntregi.
linia instruciunea
11. a=25
12. b=17
13. apel max(a,b); A.R.=13
13. cout<<25 stop

linia apel max(a,b)


4. x=a=25; y=b=17
6. x>y (A) revenire x=25
13. A.R. max(a,b)=25
De reinut
Ce sunt: Ce nseamn:
Variabilele globale Definirea unei funcii
Variabilele locale Prototip
Parametri formali Apelul unei funcii
Parametri actuali a) de tip void
Metodele de transfer al b) cu tip
parametrilor actuali Revenirea din apel
a) prin valoare nregistrarea de
b) prin referin activare I.A.
Adresa de revenire A.R.

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