Documente Academic
Documente Profesional
Documente Cultură
ȘI LIMBAJE DE PROGRAMARE
CURS 3
Funcţia floor(x) calculează valoarea x (cel mai mare număr întreg cuprins în x), iar funcţia
ceil(x) calculează valoarea x (cel mai mic număr întreg mai mare ca x). Toate funcţiile de
mai sus au argumente de tip double şi rezultatul de tip double. Funcţia pow are prototipul
double pow(double a, double b)
şi calculează expresia ab. Apelarea unei funcţii se face scriind numele funcţiei ca termen
într-o expresie urmat în paranteze de parametrii actuali. Exemple de expresii aritmetice şi
scrierea lor sunt prezentate mai jos. Vom presupune că variabilele din aceste expresii au fost
declarate în prealabil de tip double şi au primit valori.
1
PROGRAMAREA CALCULATOARELOR
ȘI LIMBAJE DE PROGRAMARE
a cos 2 ( x ) + b sin ( x )
(a*cos(x)*cos(x)+b*sin(x))/(2.75+fabs(x))
2.75 + x
e x + e−2 x
(exp(x)+exp(-2*x))/5
5
log ( x + 2 ) + ln 1 + cos ( x ) log10(fabs(x)+2)+log(fabs(1+cos(x)))
2
PROGRAMAREA CALCULATOARELOR
ȘI LIMBAJE DE PROGRAMARE
• dacă în expresie există un operand de tipul long int, tipul int şi unsigned int se
convertesc la long int. Tipul expresiei se determină conform tabelei de mai jos
Menţionăm în final că, tipurile char, short int şi variantele lor unsigned char, unsigned short int
şi float sunt doar pentru memorare. Calculele se efectuează doar cu variabile de tip int, long int
şi double.
Valoarea unei expresii poate fi convertită într-un tip diferit dacă este nevoie. Există două
forme ale expresiilor de conversie a tipurilor.
Prima formă a expresiei de conversie de tip este
(tip) expresie
De exemplu, dacă i este o variabilă întreagă cu valoarea 7 şi f este o variabilă de tip double cu
valoarea 3.47
int i = 7 ;
double f = 3.47 ;
expresia
(i + f) % 2
nu este corectă deoarece expresia in parantezele rotunde are tipul double. Expresia
(int)(i + f) % 2
are tipul int şi este corectă, iar rezultatul ei este 0.
In limbajul C++ este posibilă încă o formă de convertire a expresiilor, cu forma
tip(expresie)
De exemplu, expresia anterioară se poate scrie
int(i + f) % 2
Menţionăm că se pot face conversii între toate tipurile standard existente în limbaje. Conversia
de la un tip real la un tip întreg se face prin trunchiere, valoarea 3.71 convertită la int este 3, iar
valoarea -3.4 convertită la int este -3.
1.8. Tablouri
Un tablou este o mulţime de elemente de acelaşi tip. Tablourile sunt tipuri structurate simple.
Instrucţiunea de declarare a unui tablou cu o dimensiune este următoarea
tip nume [ număr întreg] ;
unde număr întreg reprezintă numărul de elemente ale tabloului. Elementele tabloului sunt
nume[0], nume[1], …, nume[număr întreg – 1]
De exemplu instrucţiunea
int a[10];
declară un vector cu zece elemente de tip int. Elementele vectorului sunt
a[0], a[1], …, a[9].
Dimensiunea unui tablou este fixată la declararea sa şi nu se poate schimba.
Un tablou poate fi iniţializat la declararea sa scriind valorile elementelor între acolade, {}, şi
separate de virgule. Exemple de instrucţiuni ce declară tablouri şi le atribuie valori
double x[3] = {1.32, -2.15, 4.45};
char c[4] = {‘a’, ‘b’, ‘c’, ‘x’};
Ultimul tablou este reprezentat în memorie astfel
a b c x
3
PROGRAMAREA CALCULATOARELOR
ȘI LIMBAJE DE PROGRAMARE
In cazul în care lista de valori este mai scurtă decât numărul de elemente declarate, ultimele
elemente sunt iniţializate cu zero. In cazul iniţializării unui tablou, la declararea lui putem omite
numărul de elemente al tabloului. De exemplu, putem scrie
char x[] = {‘#’, ‘>’, ‘m’};
Compilatorul calculează dimensiunea tabloului din numărul de valori utilizate pentru
iniţializare. Instrucţiunea precedentă este echivalentă cu instrucţiunea
char x[3] = {‘#’, ‘>’, ‘m’};
Menţionăm că un vector de caractere poate fi iniţializat cu o constantă tip şir de caractere. De
exemplu, putem scrie
char s[] = “abc”;
Reamintim că o constantă şir de caractere este terminată printr-un octet 0, deci vectorul declarat
are 4 componente, ‘a’, ‘b’, ‘c’ şi ‘\0’ si este reprezentat în memorie ca
De exemplu, instrucţiunea
float b[7][3]
declară o matrice cu şapte linii şi trei coloane. Elementele matricei sunt :
Elementele tablourilor sunt memorate pe linii. Un tablou cu mai multe dimensiuni poate fi de
asemenea iniţializat la declararea sa. Fie de definit matricea m cu elemente întregi, pozitive și
negative:
1 2 5
m=
3 7 −3
Instrucţiunea corespunzătoare este
int m[2][3] = {{1, 2, 5},{3, 7, -3}};
La utilizarea într-o expresie, indicii elementelor tablourilor pot fi orice expresii întregi.
Presupunem următoarele declaraţii de tablouri
double a[10], b;
int i, j, y[3][4];
4
PROGRAMAREA CALCULATOARELOR
ȘI LIMBAJE DE PROGRAMARE
ai + b yij
(a[i]+b*y[i][j])/(cos(b)-sin(b))
cos ( b ) − sin ( b )
e ( ) + yi , j +1
cos b
exp(cos(b)) + y[i][j + 1]
a jk + b22n −3 a[j][k] + b[2 * n – 3] * b[2 * n – 3]
x12 y23 x[1][2] * y[2][3]
La utilizarea elementelor unui tablou, [] este un operator de selecţie, ce are doi operanzi:
un nume de tablou şi un indice. El se aplică asupra unui nume de tablou şi selectează un
element al acelui tablou. De exemplu, a[0] selectează primul element al tabloului a, iar
b[0] selectează prima linie a tabloului b. Aplicând încă o dată operatorul de selecţie asupra
lui b[0], de exemplu b[0][0], selectează primul element din prima linie a lui b. Operatorul
[] este asociativ la stânga.
In acelaşi mod, operatorul de apelare a unei funcţii (), aplicat asupra unui nume de
funcţie, returnează valoarea calculată de funcţie. De exemplu cos(1.2) reprezintă
aplicarea operatorului () asupra numelui funcţiei cos.
Operator Asociativitate
[] () la stânga
+ unar, - unar, (tip) la dreapta
*/% la stânga
+- la stânga
5
PROGRAMAREA CALCULATOARELOR
ȘI LIMBAJE DE PROGRAMARE
Alţi operatori de acest tip vor fi prezentaţi ulterior. Menţionăm, în final, că un operator de
atribuire are doi operanzi şi ca rezultat valoarea operandului din stânga. Operanzii de atribuire
sunt asociativi la dreapta (se execută de la dreapta la stânga). Fie de exemplu instrucţiunea
int x, y, z = 1;
Instrucţiunea
x = y = z;
atribuie variabilelor x şi y valoarea 1. Instrucţiunea
x += y += z;
atribuie variabilei y valoarea 2 şi variabilei x valoarea 3. De ce?