Documente Academic
Documente Profesional
Documente Cultură
Functii
Exista, de exemplu, o functie sqrt care calculeaza radacina patrata a unui numar dat.
-4 abs 4 in stdlib.h
argument valoare returnata
de tip int de tip int
rand 11 in stdlib.h
fara valoare returnata
argumente de tip int
1) exemplu1.C
#include<math.h>
#include<stdio.h>
2) exemplu2.C
#include<math.h>
#include<stdio.h>
va afisa 1.000000
const double pi = 3.1415926535;
main( )
{
double x = pi/2;
double y = sin(x);
printf("%f\n",y);
}
3) exemplu3.C
#include<stdlib.h>
#include<stdio.h> |x|=1
va afisa
|y|=4
main( )
{
int x=1, y=-4;
printf("|x|=%d\n", abs(x));
printf("|y|=%d\n", abs(y));
}
4) exemplu4.C
#include<stdlib.h>
#include<stdio.h>
main( )
{ tipareste zece numere intregi generate
int i; aleator.
for(i = 1; i <=1 0; i ++)
printf("%d\n", rand( ));
}
Exercitiu: Scrieti un program care sa genereze zece numere aleatoare intre 0 si 1 (cu
valorile 0 si 1 inclusiv).
Pana acum am vazut cum putem folosi functii predefinite. Este randul nostru
sa scriem functii. Sa incepem cu un exemplu. Vrem sa scriem o functie care primeste
doua date de intrare de tip int, sa zicem m si n, si returneaza valoarea lui mn. O vom
numi functia putere. Prototipul acestei functii va fi deci:
Deci definitia unei functii este cea care precizeaza instructiunile pe care calculatorul
trebuie sa le efectueze astfel incat functia saproduca rezultatul dorit. Aceste
instructiuni alcatuiesc corpul functiei. Corpul functiei poate contine orice instructiune
C.
O instructiune return are sintaxa:
return expresie;
Prezentam intregul program care va calcula toate puterile lui 2 pana la 210.
puteri.C
#include <stdio.h>
main()
{
int i;
for(i=0; i<=10; i++)
printf("2^%d = %d\n", i, putere(2, i));
}
main( )
{
int x = 3, y = 5;
int z = f(x,y);
printf("%d %d %d\n",x, y, z);
}
Si totusi uneori dorim ca o functie sa poata modifica valoarea unui argument.
Nu putem face asta in C? Rapunsul este pozitiv. Aceasta se poate face prin
intermediul pointerilor care vor fi studiati in capitolul 7.
int f(int c)
{
const int TVA = 19;
...
}
main( )
{
const double TVA = 3.5;
...
}
#include <stdio.h>
void f(int x)
{
suma += x;
}
1
main() va afisa 4
{
6
int i;
for(i=1; i<=2; i++)
{
f(i);
printf("%d\n", suma);
suma += i;
}
printf("%d\n",suma);
}
In C se pot defini si constante globale care pot fi folosite de orice functie, dar evident
nu pot fi modificate de nici o functie. De exemplu programul urmator afiseaza aria si
lungimea cercului.
cerc2.C
#include <stdio.h>
#include <stdio.h>
#include <math.h>
main()
{
int a = 9, b = 16, c = 25;
if( f(a,b,c) )
{ printf( "true\n" );
printf("%d %d %d\n", a, b, c );
}
else
{ printf( "false\n" );
printf("%d %d %d\n", c ,b ,a );
}
a = 9; b = 16; c = 25;
if( f(b,c,a) )
{ printf( "true\n" );
printf("%d %d %d\n", b ,c ,a );
}
else
{ printf( "false\n" );
printf("%d %d %d\n", a ,c ,b );
}
a = 9; b = 16; c = 25;
if( f(a,b,b) )
{ printf( "true\n" );
printf("%d %d %d\n", c ,a ,b );
}
else
{ printf( "false\n" );
printf("%d %d %d\n", b ,a ,c );
}
}
#include <stdio.h>
// aici se scrie prototipul functiei maxmin
main()
{
int n, max, min;
scanf("%d", &n);
maxmin(n);
}
// aici se scrie definitia functiei maxmin
3. Scrieti o functie care calculeaza suma cifrelor unui numar dat n. Includeti
functia intr-un program si testati-o.
6. Scrieti o functie care evalueaza semnul unui intreg dat. Functia returneaza 1
daca intregul este > 0, 0 daca intregul este egal cu 0 si –1 daca intregul este
< 0. Includeti functia intr-un program si testati-o.
7. Un numar intreg pozitiv este perfect daca suma divizorilor sai mai mici decat
el (inclusiv 1) este egala cu numarul dat (de exemplu: 6 = 1 + 2 + 3, 28 = 1 + 2
+ 4 + 7 + 14). Scrieti o functie care returneaza 1 daca un numar intreg pozitiv
este perfect si 0 daca nu. Includeti functia intr-un program si testati-o.
8. Scrieti o functie pentru calculul lui xy unde x, y sunt numere reale. Folositi
formula xy = e yln x.
9. Scrieti o functie cmmdc care returneaza cel mai mic divizor comun a doi
intregi pozitivi m si n folosind algoritmul lui Euclid:
1) Imparte m la n. Fie r restul impartirii.
2) Daca r = 0 atunci STOP. Rezultatul este n.
3) Altfel, atribuie lui m si n valorile m = n, n = r. Reia pasul 1.
Scrieti un program care citeste un numar arbitrar de perechi de numere intregi
pozitive si scrie cmmdc al fiecarei perechi.
10. Folosind functia din problema 9, scrieti o functie care calculeaza cmmdc a trei
numere intregi pozitive. Generalizati pentru n numere intregi pozitive unde n
este introdus de la tastatura, iar cele n numere se citesc de la tastatura in
functia care trebuie scrisa.
Bibliografie recomandata: