Sunteți pe pagina 1din 2

FUNCTII IN C++

Un program in C este un ansamblu de functii care efectueaza o activitate bine definita. Dintre aceste
functii, intotdeuna o functie este numita main si este functia care este apelata la lansarea in executie a
programului.
1. Forma generala a unei functii
Sintaxa unei functii este urmatoarea:
tip_rezultat nume_functie (lista_de_parametrii)
tip_rezultat - specifica tipul de date pe care il returneaza functia . o functie poate returna
orice tip de data cu exceptia unei matrice. Daca nu este specificat nici un tip, compilatorul presupune ca
acea functie returneaza un rezultat de tip intreg.
lista_de_parametrii - este o lista separata prin virgule de nume de variabile si tipu
121d38b rile lor associate care primesc valorile argumentelor atunci cand este apelata functia. O functie
poate sa nu aiba parametrii, caz in care lista lor este vida. Totusi parantezele sunt necesare, chiar daca nu
exista parametri.
In declaratiile de variabile globale ne putem referi la mai multe variabile de acelasi tip folosind o
lista cu numele lor separate prin virgula. Spre deosebire de acestea variabilele locale (parametrii unei
functii) trebuie declarati individual, fiecare continand atat tipul cat si numele.
Ex.
f(int i, int k, float j) /*corect*/
f (int i, k, float j) /*gresit*/
Fiecare functie este un bloc de cod discret. O functie nu poate avea acces la codul unei alte
functii decat printr-un apel de functie. Variabilele declarate intr-o functie sunt variabile locale, adica snt
create la intrarea in functia respectiva si distruse la iesirea din aceasta. Nu se poate defini o functie intr-o
alta functie, deci toate functiile au aceeasi sfera de influenta.
2. Argumentele functiei
Daca o functie urmeaza sa foloseasca argumente, ea trebuie sa declare variabile care accepta
valori ale argumentelor. Aceste variabile sunt denumite parametri formali ai functiei. Ei se comporta ca si
celelalte variabile locale din functie si sunt create la intrarea intr-o functie si distruse la iesirea din ea.
Declararea parametrilor se face dupa numele functiei.
3. Apelul unei functii
Apelul unei functii se face specificand numele functiei urmat de lista parametrilor actuali.
Aceasta este formata din variabile, constante sau expresii compatibile ca tip cu parametrii formali, adica
fiecarui parametru formal i se asociaza o variabila, o constanta sau o expresie compatibila ca tip.
Daca lista de parametrii este vida, apelul se face specificand numele functiei urmat de paranteze
rotunde.
Ex.
int f(int k, int i, float a);
int g (void);
apelul functiilor f si g se poate face astfel:
int m, j;
float b;
j=g();
f (m, j+1, 12.5);
4. Prototipul unei functii.
Definitia unei functii apare in cadrul fisierului sursa, inaintea fiecarui apel, numai in cazuri
particulare. Definitia lipseste in cazul functiilor din biblioteci sau atunci cand functia se afla in alt fisier
sursa sau proiect (in cadrul unui proiect nu se admite ca o functie sa fie definita de doua ori).
Pentru ca la compilare sa se poata efectua si validarea apelurilor unei functii, limbajul C prevede
declaratii fara definirea functiilor, numite prototipuri. Aceste sunt recomandate in C si impuse in C++.

Forma generala de definire a unui prototip este:


tip_rezultat nume_functie (tip_1 nume_var_1, tip_2 nume_var_2, , tip_n
nume_var_n);
Ex.
int f(int k, int i, float a);
void g (int *p1, int *p2);
Prototipurile permit compilatorului sa verifice si sa gaseasca deferentele dintre argumentele
utilizate la apelare si parametrii functiei (tipurile si numarul acestora).
Folosirea numelor parametrilor este optionala. Utilizarea lor este insa recomandata deoarece
acestia pot fi utilizati de compilator in cadrul mesajelor de eroare.
Ex. de prototipuri de functii, fara specificarea numelor parametrilor:
int f(int, int, float);
void g (int *, int *);
In C lipsa parametrilor se specifica prin void. In C++ lista vida indica faptul ca functia nu are
parametrii si nu este necesara inserarea cuvantului void.
Pentru functia main nu este necesar un prototip, iar lipsa parametrilor nu se mai indica prin
cuvantul void.
Prototipul trebuie inserat in program (de regula la inceputul programului), inaintea oricarui apel
al functiei.
Prototipurile functiilor ajuta la ocolirea greselilor inainte ca ele sa apara . in plus dau
posibilitatea verificarii corectitudinii programului, nepermitand functiilor sa fie apelate cu argumente
nepotrivite.
5. Revenirea dintr-o functie. Instructiunea return.
Exista doua cai de incheiere a executiei unei functii si de revenire in programul apelant: prima
varianta de revenire are loc dupa ce se executa ultima instructiune a functiei (dupa care urmeaza acolada
de sfarsit), iar cea de-a doua varianta de revenire are loc la intalnirea instructiunii return.
Sintaxa instructiunii return este urmatoarea:
return expresie;
unde expresie reprezinta rezultatul intors de functie, deci acesta trebuie sa fie compatibil cu
tipul indicat de prototipul functiei.
Exceptand functiile de tip void, toate functiile returneaza o valoare. Aceasta valoare este
specificata explicit de catre instructiunea return.
Valori returnate. Toate functiile, cu exceptia celor de tip void, returneaza o valoare. Aceasta
valoare este specificata explicit de catre instructiunea return. Daca nu exista nici o instructiune return,
atunci valoarea returnata de functie este teoretic nedefinita. Deci, atata vreme cat o functie nu este
declarata ca fiind void, ea poate fi folosita ca operand in orice expresie valida.
Obs. O functie nu poate fi niciodata tinta unei atribuiri. O instructiune de forma:
modific(x,y)=100; /*instructiune incorecta*/
este gresita. Compilatorul o va taxa ca eroare si nu va compila un program care contine asa ceva.
In general, la scrierea de programe in C++, functiile vor fi de trei tipuri:
- functii de calcul simplu - care sunt proiectate pentru a efectua operatii asupra argumentelor
lor si a returna o valoare rezultata din aceste operatii (Ex. functiile standard de biblioteca sqrt() si
sin()care calculeaza radacina patrata, respectiv sinusul argumentelor lor);
- functii ce manevreaza informatiile si returneaza o valoare care indica reusita sau nereusita
acestei manevre (Ex. functia de biblioteca fclose()care este folosita pentru a inchide un fisier- daca
operatia de inchidere a decurs cu succes, functia returneaza 0, daca operatia nu a reusit, functia returneaza
un cod de eroare);
- functii care nu au o valoare returnata explicit. In esenta o astfel de functie este strict de
procedura si nu returneaza o valoare (Ex. exit() - care termina un program). Toate functiile care nu
returneaza valori trebuie declarate ca returnand tipul void.

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