Sunteți pe pagina 1din 11

Elemente de baz ale limbajului C++ Structuri de control n limbajul C

Prin structuri de control nelegem instruciunile limbajului i funciile specifice menite s controleze modul de execuie al programelor. Limbajul C a fost prevzut cu instruciuni menite s permit realizarea simpl a structurilor proprii programrii structurate. Structura secvenial se realizeaz cu ajutorul instruciunii compuse, structura alternativ cu ajutorul instruciunii if, structura repetitiv condiionat anterior, prin intermediul instruciunilor while i for, structura selectiv cu ajutorul instruciunii switch, iar structura repetitiv condiionat posterior cu ajutorul instruciunii do-while. Limbajul C are i alte instruciuni care reprezint elemente de baz n construirea structurilor amintite mai sus. Astfel de instruciuni sunt : instruciunea expresie i instruciunea vid. Alte instruciuni prezente n limbaj asigur o flexibilitate mai mare n programare. Acestea sunt instruciunile: return, break, continue i goto .

1. Instruciunea vid
Se reduce la punct i virgul (;). Ea nu are nici un efect. Instruciunea vid se utilizeaz n construcii care cer prezena unei instruciuni, dar nu trebuie s se execute nimic n punctul respectiv. Astfel de situaii apar frecvent n cadrul structurii alternative i repetitive, aa cum se va vedea n continuare.

2. Instruciunea expresie
Se obine scriind punct i virgul dup o expresie. Deci, instruciunea expresie are sintax a : expresie ; n cazul n care expresia din compunerea unei instruciuni expresie este o expresie de atribuire, se spune c instruciunea respectiv este o instruciune de atribuire. Un alt caz frecvent utilizat este acela cnd expresia este un operand ce reprezint apelul unei funcii. n acest caz, instruciunea expresie este o instruciune de apel a funciei respective. Exemplul 1: int x; x=10; Este o instruciune de atribuire, variabilei x i se atribuie valoarea 10. Exemplul 2: double y; y=y+4; sau y+=4; Este o instruciune de atribuire, care mrete valoarea lui y cu 4.

3. Instruciunea compus
Instruciunea compus este o succesiune de instruciuni incluse ntre acolade, succesiune care poate fi precedat i de declaraii : { declaraii instruciuni } Dac declaraiile sunt prezente, atunci ele definesc variabile care sunt definite att timp ct controlul programului se afl la o instruciune din compunerea instruciunii compuse. Exemplu : Presupunem c ntr-un anumit punct al programului este necesar s se permute valorile variabilelor ntregi a i b. Aceasta se poate realiza astfel : { int t; t=a;a=b;b=t; } Variabila t este definit din momentul n care controlul programului ajunge la prima instruciune din instruciunea compus (t=a;). Dup execuia ultimei instruciuni a instruciunii compuse, variabila t nu mai este definit (nu mai ocup memorie). Instruciunea compus se utilizeaz unde este necesar prezena unei instruciuni, dar procesul de calcul din punctul respectiv este mai complex i se exprim prin mai multe instruciuni. n acest caz instruciunile respective se includ ntre acolade pentru a forma o instruciune compus. Acest procedeu de a forma o instruciune compus din mai multe instruciuni se utilizeaz frecvent n construirea structurilor alternative i ciclice.

4. Instruciunea if
Are urmtoarele formate : format1 : if(expresie) instruciune; format2: if(expresie) instruciune1; else instruciune2; La ntlnirea instruciunii if nti se evalueaz expresia din paranteze. Apoi, n cazul formatului 1, dac expresia are valoarea diferit de zero (adic true) se execut instruciune, altfel se trece n secven la instruciunea urmtoare instruciunii if. n cazul formatului 2, dac expresia are o valoare diferit de zero, atunci se execut instruciune1 i apoi se trece n secven la instruciunea aflat dup instruciune2, altfel (condiia este zero, adic false) se execut instruciune2. n mod normal, n ambele formate, dup execuia instruciunii if se ajunge la instruciunea urmtoare ei. Cu toate acestea, este posibil i o alt situaie cnd instruciunil e din compunerea lui if definesc ele nsele un alt mod de continuare a execuiei programului. Deoarece o instruciune compus este considerat ca fiind un caz particular de instruciune, rezult c instruciunile din compunerea lui if pot fi instruciuni compuse. De asemenea, instruciunile respective pot fi chiar instruciuni if. n acest caz se spune c instruciunile if sunt imbricate. 2 Exemplul 1: Se d funcia : y=3x +2x-10, pentru x>0 i y=5x+10, pentru x<=0. S se scrie un program care citete valoarea lui x i afieaz valoarea lui y. #include<iostream.h> Int main() { float x,y; cin>>x; if(x>0) y=3*x*x+2*x-10; else y=5*x+10; cout<<x<<y; return 0; } Exemplul 2: S se scrie un program care citete valoarea lui x, calculeaz i afieaz valoarea lui y definit ca mai jos : 3 2 y=4x +5x -2x+1 , pentru x<0 y=100 , pentru x=0 2 y=2x +8x-1 , pentru x>0 #include<iostream.h> int main() { float x,y,a; cin>>x; a=x*x; if(x<0) y=4*x*a+5*a-2*x+1; else if(!x) y=100; else y=2*a+8*x-1; cout<<x<<y; return 0;} Exemplul 3: S se scrie un program care citete valorile variabilelor nentregi a i b, calculeaz rdcina ecuaiei : ax+b=0 i afieaz rezultatul. #include<iostream.h> int main() { double a,b; if(a) cout<<-b/a; else

if(!b) cout<<"ecuatie nedeterminata\n"; else cout<<"ecuatia nu are solutie\n"; return 0 ; }

5. Funcia standard exit


Funcia exit are prototipul : void exit(int cod); i el se afl n fiierele header stdlib.h i process.h. La apelul acestei funcii au loc urmtoarele aciuni: se videaz zonele tampon (bufferele) ale fiierele deschise n scriere se nchid toate fiierele deschise se ntrerupe execuia programului Parametrul acestei funcii definete starea programului la momentul apelului. Valoarea 0 definete o terminare normal a execuiei programului, iar o valoare diferit de 0 semnaleaz prezena unei erori (terminarea anormal a execuiei programului). n concluzie, putem apela funcia exit pentru a termina execuia unui program, indiferent de faptul c acesta se termin normal sau din cauza unei erori.

6. Instruciunea while
Are sintaxa : while(expresie) instruciune; Prima parte din acest format constituie antetul instruciun ii while, iar instruciune este corpul ei. La ntlnirea acestei instruciuni nti se evalueaz expresia din paranteze. Dac ea are valoarea true (este diferit de 0), atunci se execut instruciune. Apoi se revine la punctul n care se evalueaz din nou valoarea expresiei din paranteze. n felul acesta, corpul ciclului se execut att timp ct expresia din antetul ei este diferit de 0. n momentul n care expresie are valoarea 0, se trece la instruciunea urmtoare instruciunii while. Corpul instruciunii while poate s nu se execute niciodat. ntr-adevr dac expresie are valoarea 0 de la nceput, atunci se trece la instruciunea urmtoare instruciunii while fr a executa niciodat corpul instruciunii respective. Corpul instruciunii while este o singur instruciune care poate fi compus. n felul acesta avem posibilitatea s executm repetat mai multe instruciuni grupate ntr-o instruciune compus. Corpul instruciunii while poate fi o alt instruciune while sau s fie o instruciune compus care s conin instruciunea while. n acest caz se spune c instruciunile while respective sunt imbricate. Instruciunile din corpul unei instruciuni while pot s defineasc un alt mod de execuie a instruciunii while dect cel indicat mai sus. Astfel, se poate realiza terminarea execuiei instruciunii while fr a se mai ajunge la evaluarea expresiei din antetul ei. De exemplu, dac n corpul unei instruciuni while se apeleaz funcia exit, atunci se va termina execuia ciclului while, deoarece se ntrerupe chiar execuia programului. Despre instruciunea while se spune c este o instruciune ciclic condiionat anterior. Exemplul 1: S se scrie un program care citete un ntreg n[0,170], calculeaz i afieaz pe n!. Avem: n!=1*2*3*..*n , pentru n >0 i 0!=1 , prin definiie. #include<iostream.h> #include<stdlib.h> int main() { int n,i; double f; //n! este o valoare f.mare care nu poate fi memorat //ntr-un ntreg cout<<"n=";cin>>n; //validarea datelor de intrare if(n<0 || n>170) { cout<<"n nu apartine intervalului [0,170]\n"; exit(1); } f=1.0; i=2; while(i<=n) f*=i++; cout<<n<<!=<<f; return 0; }

7. Instruciunea for
Instruciunea for, ca i instruciunea while, se utilizeaz pentru a realiza o structur repetitiv condiionat anterior. Are sintaxa : for(exp1 ; exp2 ; exp3) /* antet */ instruciune; /* corpul ciclului*/ unde exp1, exp2 i exp3 sunt expresii. Expresia exp1 se numete partea de iniializare a ciclului for, iar exp3 este partea de reiniializare a lui. Expresia exp2 este condiia de terminare a ciclului for i ea joac acelai rol cu expresia din ciclul while. Instruciunea for se execut astfel : Se execut secvena de iniializare definit de exp1 Se evalueaz exp2. Dac are o valoare diferit de 0 (este true), atunci se execut instruciunea care formeaz corpul ciclului. Altfel, (expresia are valoarea 0 adic false) se termin execuia instruciunii for i se trece la instruciunea urmtoare. Dup executarea corpului ciclului se execut secvena de reiniializare definit de exp3. Apoi se reia execuia de la pasul 2 . Ca i n cazul instruciunii while, instruciunea din corpul ciclului for nu se execut niciodat dac exp2 are valoarea 0 chiar de la nceput. Expresiile din antetul lui for pot fi i vide. Caracterele punct i virgul vor fi ntotdeauna prezente. n general, instruciunea for poate fi scris cu ajutorul unei secvene n care se utilizeaz instruciunea while astfel : exp1; while(exp2) { instruciune; exp3; } Aceast echivalare nu are loc ntr-un singur caz i anume atunci cnd, n corpul instruciunii se utilizeaz instruciunea continue. Reciproc, orice instruciune while poate fi scris cu ajutorul unei instruciuni for n care exp1 i exp3 sunt vide. Astfel, instruciunea while(exp) instruciune; este echivalent cu instruciunea for(; exp ;) instruciune; . O instruciune for de forma for(; ;) instruciune; este valid i este echivalent cu instruciunea : while(1) instruciune;. Un astfel de ciclu se poate termina prin alte mijloace dect cel obinuit, cum ar fi instruciunea de revenire dintr-o funcie, un salt la o etichet etc. Din cele de mai sus rezult echivalena celor dou cicluri while i for. Se recomand folosirea instruciunii for n ciclurile n care sunt prezente prile de iniializare i reiniializare, aa numitele cicluri cu pas. Exemplul 1: S se scrie un program care citete ntregul n din intervalul [0,170], calculeaz i afieaz pe n! . #include<iostream.h> #include<stdlib.h> int main() { int n,i; double f; //n! este o valoare f.mare care nu poate fi memorat //ntr-un ntreg cout<<n=;cin>>n; if(n<0 || n>170) { cout<<"n nu apartine intervalului [0,170]\n"; exit(1); } for(f=1.0,i=2;i<=n;i++) f*=i; cout<<n<<!=<<f; return 0; } Exemplul 2: Urmtorul program continu s cicleze pn cnd este tastat litera q. n loc s verifice variabila de control a ciclului, instruciunea for verific dac de la tastatur a fost introdus caracterul q. #include<stdio.h> int main() { int i; char ch; ch=a; for(i=0;ch!=q;i++)

cout<<pas: \n<<i; cin>>ch;

} return 0; } n acest caz, testul de condiie care controleaz ciclul nu are nimic n comun cu variabila de control a ciclului. Variabila ch a primit o valoare iniial pentru a ne asigura c ea nu conine accidental chiar litera q n momentul n care programul ncepe execuia.

8. Instruciunea do-while
Realizeaz structura ciclic condiionat posterior. Aceast instruciune poate fi realizat cu ajutorul celorlalte instruciuni definite pn n prezent. Cu toate acestea, prezena ei n limbaj mrete flexibilitatea n programare. Sintaxa ei este : do instruciune /* corpul ciclului */ while(expresie); Instruciunea se execut n felul urmtor : se execut instruciune, se evalueaz expresie; dac aceasta are o valoare diferit de 0 (true) atunci se revine la execuia instruciunii, altfel (expresia are valoarea 0) se trece n secven, la instruciunea urmtoare instruciunii do-while. Se observ c n cazul acestei instruciuni nti se execut instruciune i apoi se testeaz condiia de repetare a execuiei ei. Instruciunea do-while este echivalent cu secvena : instructiune; while(expresie) instruciune; n cazul instruciunii do-while corpul ciclului se execut cel puin o dat, spre deosebire de cazul instruciunii while i for, cnd este posibil s nu execute niciodat.

9. Instruciunea continue
Aceast instruciune se poate utiliza numai n corpul unui ciclu. Ea permite abandonarea iteraiei curente. Sintaxa ei este : continue;. Efectul instruciunii este urmtorul : a) n corpul instruciunilor while i do-while La ntlnirea instruciunii continue se abandoneaz iteraia curent i se trece la evaluarea expresiei care stabilete continuarea sau terminarea ciclului respectiv (expresia inclus ntre paranteze rotunde i care urmeaz dup cuvntul cheie while). b) n corpul instruciunii for La ntlnirea instruciunii continue se abandoneaz iteraia curent i se trece la execuia pasului de reiniializare. Instruciunea continue nu este obligatorie. Prezena ei mrete flexibilitatea n scrierea programelor C. Ea conduce adesea la diminuarea nivelurilor de imbricare ale instruciunilor if utilizate n corpul ciclurilor. Exemplul 1: Instruciunea continue este opus instruciunii break. Ea foreaz ca urmtoarea iteraie a ciclului s aib loc trecnd peste instruciunile dintre ea i testul de condiie. De exemplu, urmtorul program nu va afia nimic niciodat: #include<iostream.h> int main() { int x; for(x=0;x<100;x++) { continue; cout<<x; }return 0; } Instruciunea continue este folosit rareori, nu pentru c folosirea ei nu ar fi o practic bun, ci pentru c aplicaiile n care ar putea fi utilizat sunt mai rare.

10. Instruciunea break


Este nrudit cu instruciunea continue. Ea are formatul : break; Poate fi utilizat n corpul unui ciclu. n acest caz, la ntlnirea instruciunii break se termin execuia ciclului n al crui corp este inclus i execuia continu cu instruciunea urmtoare instruciunii ciclice respective. Aceast instruciune, la fel ca i instruciunea continue, mrete flexibilitatea la scrierea programelor n limbajele C i C++ .

Exemplul1: S se scrie un program care citete dou numere naturale i pozitive, calculeaz i afieaz cel mai mare divizor comun al lor. #include<iostream.h> #include<math.h> void main() { long m,n; long a,b; long r; do { cout<<"primul numar=");cin>>m cout<< al doilea numar=";cin>>n; } while(n*m==0); a=m; b=n; do // algoritmul lui Euclid prin impartiri repetate { r=a%b; if(r) { a=b; b=r;} }while(r); cout<<cmmdc=<<b; getch(); } Exemplul 2: Instruciunea break permite ieirea dintr-un ciclu, din oricare punct din interiorul su. Cnd instruciunea break este ntlnit n interiorul unui ciclu, acesta se va termina imediat, iar controlul va trece la instruciunea ce urmeaz dup ciclu. De exemplu, programul urmtor afieaz numai numerele de la 1 la 10. #include<stdio.h> #include<conio.h> int main() { int i; for(i=1;i<100;i++) { cout<<i; if(i==10) break; //oprirea forta a ciclului la i=10 } return 0; } Exemplul 3: Instruciunea break poate fi folosit cu oricare din cele trei cicluri ale limbajului. ntr -un ciclu pot exista oricte instruciuni break. n general, se recomand ca instruciunea break s fie utilizat pentru scopuri speciale i nu ca ieire normal din ciclu. Instruciun ea break este utilizat n cicluri n care o condiie special poate cauza oprirea imediat a ciclului. Spre exemplu, n programul urmtor, apsarea unei taste poate opri execuia programului: #include<iostream.h> int main() { int i; char ch; for(i=1;i<10000;i++) if(!(i%6)) { cout<<Mai doriti ? (Y/N): ; cin>>ch; if(ch==N) break; //oprirea ciclului la cererea utilizatorului Cout<<\n; } return 0;}

11. Instruciunea switch


Permite realizarea structurii selective. Aceasta este o generalizare a structurii alternative i a fost introdus de Hoare. Ea poate fi realizat prin instruciuni if imbricate. Utilizarea instruciunii switch face ca programul s fie mai clar dect dac se utilizeaz varianta cu instruciuni if imbricate. Structura selectiv, n forma n care a fost ea

acceptat de ctre adepii programrii structurate, se realizeaz n limbajul C cu ajutorul urmtorui format al instruciunii switch : switch(expresie) { case c1: sir_1 break; case c2: sir_2 break; . case cn: sir_n break; default: sir } unde : c1,c2,,cn sunt constante integrale sir_1,sir_2,..sir_n,sir sunt succesiuni de instruciuni Instruciunea switch cu formatul de mai sus se execut astfel : Se evalueaz expresia dintre parantezele rotunde Se compar pe rnd valoarea expresiei cu valorile constantelor c1,c2,,cn. Dac valoarea expresiei coincide cu una din constante, s zicem cu ci, atunci se execut secvena sir_i, apoi se trece la instruciunea urmtoare instruciunii switch, adic la instruciunea aflat dup acolada nchis care termin instruciunea. Dac valoarea respectiv nu coincide cu nici una din constantele c1,c2,.cn, atunci se execut succesiunea de instruciuni sir din default i apoi se trece la instruciunea urmtoare instruciunii switch. Menionm c este posibil s nu se ajung la instruciunea urmtoare instruciunii switch n cazul n care succesiunea de instruciuni selectat pentru execuie ( sir_i sau sir) va defini ea nsi un alt mod de continuare a execuiei programului (de exemplu, execuia instruciunii de revenire dintr -o funcie, saltul la o instruciune etichetat etc.). Succesiunile sir_1,sir_2,..,sir_n se numesc alternativele instruciunii switch. Alternativa sir este opional, deci ntr-o instruciune switch secvena default : sir poate fi absent. n acest caz, dac valoarea expresiei nu coincide cu valoarea nici uneia dintre constantele c1,c2,.. ..cn, atunci instruciunea switch nu are nici un efect i se trece la execuia instruciunii urmtoare. Instruciunea switch de mai sus este echivalent cu urmtoarea instruciune if imbricat : if(expresie==c1) sir_1 else if(expresie==c2) sir_2 else if(expresie==c3) sir_3 else if .. else if(expresie==cn) sir_n else sir; Instruciunea break de la sfritul fiecrei alternative permite ca la ntlnirea ei s se treac la execuia instruciunii urmtoare instruciunii switch. Se obinuiete s se spun c instruciunea break permite ieirea din instruciunea switch. Instruciunea break poate fi utilizat numai n corpurile ciclurilor i n alternativele instruciunii switch. Prezena ei la sfritul fiecrei alternative nu este obligatorie. n cazul n care instruciunea break este absent la sfritul unei alternative, dup execuia succesiunii de instruciuni din compunerea alternativei respective se trece la execuia succesiunii de instruciuni din alternativa urmtoare a aceleai instruciuni switch. Adic, dac o instruciune switch are formatul : switch(expresie) { case c1: sir_1 case c2: sir_2

} atunci ea este echivalent cu urmtoarea secven : if(expresie==c1) { sir_1 sir_2 }else if(expresie==c2) sir_2; Exemplul 1: Urmtorul program recunoate numerele 1,2,3 i 4 i afieaz numele cifrei introduse. #include<iostream.h> int main() { int i; cout<<Introduceti un intreg intre 1 si 4 : ; cin>>i; switch(i) { case 1 : cout<<unu; break; case 2 : cout<< doi; break; case 3 : cout<< trei; break; case 4 : cout<< patru; break; default: cout<< numar necunoscut; } } Exemplul 2: Instruciunile switch sunt deseori folosite pentru a procesa comenzi meniu. De exemplu, programul urmtor: #include<iostream.h> int main() { float a,b; char ch; cout<<Doriti :\n; cout<<Adunare,Scadere,Multiplicare, Impartire?\n; //validarea opiunii introduse do{ cout<<Introduceti prima litera : ; cin>>ch; cout<<\n; }while(ch!=A && ch!=S && ch!=M && ch!=I); cout<<Introduceti primul numar : ; cin>>a; cout<<Introduceti al doilea numar : ; cin>.b; //procesarea comenzii de meniu switch(ch) { case A: cout<<a+b;break; case S: cout<<a-b;break; case M: cout<<a*b;break; case I: if(b) cout<<a/b;break; } return 0; }

12. Instruciunea goto


Nu este o instruciune absolut necesar la scrierea programelor n limbajul C. Cu toate acestea, ea se dovedete util n anumite cazuri, spre exemplu la ieirea din mai multe cicluri imbricate. Astfel de situaii apar adesea la ntlnirea unei erori. n astfel de situaii, de obicei, se dorete s se fac un salt n afara ciclurilor n care a intervenit eroarea, pentru a se ajunge la o secven extern lor de tratare a erorii respective. nainte de a indica formatul instruciunii goto s precizm noiunea de etichet.

Prin etichet se nelege un nume urmat de dou puncte nume: unde nume este numele etichetei respective. Dup etichet urmeaz o instruciune. Se obinuiete s se spun c eticheta prefixeaz instruciunea care urmeaz dup ea. Etichetele sunt locale n corpul funciei n care sunt definite. Instruciunea goto are formatul : goto nume; unde nume este o etichet definit n corpul aceleai funcii n care se afl eticheta goto. La ntlnirea instruciunii goto, se realizeaz salt la instruciunea prefixat de eticheta al crei nume se afl dup cuvntul cheie goto. Deoarece o etichet este local n corpul unei funcii, rezult c ea este nedefinit n afara funciei respective. n felul acesta, o instruciune goto poate realiza un salt numai la o instruciune din corpul aceleai funcii n care este utilizat. Deci, o instruciune goto nu poate face salt din corpul unei funcii la o instruciune din corpul altei funcii. Nu se justific utilizarea abuziv a acestei instruciuni. Se recomand a fi utilizat pentru a simplifica ieirea din cicluri imbricate. Exemplu : Presupunem c ntr-un punct al programului, aflat n interiorul mai multor cicluri, se depisteaz o eroare i se dorete s se continue execuia programului cu o secven de tratare a erorii respective. n acest caz vom folosi o instruciune goto ca mai jos. for() {.. while(.) { .. do {. for(.) {.. if(k==0) goto divzero; else x=y/k; } .. }while(..); . } . } /* secvena de tratare a erorii */ divzero: printf(..); .. n absena instruciunii goto se poate realiza acelai lucru folosind un indicator i o serie de teste realizate asupra lui.

14. Header-ul ctype.h


Header-ul ctype.h este specializat pentru prelucrarea datelor de tip caracter. El conine numai funcii i macrouri (secvene de cod asemntoare funciilor, la apelul crora se face substituia numelui funciei cu codul asociat) de verificare i prelucrare a caracterelor. Astfel, pentru clasificarea caracterelor, avem urmtoarele macrodefiniii : Macro de verificare isalnum(c) isalpha(c) isdigit(c) iscntrl(c) isascii(c) isprint(c) isgraph(c) islower(c) Valoarea 1 cnd caracterul este : o liter sau cifr o liter o cifr n baza 10 un caracter de control un caracter valid ASCII un caracter tipribil un caracter tipribil mai puin spaiul o liter mic

isupper(c) ispunct(c) isspace(c) isxdigit(c) Funcii conversie caractere int toupper(int ch)

int tolower(int ch)

o liter mare un caracter de punctuaie spaiu,tab,CR,LF,tab vertical,form-feed o cifr n baza 16 Face conversia unui caracter : n liter mare. Spre deosebire de macroul _toupper care modific orice caracter, dac caracterul ch nu este liter mic, funcia l ntoarce nemodificat n liter mic. Spre deosebire de macroul _tolower care modific orice caracter, funcia ntoarce caracter nemodificat dac nu este liter mare.

Exemplul: Transformarea literelor unui ir n litere mari. #include<iostream.h> #include<ctype.h> int main() { int i; char t[255]; cin>>t; for(i=0;s[i];i++) s[i]=toupper(s[i]); cout<<t; }

15. Funcii matematice uzuale


Funciile matematice sunt definite n header-ul math.h. De obicei, marea lor majoritate sunt definite pentru valori reale de tip double putnd fi convertite fr probleme n alte tipuri. Sintaxa funciei int abs(int x); long int labs(long int x); double fabs(double x); double sqrt(double x); double pow(double x, double y); Valoarea returnat Macrouri care ntorc modulul unui numr ntreg de format normal, ntreg de format lung i real de tip double. Calculeaz rdcina ptrat y Funcia putere x . n cazul n care x este 0 i y este negativ sau dac x este negativ i y nu este ntreg se semnaleaz eroare. Funcia putere cnd baza este 10. x Funcia e . Funcia logaritm natural, ln(x) . Logaritmul n baza 10. exp Calculeaz x*2 . Calculeaz x modulo y . Evalueaz o funcie polinomial, unde : x valoarea argumentului funciei , n gradul funciei polinomiale, coef tabloul de coeficieni ai funciei polinomiale, coef[0] este termenul liber i coef[n] este termenul de rang maxim Rotunjire inferioar. ntoarce cel mai mare numr ntreg mai mic sau egal cu x. Rotunjire superioar. ntoarce cel mai mic ntreg mai mare sau egal cu x.

double pow10(int p); double exp(double x); double log(double x); double log10(double x); double ldexp(double x, int exp); double fmod(double x, double y); double poly(double x, int n, double coef[]);

double floor(double x); double ceil(double x);

Exemplu: Calculul valorii unui polinom. #include<iostream.h> #include<math.h> // polinomul: x5-2x3-6x2+15x-1 int main() { double a[]={-1.0,15,-6.0,-2.0,0,1.0}; // coeficienii polinomului in ordinea cresctoare a // puterilor double x,rez; cout<<x=;cin>>x; rez=poly(x,5,a); cout<< val. polinomului = <<rez; } Funciile trigonometrice au argumente de tip real care trebuie specificate n radiani. Cele mai utilizate funcii implementate sunt : Sintaxa funciei double sin(double x); double cos(double x); double tan(double x); double asin(double x); double acos(double x); double atan9double x); double atan2(double y, double x); double sinh(double x); double cosh(double x); double tanh(double x); Numele funciei Sinus Cosinus Tangent Arc sinus Arc cosinus Arc tangent Arc tangenta lui y/x Sinusul hiperbolic Cosinusul hiperbolic Tangenta hiperbolic Valoarea returnat Real ntre 1 i 1 Real ntre 1 i 1 Real Real ntre -/2 i /2 Real ntre 0 i Real ntre -/2 i /2 Real ntre 0 i Real Real real