Documente Academic
Documente Profesional
Documente Cultură
Subprograme C++
Clase de variabile
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
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