1. Operatori aritmetici
Operatorii aritmetici combina numere si produc tot un numar. Atentie la cele doua feluri de impartire din Python:
| Operator | Descriere | Exemplu | Rezultat |
|---|---|---|---|
| + | Adunare | 5 + 3 | 8 |
| - | Scadere | 5 - 3 | 2 |
| * | Inmultire | 5 * 3 | 15 |
| / | Impartire reala | 7 / 2 | 3.5 |
| // | Impartire intreaga (catul) | 7 // 2 | 3 |
| % | Rest (modulo) | 7 % 3 | 1 |
| ** | Ridicare la putere | 2 ** 3 | 8 |
Sa le vedem ruland efectiv in Python:
print(7 / 2) # impartire reala print(7 // 2) # impartire intreaga (catul) print(7 % 3) # restul impartirii print(2 ** 3) # 2 la puterea 3
3.5 3 1 8
Idee cheie: perechea // si % este motorul multor algoritmi de prelucrare a cifrelor (vei prelucra cifrele unui numar in lectiile urmatoare): n % 10 da ultima cifra, iar n // 10 elimina ultima cifra.
2. Precedenta si asociativitatea operatorilor
Cand o expresie are mai multi operatori, ordinea de evaluare este (de la prioritate maxima la minima):
- ( ) — parantezele (prioritate maxima)
- ** — ridicarea la putere
- * / // % — inmultire, impartiri, rest
- + - — adunare, scadere
La prioritati egale evaluarea merge de la stanga la dreapta. Exceptie: ** este asociativ la dreapta.
print(2 + 3 * 4) # * inainte de + print((2 + 3) * 4) # parantezele schimba ordinea print(2 ** 3 ** 2) # ** asociativ la dreapta: 2 ** (3 ** 2)
14 20 512
2 ** 3 ** 2 da 512 pentru ca se evalueaza ca 2 ** (3 ** 2) = 2 ** 9 = 512, NU (2 ** 3) ** 2 = 64. Cand ai dubii, foloseste paranteze — clarifica intentia.
3. Operatori relationali (de comparatie)
Operatorii relationali compara doua valori si produc un boolean: True sau False.
| Operator | Descriere | Exemplu | Rezultat |
|---|---|---|---|
| == | Egal | 5 == 5 | True |
| != | Diferit | 5 != 3 | True |
| < | Mai mic | 3 < 5 | True |
| > | Mai mare | 5 > 3 | True |
| <= | Mai mic sau egal | 5 <= 5 | True |
| >= | Mai mare sau egal | 5 >= 6 | False |
print(5 == 5) print(5 != 3) print(3 < 5) print(5 >= 6) print(1 <= 5 <= 10) # Python permite comparatii inlantuite
True True True False True
Capcana clasica: nu confunda = (atribuire, da o valoare unei variabile) cu == (comparatie, verifica egalitatea).
4. Operatori logici
Operatorii logici combina valori booleene. In Python se scriu in cuvinte: and, or, not.
| Operator | Descriere | Exemplu | Rezultat |
|---|---|---|---|
| and | SI logic (adevarat doar daca ambele sunt True) | True and False | False |
| or | SAU logic (adevarat daca cel putin unul e True) | True or False | True |
| not | Negatie (inverseaza valoarea) | not True | False |
x = 5 y = 3 print(x > y and x % y == 2) # 5>3 True, 5%3==2 True -> True print(x == y or x > y) # 5==3 False, 5>3 True -> True print(not (x > y)) # not True -> False
True True False
Evaluare pe scurtcircuit: la and, daca primul operand este False, al doilea nici nu se mai evalueaza (rezultatul e deja False). La or, daca primul este True, al doilea se ignora. Acest comportament permite, de exemplu, b != 0 and a % b == 0 — verifici intai ca b nu e zero, evitand impartirea la zero.
5. Exercitiu rezolvat pas cu pas
Sa evaluam o expresie tip examen, aplicand precedenta:
a = 10 b = 3 rezultat = a % b + a // b * 2 print(rezultat)
Rezolvare pas cu pas (//, % si * au prioritate peste +):
- a % b = 10 % 3 = 1
- a // b = 10 // 3 = 3
- 3 * 2 = 6 (inmultirea inainte de adunare)
- 1 + 6 = 7
7
6. Aceleasi expresii in C++ (EXCLUSIV INTENSIV)
Aceasta sectiune este doar pentru specializarea intensiv informatica. La intensiv inveti acelasi material si in C++. Operatorii sunt foarte asemanatori, dar exista doua diferente importante fata de Python:
- Impartirea: in C++ nu exista
//. Daca ambii operanzi suntint, operatorul/face impartire intreaga (7 / 2da3). Pentru rezultat real, cel putin un operand trebuie sa fie real (7.0 / 2). - Operatorii logici se scriu cu simboluri:
&&(si),||(sau),!(negatie). - Booleenii se afiseaza implicit ca
1/0; cuboolalphaapar catrue/false.
// Operatori in C++ (intensiv) #include <iostream> using namespace std; int main() { cout << 7 / 2 << endl; // impartire intreaga: 3 cout << 7 % 3 << endl; // rest: 1 cout << boolalpha << (5 == 5) << endl; // true int x = 5, y = 3; cout << ((x > y) && (x % y == 2)) << endl; // true cout << (!(x > y)) << endl; // false return 0; }
3 1 true true false