Sunteți pe pagina 1din 3

Informatică clasa a IX-a 1

Cap.4 Operatorii limbajului C


O expresie este o succesiune de operatori şi operanzi legaţi între ei după reguli specifice limbajului:
Operanzii pot fi - variabile sau constante
- funcţii care furnizează un rezultat prin chiar numele lor (de exemplu funcţia sistem sqrt(x), care
furnizează radical de ordinul 2 din x).
Operatorii sunt simboluri care determină executarea anumitor operaţii.
Limbajul C dispune de o gamă extinsă de operatori. Pe lângă setul de operatori uzuali, limbajul are definiţi
operatori care oferă facilităţi asemănătoare limbajelor de asamblare. Există astfel operatori aritmetici, operatori de
atribuire simplă sau compusă, operatori logici, operatori de prelucrare pe biţi etc.
În funcţie de rezultatul obţinut în urma evaluării, există:
- Expresii matematice: rezultatul este un număr întreg sau real.
- Expresii logice: rezultatul este 0 sau 1 care poate fi interpretat ca False sau True.
- Expresii de tip text: rezultatul este un şir de caractere.
- Expresii fără tip: care conţin apelul unei funcţii care nu furnizează nici un rezultat.

4.1 Precedenţa operatorilor

Precedenţa operatorilor determină ordinea de evaluare a operaţiilor dintr-o expresie. În funcţie de precedenţă,
operatorii sunt împărţiţi în urmatoarele categorii prezentate în tabelul următor :

Categorie Operatori Semnificaţie


1. Prioritate maximă ( ) Apel de funcţie
[] Expresie care indica impartire intreaga
2. Operatori unari ! Negare logică
(sau NOT)
3. Operatori de * / Înmulţire/împărţire
multiplicare % Restul împărţirii întregi
4. Adunare , scădere + - Plus şi minus binari
5. Relaţionali < <= Mai mic/mai mic sau egal
> >= Mai mare/mai mare sau egal
6. Egalitate = Egal
<> (sau !=) Diferit
7. SI (AND) SI logic
8. SAU(OR) SAU logic
9. Operatori de = Atribuire simplă
atribuire

Cei din prima categorie au prioritatea maximă. Precedenţa descreşte cu cât creşte numărul categoriei din
care face parte operatorul. Operatorii din aceeaşi categorie au acelaşi grad de precedenţă. Ordinea de evaluare a
operaţiilor este de la stânga la dreapta, cu excepţia operatorilor unari (categoria 2) şi a operatorilor de atribuire
(categoria 9) care au ordinea de evaluare de la dreapta la stânga.
Totuşi ordinea de efectuare a operaţiilor nu este întotdeauna perfect determinată. Se poate face o
reorganizare a expresiilor pentru a obţine un cod mai eficient, dar ordinea de efectuare a operaţiilor nu este strict
definită.

4.2 Operatorul de atribuire simplă

Acest operator (=) realizează memorarea valorii unei expresii într-o variabilă. Are sintaxa :
variabila=expresie;
Efectul este stocarea valorii expresiei din membrul drept la adresa variabilei scrise în membrul stâng.
În plus, atribuirea însăşi are o valoare, şi anume valoarea variabilei din stânga după memorarea conţinutului valorii
expresiei. Datorită acestui efect, rezultă în final o valoare a expresiei de atribuire care poate fi folosită direct într-o altă
atribuire.

4.3 Operatori aritmetici

Operatorii aritmetici pot folosi, mai puţin operatorul modulo care poate lucra numai cu numere întregi, atât
numere întregi cât şi numere reale.
Exemplul 1 : Folosirea operatorilor aritmetici .
Informatică clasa a IX-a 2

i,j,n (intregi)
x(real)
n=10*4-7 /* n=33 */
i=[9/2] /* i=4 ca rezultatul împărţirii a două numere întregi */
j=n%i /* j=1 ca restul împărţirii a două numere întregi */
x=n /* x=33.00 - ca număr real*/
x=x%i /* se obţine eroare operatorul % fiind definit numai pt. numere întregi*/

Expresie Expresie echivalenta parantezata Valoare


a*b/c (a*b)/c 0
a*b%c+1 ((a*b)%c)+1 3

4.4 Operatorii relaţionali

Operatorii relaţionali pot fi folosiţi pentru date de tip aritmetic şi pointeri. Rezultatul este 0 dacă relaţia nu este
îndeplinită şi 1 dacă este îndeplinită.
Convenţie : adevărat=1 , fals=0.
Exemplul 1 :
egal,x,y (intreg)
x=17;
y=2*x-1;
egal=x /* egal=17 */

Exemplul 2:
Presupunemn că avem declaraţiile: Expresie Expresie echivalenta Valoare
i=1,j=2,k=3 (intreg)
i<j-k i<(j-k) 0
x=5.5,y=7.7 (real)
-i+5*j>=k+1 ((-i)+(5*j))>=(k+1) 1
Atunci :
x-y<=j-k-1 (x-y)<=((j-k)-1) 1
X+k+7<y/k ((x+k)+7)<(y/k) 0
Exemplul 3:
Presupunem că avem declaraţiile:
i=1,j=2,k=3(intreg) Expresie Expresie echivalenta Valoare
Atunci : i=j j=i 0
I<>j J<>i 1
i+j+k=-2*-k ((i+j)+k)=((-2)*(-k)) 1

4.5 Operatori logici

Operatorii logici admit operanzi de orice tip scalar (simplu) pe care îi interpretează conform comparaţiei cu 0.
Dacă valoarea este 0, expresia este considerată falsă, iar dacă valoarea este nenulă, expresia se consideră
adevărată. Rezultatul unei expresii logice este de tip întreg şi se bazează pe convenţiile : adevărat=1 , fals=0.

Convenţie : adevărat=1 , fals=0.


Tabela de adevăr a operatorilor logici
x y x AND y x OR y !x
0 0 0 0 1
0 !=0 0 1 1
!=0 0 0 1 0
!=0 !=0 1 1 0

Exemplul 1: Două forme echivalente pentru verificarea egalităţii lui x cu 0.


x=0 sau !x
Exemplul 2 : Mai multe variante de verificare a condiţiei ca x şi y să fie ambii 0.
a) x=0 and y=0
b) !x and !y
c) !(x!=0||y!=0)
d) !(x or y)
Informatică clasa a IX-a 3

Exemplul 3:
Presupunem că avem declaraţiile: Expresie Expresie echivalenta Valoare
i=7,j=7(intreg) !(i-j)+1 (!(i-j))+1 2
x=0.0,y=999.9(real) !i-j+1 ((!i)-j)+1 -6
Atunci: !!(x+3.3) !(!(x+3.3)) 1
!x*!!y (!x)*(!(!y)) 1
Exemplul 4:
Presupunem că avem declaraţiile: Expresie Expresie echivalenta Valoare
i=3,j=3,k=3(intreg) I and j and k (I and j)and k 1
x=0.0,y=2.3(real) x||i&&j-3 x||(i&&(j-3)) 0
Atunci: i<j&&x<y (i<j)&&(x<y) 0
i<j||x<y (i<j)||(x<y) 1
Probleme propuse:

1.Scrieti urmatoarea expresie matecatica in forma acceptata de calculator:


a3  b5
E  ( a  b)  (ab) 3
a
a
b
2. Se dau datele logice a=fals, b=fals şi c= adevărat. Evaluează următoarele expresii logice:
a. (a or b) and not(a and c) c. ((a and b) and c) or (a or b)
b. (not c) and (not (b and a)) d. not a or (not (b and c))

3. Se dau datele logice a=adevărat, b=fals şi c= adevărat. Evaluează următoarele expresii logice:
a. (a and b) and not(a and c) c. ((c and b) or a) or (a and b)
b. (not a) or (not (b or c)) d. not b and (not (a and c))

4. Evaluati expresiile:
a=((b<3)+(2=8))-2;
b=((2<=3)>=(7!=8))+2;
c=((2<3)*(2=8))<2;
d=(2=3)=(2=8);

5. Fie o expresie care conţine operatori aritmetici, relaţionali şi de atribuire şi nu conţine paranteze. Să se precizeze,
care va fi ordinea de evaluare a operatorilor ?
a) de atribuire, relaţionali, aritmetici
b) aritmetici,relaţionali, de atribuire
c) de atribuire, aritmetici, relaţionali
6. Fie expresia de mai jos :
(x>-1) and Not(x>1)or(x>=5)
Intervalul selectat este :
a) x (-1,1] [5, ∞)
b) x (-∞ ,-1) [1,∞ )
c) x (- ∞,-1) (1,5)
d) x [-1,1] [5,∞ )
7. Care este intervalul descris de expresia logică de mai jos ?
(x<=-2)or(x>-1)and not(x>=1)||(x>5)
a) x (-∞ , -2]  (-1,1]  [5, ∞ )
b) x (-∞ ,-2]  [-1,1]  (5, ∞ )
c) x(-∞ ,-2]  (-1,1]  [5, ∞ )
d) x (-∞ ,-2]  (-1,1)  (5, ∞ )

8. Care din următorii operatori are prioritatea cea mai mică ?


a) = b) + c) – d) not
9. Ştiind că a, b, c, d, x sunt variabile reale cu a<=b şi c<=d, scrieţi sub formă de expresie :
x[a, b] sau x[c, d].
10. Pentru care dintre seturile de valori ale variabilelor x, y, z de mai jos expresia
(x<y)<((z<>x)<((z-y)<x) are valoarea 1?
a) x=3; y=5; z=4 b) x=4; y=3; z=4
c) x=3; y=4; z=3 d) x=5; y=4; z=3
e) x=5; y=5; z=5

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