Documente Academic
Documente Profesional
Documente Cultură
Programarea Calculatoarelor
(limbajul C) 4.1. Operatori şi modul de evaluare al expresiilor
2
2010-2011 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 1/44
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 2/44 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 3/44
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 4/44 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 5/44
Operatorii folosiŃi în limbajul C (continuare) Operatorii folosiŃi în limbajul C (continuare)
7 8
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 6/44 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 7/44
...
z=z+1; se evaluează această valoare
x=(z-w) % 100;
x=((++z) – (w--)) % 100;
...
w=w-1;
dacă este diferită de 0 atunci
adevărat, altfel fals.
10
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 8/44 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 9/44
11 12
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 10/44 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 11/44
Operatorii folosiŃi în limbajul C (continuare) Operatorii folosiŃi în limbajul C (continuare)
G. Operatorul virgulă
F. Operatorii logici (continuare)
> Operatorul “,” este folosit pentru a separa două sau mai
EnunŃ: i este o variabilă întreagă şi c este o variabilă multe expresii ce sunt incluse într-o formulare în care de regulă
P se aşteaptă doar o expresie.
alfanumerică (caracter). Să se scrie condiŃia logică care
returnează valoarea 1 dacă i mai mic ca 10 şi c diferit de Formă generală:
‘x’, şi respectiv valoarea 0 dacă i mai mare sau egal cu (<expresie1>, ..., <expresieN>,<expresie>);
10 sau c are valoarea ‘x’:
> Se evaluează toate expresiile, dar în cazul în care se
i>=10 returnează 0 foloseşte valoarea operatorului atunci doar ultima expresie este
(i<10) && (c!=‘x’) returnată.
Exemplu:
c==‘x’ returnează 0
a = (b=3, i=i+1, b+2); b←3, i←i+1, a←b+2=5
13 14
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 12/44 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 13/44
> Aceştia modifică variabilele pe baza modificării valorilor > Acesta permite conversia temporară a unei date de un
binare ce corespund acestora. anumit tip, într-un tip de bază ce este specificat de utilizator.
15 16
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 14/44 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 15/44
Exemple: corect
a=1 int i; i=8 Exemplu: a=5+7%2 este evaluat aşa? 5+(7%2)
int a;
a=sizeof(char); double a;
i=sizeof(a); sau aşa? (5+7)%2
17 18
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 16/44 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 17/44
PrecedenŃa operaŃiilor (continuare) PrecedenŃa operaŃiilor (continuare)
> Prioritatea operatorilor în C (de la prioritatea maximă la > Exemplu:
cea minimă): a < 10 && 2 * b < c ???
19 20
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 18/44 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 19/44
> Din evaluarea unei expresii în C rezultă o valoare. Tipul şi > Regulile de conversie de evaluare a unei expresii ce nu
implicit valoarea rezultatului unei expresii se stabilesc pe baza implică operatorul de atribuire sunt (continuare):
unor reguli de conversie. R2. pentru toate perechile de operanzi, dacă unul dintre
operanzi este de tip long double, celălalt operand este
> Vorbim de reguli de conversie în cazul în care în expresie
convertit la long double.
apar constante, variabile şi funcŃii de tipuri diferite.
R3. dacă unul dintre operanzi este de tip double, celălalt
> Regulile de conversie de evaluare a unei expresii ce nu operand este convertit la double.
implică operatorul de atribuire sunt următoarele:
R4. dacă unul dintre operanzi este long, celălalt operand este
convertit la long.
R1. toate datele de tip char şi short int sunt convertite la int.
Toate datele de tip float sunt convertite la double. R5. dacă unul dintre operanzi este unsigned, celălalt operand
este convertit la unsigned.
21 22
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 20/44 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 21/44
> Pentru operaŃia de atribuire, regula de conversie de tip este: > Exemplu:
23 24
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 22/44 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 23/44
InstrucŃiuni de scriere şi citire a datelor
25 26
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 24/44 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 25/44
printf(“Valori
printf intregi: %i %ld", 1977, 650000); printf(“Numere
printf reale: %4.2f %+.0e %E ", 3.1416, 3.1416, 3.1416);
printf(“Precedat
printf de spatii: %10d", 1977); printf(“
printf %s”, “Un sir de caractere”);
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 36/44 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 37/44
c:\> (tastăm ‘b’ enter) ??? stop c:\> (tastăm “12345” enter) ??? x=12
c:\> (tastăm ‘a’ enter ‘2’ enter ‘4’ enter) ???
int a;
x=2, y=4 float y;
int x=20;
%*d",
%*
scanf(“%* &x); scanf(“% %d %f", &a, &y);
%d", x);
printf(“x=% %d, y=%f
printf(“a=% %f",
%f a,y); a=10, y=0.130000
c:\> (tastăm “33” enter) ??? x=20 c:\> (tastăm “10” enter “13e-2” enter) ???
43 44
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 42/44 Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 43/44
Sfârşitul Cursului 4
45
Curs Programarea Calculatoarelor, Ş.l. Bogdan IONESCU, 2010-2011 44/44