You are on page 1of 4

Elemente de baz ale programrii n C - Aplicaii de Laborator

Laborator nr. 7
Argumente de funcii prin referin sau prin valoare.
Funcii recursive

7.1.

Funcii

O funcie reprezint o parte denumita a programului care poate fi utilizat n alte pri ale
programului de cte ori este necesar.
Scrierea unei funcii este de forma urmtoare:
tip nume (lista parametrilor)
{
declaraii de variabile locale
instruciuni
}
unde:
- tip definete tipul valorii returnate de funcie i este un cuvnt cheie pentru tipurile
debaz. Dac funcia nu returneaz nici o valoare, se poate utiliza cuvntul cheie void. Dac
tipeste absent, se presupune c funcia sau nu returneaz nici o valoare sau returneaz o
valoarede tip int. ;
- lista_parametrilor este fie vid, fie conine declaraiile parametrilor separate prin
virgul;
-parantezele rotunde sunt prezente chiar i atunci cnd lista parametrilor este vid;
- declaraiile de variabile locale i instruciuni reprezint corpul funciei i se
delimiteaz ntre acolade.

7.2.

Exemple de probleme

Problema 7.1.
//programul 1 de utilizare a unei funcii
#include <stdio.h>
voidfunctia1 (void)
{
printf("\n Ce prere avei de funcia1?\n ");
}
Problema 7.2.

56
MatrixRom 2013

ISBN: 978-973-755-897-8

Elemente de baz ale programrii n C - Aplicaii de Laborator

//programul 2 de utilizare a unei funcii


#include <stdio.h>
void functia1 (void)
{
printf("\n Ce prere avei de funcia1?\n ");
}
void main(void)
{
functia1();
}
Problema 7.3.
//programul 3 de utilizare a unei funcii
#include <stdio.h>
void functia1 (void)
{
printf("\n Ce prere avei de funcia1?\n ");
}
void main(void)
{
printf("\n Utilizai funcia1 in program\n ");
functia1();
printf("\n S-a terminat programul\n ");
}

7.3.

Argumente de funcii prin referin sau prin valoare

Variabilele declarate n interiorul unei funcie sau ntr-un bloc de program pot fi folosite
doar n acea funciei sau acel blocul.
Exista i posibilitatea declarrii unor variabile de tip global, acestea putnd fi utilizate n
oricare instruciune din codul unui program, inclusiv n interiorul sau exteriorul oricrei funcii.
Pentru ca o variabil s fi global, ea trebuie declarata direct n corpul programului.

7.4.

Exemple de probleme

Problema 7.4.
//exemplu de variabil ntr-o funcie
#include <stdio.h>
void saluturi(void)
{
int contor; // Variabila
for(contor=1;contor<=5;contor++)
printf (Salut grupa de studenti!\n);
}
57
MatrixRom 2013

ISBN: 978-973-755-897-8

Elemente de baz ale programrii n C - Aplicaii de Laborator

void main(void)
{
saluturi();
}
Problema 7.5.
/* Exemplu de variabile globale */
#include <stdio.h>
addition( void );
/* ANSI function prototype */
/* Acestea sunt variabile globale si pot fi accesate oriunde in program, incepand cu acest
punct*/
int A, B;
addition( void )
{
int r;
r = A + B;
return r;
}
main()
{
int r;
A= 10;
B = 20;
r = addition();
printf("The sum of %d + %dis%d\n", A, B, r);
}

7.5.

Funcii recursive

Prin recursivitatea se nelege procesul, fenomenul etc. ce se definete prin el nsui. Din
matematic avem ca exemple: progresiile aritmetice, progresiile geometrice, irul lui Fibonacci,
combinaiile binomiale, unde un termen al irului e definit printr-o relaie n raport cu termenii
anteriori.

7.6.

Exemplu de problem

Problema 7.5.
/* Exemplu de calcul al lui n! */
# include <stdio.h>
factorial (int n)
{
if(n <= 1)
return 1;
58
MatrixRom 2013

ISBN: 978-973-755-897-8

Elemente de baz ale programrii n C - Aplicaii de Laborator

return n * factorial(n 1);


}
void main(void)
{
int x = 5;
printf(factorial de %d este %d, x, factorial(x));
}

7.7.
7.7.1.
7.7.2.
7.7.3.
7.7.4.
7.7.5.
7.7.6.

Probleme

Ce reprezint o funcie?
Care sunt tipurile de variabile?
Care este diferena dintre tipurile de variabile?
Ce este o funcie recursiv?
Concepei un program care s calculeze n! folosind funcii recursive.
Scriei un program care s calculezi , .

59
MatrixRom 2013

ISBN: 978-973-755-897-8

You might also like