Sunteți pe pagina 1din 2

Şef lucrări dr. ing. Morariu-Gligor Radu PUC – Laborator nr.

10 - 12 1/2
Laborator nr. 10 ÷ 12 - Funcţii

Forma generală a unei funcţii în limbajul C B. Funcţii care nu returnează valori dar au
este: parametrii:
exemplu: funcţie care afişează un număr impus de
tip nume_functie (lista parametrilor formali) steluţe
{ void stea(int n)
corp { int i; for(i=1;i<=n;i++) printf(“*”);
} }
apelul funcţiei având forma:
unde: stea(5);
- tip reprezintă tipul valorii returnate de funcţie, rezultatul fiind afişarea pe ecran a 5 stele:
poate fi void dacă nu se returnează nici o valoare *****
sau unul din tipurile de date predefinite (int, float,
double, …) sau definite de utilizator. În situaţia în C. Funcţii care returnează valori dar nu au
care funcţia returnează o valoare, pentru aceasta în parametri
corpul funcţiei se va folosi instrucţiunea return exemplu: funcţie care citeşte un număr strict
urmată de o expresie (a cărei valoare finală va fi pozitiv
valoarea returnată); int citstrpoz(void)
- nume_functie reprezintă numele funcţiei; { int a;
- lista_parametrilor_formali reprezintă o înşiruire do{ printf(“\n Introduceti un numar:”)
de tipuri de date urmate de numele parametrilor scanf (“%d”,&a);
formali; } while(a<=0);
Transferul datelor între funcţia care face return a;
apelul (funcţie apelantă) şi funcţia utilizată (funcţia }
apelată) se realizează prin două feluri: apelul funcţiei având forma:
- transfer prin valoare: valorile n = citstrpoz();
parametrilor efectivi se transferă rezultatul fiind secvenţa următoare:
parametrilor formali care se găsesc pe Introduceti un numar: -5
poziţii similare în lista parametrilor; Introduceti un numar: 5
- transfer prin referinţă: parametrii efectivi (deoarece s-a introdus un număr strict pozitiv, n
au ca valori adrese de memorie, parametri primeşte valoarea introdusă corect, adică n = 5)
formali de pe poziţiile corespunzătoare
fiind pointeri. D. Funcţii care returnează valori şi au
Din punct de vedere al existentei valorii parametri
returnate sau a listei_parametrilor_formali se pot exemplu: funcţie care citeşte un număr mai mare
întâlni 4 categorii de funcţii: decât o valoare impusă
int maimare(int a)
A. Funcţii care nu returnează valori şi nu { int b;
au parametrii: do{ printf(“\n Introduceti un numar:”)
exemplu: funcţie care afişează un text predefinit scanf (“%d”,&b);
void antet(void) } while(b<=a);
{printf(“ UNIVERSITATEA TEHNICǍ”); return b;
printf(“ B-dul Muncii nr. 103 – 105”); }
} apelul funcţiei având forma:
apelul funcţiei având forma: a = maimare(0); sau
antet(); b = maimare(a);
rezultatul fiind afişarea pe ecran a textului:

UNIVERSITATEA TEHNICǍ
B-dul Muncii nr. 103 – 105
Şef lucrări dr. ing. Morariu-Gligor Radu PUC – Laborator nr. 10 - 12 2/2

Program exemplu: Să se calculeze valorile funcţiei y = f(x) = 3x2 + 5x + 7, x  [a, b] , parcurs cu pasul h.
Rezolvare: Se vor construi trei funcţii: o funcţie care citeşte o valoare mai mare decât o valoare impusă, o funcţie care citeşte o
valoare mai mică decât o valoare impusă şi o funcţie pentru calculul valorii lui y.
Funcţiile create vor fi salvate în directorul curent într-un fişier: exfunc.h. Acest fişier va fi inclus în program cu ajutorul directivei
preprocesor #include.
// fişierul exfunc.h Programul va avea următoarea formă:
float maimare(float a)
{ float b; #include<stdio.h>
do { printf("\n Introduceti o valoare:"); #include<conio.h>
scanf("%f",&b); #include"exfunc.h"
} while(b<=a); main(void)
return b; { float a,b,h,x,y;
} printf("\n Introduceti a:");scanf("%f",&a);
printf("\n Introduceti b:");
float maimic(float a)
b=maimare(a);
{ float b;
printf("\n Introduceti h:");
do { printf("\n Introduceti o valoare:");
h=maimic(b-a);
scanf("%f",&b);
for(x=a;x<=b;x+=h)
} while(b>=a);
{ y=f(x); printf("\n f( %f ) = %f",x,y); }
return b;
getch();
}
}
float f(float x)
{ return 3*x*x+5*x+7;}

Teme propuse:
1. Să se întocmească un program care realizează următoarele: citeşte un număr strict pozitiv n, citeşte un şir cu
“n”elemente întregi, afişează şirul citit, calculează suma elementelor şirului, afişează suma.
2. Să se întocmească un program care realizează următoarele: citeşte două valori strict pozitive: m şi n, citeşte o matrice
cu m linii şi n coloane, afişează matricea citită, calculează produsul elementelor strict pozitive ale matricei, afişează
produsul.
3. Să se întocmească un program care realizează următoarele: citeşte trei valori strict pozitive de la tastatură, verifică
dacă cele trei valori pot fi laturile unui triunghi, dacă da, atunci se verifică dacă tringhiul este dreptunghic (se vor afişa
mesaje corespunzătoare).
4. Să se întocmească un program care realizează următoarele: citeşte un număr întreg (strict pozitiv) de la tastatură,
formează un şir cu cifrele numărului, determină şi afişează numărul cel mai mare care poate fi scris cu aceste cifre.
5. Calculaţi valorile funcţiilor:
 x 2  2 x  3 daca x  1
 x  8 daca x  1 
y  2  x3  4  x 2  6  x  9; y 2 ; y  x  8 daca  1  x  1
 x  2 x  3 daca x  1  x 3  6 x  8 daca x  1

pentru valori a lui x[a, b], parcurs cu pasul h.
6. Elaboraţi un program pentru rezolvarea ecuaţiei de gradul al doilea a  x 2  b  x  c  0 .
7. Să se scrie un program care realizează citirea de la tastură a unei, apoi a unui caracter (operator) şi din nou a unei
valori. Pe baza operatorului introdus, programul va realiza operaţia specificată prin operator.
Exemplu: Se introduce: 3 * 4, iar programul va afişa: 3 * 4 = 12.
8. Se consideră un şir de numere reale, cu maxim 30 de elemente. Se cere să se calculeze produsul elementelor strict
pozitive ale şirului, precum şi media aritmetică a elementelor divizibile cu 3.
9. Se consideră un şir de numere întregi, cu maxim 20 de elemente. Se cere să se scrie un program C pentru
determinarea numărului de apariţii a valorii “b” în şirul dat.
x x3 x5 x 7
10. Se consideră dezvoltarea: sin( x)      ... . Se cere să se determine şi să se afişeze valoarea
1! 3! 5! 7!
aproximativă calculată pentru n termeni şi să se compare valoarea obţinută cu valoarea calculată a funcţiei sinus cu
ajutorul funcţiei de bibliotecă.
Succes!!!!!

S-ar putea să vă placă și