Functia este un concept important in
matematica si programare. In limbajul C prelucrarile sunt organizate ca
o ierarhie de apeluri de functii. Orice program trebuie sa contina cel
putin o functie, functia main.
Functiile incapsuleaza prelucrari bine precizate si pot fi reutilizate in mai multe programe.
Pentru a putea fi utilizata intr-un program, o functie trebuie sa fie definita ( sau declarata ) si apelata.
Definitia
unei functii are urmatoarea forma:
| tip_rezultat_returnat nume_functie
(lista_parametri_formali){ /*antetul
functiei*/
definirea variabilelor locale prelucrari /* instructiuni */ } /* intre { } corpul functiei */ |
Functiile nu pot fi definite incuibat ( ca in Pascal ).
Daca functia nu returneaza nici un rezultat si
nu primeste parametri, definitia va fi:
| void nume_functie (void) /*antetul
functiei*/
definirea variabilelor locale prelucrari /* instructiuni */ } /* intre { } corpul functiei */ |
O functie void fara parametri poate prelucra variabilele globale si cele locale.
Declaratia unei functii are se face
prin precizarea prototipului functiei:
| antet; |
| int nume_functie(void); |
Apelul
unei functii:
| nume_functie(lista_parametri_actuali) /* poate apare ca operand intr-o expresie, daca functia returneaza un rezultat */ |
La apelul unei functii, se executa corpul sau,
dupa care se revine in functia apelanta, la instructiunea urmatoare apelului.
O functie poate fi apelata, daca in fata apelului
exista definitia sau cel putin declaratia functiei.
In cazul functiilor void fara parametri, apelul
se face prin:
| nume_functie(); //instructiune expresie |
Exemple:
1. Sa se tipareasca pe ecran un mesaj de inceput
si unul de sfarsit, separate de 15 linii de '*'. Fiecare linie va fi tiparita
de o functie void fara parametri.
| #include <stdio.h>
#include <conio.h> void salut(void); /* prototipuri */
void main(void){
void salut(void){
void linie(void){ // tipareste o linie de *
void linii(void){ // apeleaza linie de nr_linii ori
void terminare(void){
|
2. Sa se calculeze si sa se afiseze valoarea
expresiei (a-m)n/(n-a)m, a,m,n fiind cititi de la
tastatura, astfel incat intregii m,n sa fie pozitivi, iar realul a diferit
de n. Citirea, calculul si afisarea vor fi concepute ca functii.
| #include <stdio.h>
float a,expr; int m,n; /* variabile globale */ void citire(void); /* citeste cu validare a,m,n */
void main(void){
void citire(void){
void tiparire(void){
void prelucrare(void){
|