Documente Academic
Documente Profesional
Documente Cultură
Programarea calculatoarelor
Lect.dr. Adrian Runceanu
Curs 11
02.12.2012
Programarea calculatoarelor
Capitolul 9.Functii
9.1. Declararea funciei 9.2. Apelul funciei 9.3. Prototipul funciei 9.4. Parametri formali i actuali 9.5. Variabile locale i variabile globale 9.6. Variabile statice i variabile automatice 9.7. Funcii matematice
02.12.2012
Programarea calculatoarelor
n limbajul C/C++, una din cele mai importante faciliti o constituie folosirea funciilor. De fapt, funciile reprezint locul unde sunt scrise i executate instruciunile oricrui program. Definiie: O funcie n C/C++ este o construcie independent care conine declaraii i instruciuni i care realizeaz o anumit aciune.
02.12.2012
Programarea calculatoarelor
Pentru a construi i folosi o funcie trebuie s cunoatem trei elemente care sunt implicate n utilizarea funciilor:
02.12.2012
Programarea calculatoarelor
02.12.2012
Programarea calculatoarelor
tip nume_funcie(void)
02.12.2012 Programarea calculatoarelor 8
Capitolul 9. Functii
9.1. Declararea funciei 9.2. Apelul funciei 9.3. Prototipul funciei 9.4. Parametri formali i actuali 9.5. Variabile locale i variabile globale 9.6. Variabile statice i variabile automatice 9.7. Funcii matematice
02.12.2012
Programarea calculatoarelor
Capitolul 9. Functii
9.1. Declararea funciei 9.2. Apelul funciei 9.3. Prototipul funciei 9.4. Parametri formali i actuali 9.5. Variabile locale i variabile globale 9.6. Variabile statice i variabile automatice 9.7. Funcii matematice
02.12.2012
Programarea calculatoarelor
11
02.12.2012
Programarea calculatoarelor
16
02.12.2012
Programarea calculatoarelor
19
int vrsta_angajat = 34; float salariu_angajat = 4500.00; int numr_cod = 101; info_angajat(vrsta_angajat, salariu_angajat, numr_cod);
02.12.2012
Programarea calculatoarelor
22
02.12.2012
Programarea calculatoarelor
24
2. variabile globale
02.12.2012
Programarea calculatoarelor
25
02.12.2012
Programarea calculatoarelor
26
02.12.2012
Programarea calculatoarelor
29
02.12.2012
Programarea calculatoarelor
33
02.12.2012
Programarea calculatoarelor
35
#include <iostream.h> int a = 10, b = 20, c = 30; // variabile globale void valoarea_lui_a(void) { int a = 100; cout<<"variabila a contine "<<a<<"variabila b contine "<<b<<"variabila c contine "<<c<<"\n"; }
02.12.2012 Programarea calculatoarelor 37
02.12.2012
Se observ c numele variabilei globale intr n conflict cu cel al variabilei locale i atunci compilatorul C++, va folosi ntotdeauna variabila local. Deci, n funcie, se va afia valoarea modificat a variabilei a i nu cea iniial, care a fost declarat global la nceputul programului.
Programarea calculatoarelor 39
02.12.2012
Programarea calculatoarelor
40
Din punctul de vedere al locului n care sunt alocate variabilele i al locului alocrii avem:
1. variabile automatice (auto) 2. variabile statice
02.12.2012
Programarea calculatoarelor
41
1. Variabilele automatice se aloc n regitrii de stare sau pe stiv i sunt disponibile numai n locul n care s-a fcut alocarea (ele se aloc la execuie) 2. Variabilele statice se aloc n zona de date a programului la ncrcarea programului n memorie. Ele sunt disponibile pe toat durata de existen a programului n memorie.
02.12.2012 Programarea calculatoarelor 42
Registers
43
Acum putem specifica pentru fiecare zon, variabilele i parametrii care se aloc acolo: n zona stiv se aloc: variabilele locale automatice parametrii funciilor adresa de retur a funciei variabilele temporare necesare evalurii expresiilor
02.12.2012 Programarea calculatoarelor 44
n zona de date se aloc: variabilele globale iruri iniializate i constante variabilele locale statice
02.12.2012
Programarea calculatoarelor
45
02.12.2012
Programarea calculatoarelor
46
n limbajul C++, variabilele care se declar n cadrul funciei sunt adesea numite i automatice, deoarece compilatorul C/C++ le creeaz automat cnd ncepe execuia funciei i apoi le distruge cnd ea se ncheie.
Aceast caracteristic a variabilelor se explic prin faptul c variabilele funciilor sunt pstrate de compilator temporar n stiv.
02.12.2012 Programarea calculatoarelor 47
Ca urmare, funcia atribuie o valoare unei variabile n timpul unei apelri, dar variabila pierde valorile dup ce funcia se ncheie. La urmtoarea apelare a funciei, valoarea variabilei este din nou nedefinit. n funcie de procesele executate de funcia respectiv, este posibil ca variabilele funciei s memoreze ultima valoare care le-a fost atribuit n cadrul funciei.
02.12.2012 Programarea calculatoarelor 48
02.12.2012
Programarea calculatoarelor
50
Urmtorul program ilustreaz folosirea unei variabile statice, astfel nct de fiecare dat cnd funcia este apelat se va afia o valoare cu o unitate mai mare dect precedenta datorit folosirii variabilei statice id_student:
02.12.2012
Programarea calculatoarelor
51
52
02.12.2012
Programarea calculatoarelor
54
02.12.2012
Programarea calculatoarelor
57
Funcia ceil() se folosete atunci cnd se dorete s se rotunjeasc valoarea unei variabile sau a unei expresii, nlocuind-o cu valoarea ntreag imediat urmtoare. Funcia floor() se folosete atunci cnd se dorete s se rotunjeasc valoarea unei variabile sau a unei expresii, nlocuind-o cu valoarea ntreag imediat anterioar.
02.12.2012 Programarea calculatoarelor 58
Valoarea 1.900000 rotunjita cu functia ceil() este 2.000000 Valoarea 2.100000 rotunjita cu functia ceil() este 3.000000 Valoarea 1.900000 rotunjita cu functia floor() este 1.000000 Valoarea 2.100000 rotunjita cu functia floor() este 2.000000
02.12.2012
Programarea calculatoarelor
60
sinus sin() cosinus cos() sinusul hiperbolic sinh() cosinusul hiberbolic cosh() tangenta tan() tangenta hiperbolic tanh() arcsinus asin() arccosinus acos() arctangenta atan()
Programarea calculatoarelor 61
62
02.12.2012
Programarea calculatoarelor
64
66
02.12.2012
Programarea calculatoarelor
68
ntrebri?
02.12.2012
Programarea calculatoarelor
72