1.4. Structura unei functii

2018/12/14 in Programare in C

O functie in C are urmatoarea structura:

tip nume(lista parametrilor formali)
{
   declaratii
   instructiuni
}

Primul rand din formatul de mai sus reprezinta antetul functiei. Partea dintre acolade, inclusiv acoladele, reprezinta corpul functiei.

In cazul tipurilor predefinite, tip din antetul functiei este un cuvant cheie, ce defineste tipul valorii returnate de functie.

In limbajul C exista doua categorii de functii. O prima categorie contine functiile care la revenirea din ele returneaza o valoarein punctul de apel. Tipul acestei valori este definit de tip din antetul functiei. Cealalta categorie de functii contine functiile care nu returneaza nicio valoare la revenirea din ele.

Pentru acestea din urma se va folosi cuvantul cheie void in calitate de tip. El semnifica lipsa unei valori returnate la revenirea din functie.

O functie poate avea zero sau mai multi parametri. Lista declaratiilor parametrilor formali este vida in cazul in care functia nu are parametri formali. In acest caz, antetul functiei se reduce la:

tip nume()

Mentionam ca absenta parametrilor poate fi indicata explicit folosind cuvantul cheie void. Astfel, antetul de mai sus poate fi scris si:

tip nume(void)

Exemple:

1.

void f(void)
{
   ...
}

Functia f nu are parametri. Ea nu returneaza nicio valoare la revenirea din ea.

2.

void f()
{
   ...
}

Format identic cu exemplul precedent.

3.

int g()
{
   ...
}

Functia g nu are parametri. La revenirea din ea se returneaza o valoare intreaga de tip int.

4.

double h(void)
{
   ...
}

Functia h nu are parametri. La revenirea din ea se returneaza o valoare flotanta in dubla precizie.

In cazul in care functia are parametri, declaratiile parametrilor formali se includ intre parantezele rotunde de dupa numele functiei si se separa prin virgula, daca sunt mai multe.

Parametrii se utilizeaza pentru a permite transferul de date catre o functie in momentul apelului ei si permite construirea de functii facand abstractie de valorile concrete care vor fi prezente abia la executia programului. In momentul compilarii este necesara numai cunoasterea tipurilor valorilor pe care le vor primi parametrii la executie. Aceste tipuri sunt definite de declaratiile parametrilor respectivi, indicate in antetul functiei.

Parametrii declarati in antetul functiei si care apoi sunt utilizati in corpul functiei se numesc formali pentru a sublinia faptul ca ei nu reprezinta valori concrete - ei doar tin locul acestora pentru a putea exprima procesul de calcul realizat prin functie.

Ei se concretizeaza la executie prin apelurile functiei. Valorile parametrilor formali se definesc la fiecare apel al unei functii prin asa-numitii parametri reali, efectivi sau concreti.

Utilizarea parametrilor formali la implementarea functiilor si atribuirea de valori concrete pentru ei la executie reprezinta un prim nivel de abstractizare in programare. Acest mod de programare este cel mai vechi, se numeste programare procedurala si realizeaza un proces de abstractizare prin parametri.

Declaratiile parametrilor formali sunt asemanatoare cu declaratiile de variabile.

Observatii:

1. Lista parametrilor formali este fie vida, cand functia nu are parametri, fie se compune dintr-un nume sau mai multe, separate prin virgula. In acest caz, declaratiile parametrilor formali, daca ei exista se dau imediat dupa paranteza inchisa.

Cele doua tipuri de formate pot fi folosite impreuna, adica putem indica intre parantezele rotunde o parte din parametri prin numele lor, iar restul prin declaratiile lor. Se recomanda utilizarea formatului in care toate declaratiile parametrilor sunt incluse intre paranteze.

2. Pentru functia principala se pot utiliza antetele:

Primele doua antete presupun ca functia principala main returneaza o valoare intreaga la revenirea din ea in sistemul de operare.

In trecut se obisnuia folosirea formatului fara tip: main().

Ultimele recomandari impun precizarea tipului pentru functia main, de exemplu: int main().

Functia main poate avea si parametri. Cand sunt prezenti, acestia permit utilizarea de catre program a unor valori definite la lansarea programului.

1.5. Comentariu