Jump to content
Facebook Twitter Youtube

[Tutorial] Notiunea de subprogram. Structura unei functii


Recommended Posts

Un subprogram este un ansamblu alcatuit din tipuri de date, variabile si instructiuni care rezolva o anumita sarcina si care poate fi utilizat doar daca este apelat de un program sau de un alt subprogram.

In limbajul C, subprogramele sunt de tip functie. Exista trei elemente implicate in utlizarea unui subprogram:

- Prototipul subprogramului

- Definitia subprogramului

- Apelul subprogramului

Subprogramul nu este o entitate independenta. El trebuie "asamblat" in interiorul programului, trebuie stabilite legaturi intre modulul apelat si cel apelant. In procesul de prelucrare dintr-un subprogram, sunt necesare date care trebuie prelucrate (date de intrare) pentru obtinerea rezultatului dorit sau date care trebuie prelucrate in vederea modificarii valorilor acestora (date de iesire). In concluzie, functiile comunica prin intermediul argumentelor (a parametrlor); ele primesc ca parametri (argumente) datele de intrare, efectueaza prelucrarile descrise in corpul functiei asupra acestora si pot returna o valoare (rezultatul, datele de iesire). Executia programului incepe cu functia principala, numita main. Functiile pot fi descrise in cadrul aceluiasi fisier, sau in fisiere diferite, care sunt testate si compilate separat, asamblarea lor ralizandu-se cu ajutorul linkeditorului de lagaturi.

O functie este for[CENSORED] din antet si corp:

antet_functie

{

corp_functie

}

Sau:

tip_valoare_returnata nume_functie(lista_daclaratii_parametri_formali)

{

declaratii_variabile_locale

instructiuni

return expresie

}

Prima linie reprezinta antetul functiei, in care se indica: tipul functiei, numele functiei si lista declaratiilor rparametrilor formali. Antetul specifica inceputul subprogramului. La fel ca un operand sau o expresie, o functie are un tip, care precizeaza tipul valorii returnate de functie in functia apelanta. Daca functia nu intoarce nici o valoare, in locul tip_valoare_returnata se specifica void. Daca tip_valoare_returnata lipseste, se considera, implicit, ca acesta este int.Nume_functie este un identificator.

Lista_declaratii_parametri_formali consta intr-o 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, in antet, dupa numele functiei, apar doar parantezele (), sau (void).

Corpul functiei este un bloc, care implementeaza algoritmul de calcul folosit de catre functie. La fel ca orice bloc C, el este incapsulat intr-o instructiune compusa, delimitat de caracterele {......}, si este alcatuit din doua parti: partea declarativa si partea executabila, care contine instructiunile prin care sunt descrise actiunile realizate de functie. In corpul functiei apar (in orice ordine) declaratii pentru variabilele locale si instructiuni. Daca functia intoarce o valoare, se foloseste instructiunea return valoare.

In limbajul C, se utilizeaza declaratii si definitii de functii.

Orice functie trebuie declarata si definita

Declaratia contine antetul functiei si informeaza compilatorul asupra tipului, numelui functiei si a listei parametrilor formali (in 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 in corpul altei functii.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

WHO WE ARE?

CsBlackDevil Community [www.csblackdevil.com], a virtual world from May 1, 2012, which continues to grow in the gaming world. CSBD has over 70k members in continuous expansion, coming from different parts of the world.

 

 

Important Links