Study
searchuc Study i Contracting i Study ī
Study a Consulting esearchssearch n Easymathhelp isearcha Www Www i And ulsearchf Premium n Premium tsearche Www , Study n Easymathhelp m Consulting lsearch
Easymathhelp csearchssearche Www a searchisearchse Contracting rsearchhssearchAsearchda Www s Study ar Consulting h
ssearcharcsearchlsearchCo Study tsearchac Premium i And g
r Contracting re Study isearchmt Www Wwsearch isearch searchonsearchr And c Study isearchg
rp Study Ww r Study Std Study Www eEsearchsy And ah Www el Www r Contracting Contracting tusearchy Consulting o Premium Csearchn Easymathhelp ra Www t Premium n Easymathhelp Csearchntsearcha Premium tisearchg Contracting o Easymathhelp Stu Study y m Contracting w And lsearcheasearchc Consulting .searchLa fel ca un operand sau o expresie, o functie are un tip, care este dat de tipul valorii
returnate de functie īn functia apelanta. Daca functia
nu īntoarce nici o valoare, īn locul tip_vali_return
se specifica void. Daca tip_val_return lipseste, se
considera, implicit, ca acesta este int. Nume_functie este un identificator.
Lista_declaratiilor_param_formali (īncadrata īntre paranteze rotunde) consta īntr-o lista (enumerare) care contine tipul si identificatorul fiecarui parametru de intrare, despartite prin virgula. Tipul unui parametru poate fi oricare, chiar si tipul pointer. Daca lista parametrilor formali este vida, īn antet, dupa numele functiei, apar doar parantezele ( ), sau (void).
Corpul functiei este un bloc, care implementeaza algoritmul de calcul folosit de catre functie. Īn corpul functiei apar (īn orice ordine) declaratii pentru variabilele locale si instructiuni. Daca functia īntoarce o valoare, se foloseste instructiunea return valoare. La executie, la īntālnirea acestei instructiuni, se revine īn functia apelanta.
Īn limbajul C/C++ se utilizeaza declaratii si definitii de functii.
Declaratia contine antetul functiei si informeaza compilatorul asupra tipului, numelui functiei si a listei parametrilor formali (īn care se poate indica doar tipul parametrilor formali, nu si numele acestora). Declaratiile de functii se numesc prototipuri, si sunt constituite din antetul functiei, din care pot lipsi numele parametrilor formali.
Definitia contine antetul functiei si corpul acesteia. Nu este admisa definirea unei functii īn corpul altei functii.
O forma īnvechita a antetului unei functii este aceea de a specifica īn lista parametrilor formali doar numele acestora, nu si tipul. Aceasta libertate īn omiterea tipului parametrilor constituie o sursa de erori.
tipul_valorii_returnate nume_functie (lista_parametrilor_ formali)
declararea_parametrilor_formali
6.2. APELUL sI PROTOTIPUL FUNCŢIILOR
O functie poate fi apelata printr-o constructie urmata de punct si virgula, numita instructiune de apel, de forma:
nume_functie (lista_parametrilor_efectivi);
Parametrii efectivi trebuie sa corespunda cu cei formali ca ordine si tip. La apel, se atribuie parametrilor formali valorile parametrilor efectivi, dupa care se executa instructiunile din corpul functiei. La revenirea din functie, controlul este redat functiei apelante, si executia continua cu instructiunea urm& 131i87b #259;toare instructiunii de apel, din functia apelanta. O alta posibilitate de a apela o functie este aceea īn care apelul functiei constituie operandul unei expresii. Acest lucru este posibil doar īn cazul īn care functia returneaza o valoare, folosita īn calculul expresiei.
Parametrii declarati īn antetul unei functii sunt numiti formali, pentru a sublinia faptul ca ei nu reprezinta valori concrete, ci numai tin locul acestora pentru a putea exprima procesul de calcul realizat prin functie. Ei se concretizeaza la executie prin apelurile functiei.
Parametrii folositi la apelul unei functii sunt parametri reali, efectivi, concreti, iar valorile lor vor fi atribuite parametrilor formali, la executie. Utilizarea parametrilor formali la implementarea functiilor si atribuirea de valori concrete pentru ei, la executie, reprezinta un prim nivel de abstractizare īn programare. Acest mod de programare se numeste programare procedurala si realizeaza un proces de abstractizare prin parametri.
Variabilele declarate īn interiorul unei functii, cāt si parametrii formali ai acesteia nu pot fi accesati decāt īn interiorul acesteia. Aceste variabile sunt numite variabile locale si nu pot fi accesate din alte functii. Domeniul de vizibilitate a unei variabile este portiunea de cod la a carei executie variabila respectiva este accesibila. Deci, domeniul de vizibilitate a unei variabile locale este functia īn care ea a fost definita (vezi si paragraful 6.8.).
Exemplu:
int f1(void)
void main()
Daca īn interiorul unei functii exista instructiuni compuse (blocuri) care contin declaratii de variabile, aceste variabile nu sunt vizibile īn afara blocului.
Exemplu:
void main()
cout << "a="<<a<<" b="<<b<<" c="<<c'\n'; // a=1 b=6, c nedeclarat
. . . . . . . . . . . .
}
Exercitiu: Sa se scrie urmatorul program (pentru īntelegerea modului de apel al unei functii) si sa se urmareasca rezultatele executiei acestuia.
#include <iostream.h>