Programare Competitivă

Operații aritmetice și logice

Această lecție este dedicată primelor operații pe care le putem face în programare. Nu este nevoie să fi mai făcut informatică înainte. Totul pornește de la lucruri pe care le cunoști deja din viața de zi cu zi și din matematică.

Calculatorul nu „știe” singur ce să facă. El execută doar instrucțiunile pe care i le dăm. Pentru a lucra cu numere și pentru a lua decizii, folosim operatori.


Ce este un operator?

Un operator este un simbol special care îi spune calculatorului ce operație trebuie să facă.

De exemplu:

  • + îi spune să adune
  • - îi spune să scadă
  • > îi spune să compare două valori

Operații aritmetice

Operațiile aritmetice sunt aceleași operații pe care le folosești și la matematică.

Operatorii aritmetici

  • + adunare
  • - scădere
  • * înmulțire
  • / împărțire
  • % restul împărțirii

Exemplu pas cu pas

int a = 10;
int b = 3;

Avem două variabile:

  • a conține valoarea 10
  • b conține valoarea 3

Acum putem face calcule cu ele:

int suma = a + b;

Calculatorul:

  • ia valoarea lui a
  • ia valoarea lui b
  • le adună
  • pune rezultatul în variabila suma

Valoarea lui suma va fi 13.


Alte exemple

int diferenta = a - b;   // 10 - 3 = 7
int produs = a * b;     // 10 * 3 = 30
int cat = a / b;        // 10 / 3 = 3
int rest = a % b;       // restul împărțirii: 1

Împărțirea la numere întregi

Atunci când folosim variabile de tip int, calculatorul:

  • nu păstrează zecimalele
  • ia doar partea întreagă a rezultatului
int x = 7 / 2;

Valoarea lui x va fi 3, nu 3.5.


Restul împărțirii (%)

Operatorul % este foarte important în algoritmică.

Exemple:

  • 7 % 2 = 1 → număr impar
  • 8 % 2 = 0 → număr par
  • 15 % 5 = 0 → se împarte exact

Aplicare

Completați codul de mai jos pentru ca programul să afișeze, pe linii diferite, suma, diferența, produsul, câtul și restul împărțirii a două numere a și b, în această ordine.

Operații de comparație

Uneori nu vrem să calculăm un număr, ci să verificăm dacă o condiție este adevărată.

Rezultatul unei comparații este întotdeauna:

  • true (adevărat)
  • false (fals)

Operatorii de comparație

== egal
!= diferit
< mai mic
> mai mare
<= mai mic sau egal
>= mai mare sau egal


Exemplu explicat

int a = 10;
int b = 5;

bool rezultat = (a > b);

Calculatorul verifică: „Este 10 mai mare decât 5?”

Răspunsul este da, deci:

  • rezultat va fi true

Atenție foarte importantă

Nu confunda:

  • = atribuire (punem o valoare într-o variabilă)
  • == comparație (verificăm dacă două valori sunt egale)
a = 5;     // atribuim valoarea 5 lui a
a == 5;    // verificăm dacă a este egal cu 5

Operații logice

Operațiile logice ne ajută să combinăm mai multe condiții.


Operatorii logici

  • && și (AND)
  • || sau (OR)
  • ! nu (NOT)

Operatorul && (AND)

Tabelul de adevăr pentru operatorul &&

&& 1 0
1 1 0
0 0 0
int varsta = 12;
bool arePermisiune = true;

bool poateIntra = (varsta >= 10) && arePermisiune;

Rezultatul este true doar dacă:

  • vârsta este cel puțin 10
  • și există permisiune

Dacă una dintre condiții este falsă, rezultatul va fi false.


Operatorul || (OR)

Tabelul de adevăr pentru operatorul ||

|| 1 0
1 1 1
0 1 0
bool esteWeekend = true;
bool esteVacanta = false;

bool timpLiber = esteWeekend || esteVacanta;

Rezultatul este true dacă: - este weekend - sau - este vacanță

Este suficient ca o singură condiție să fie adevărată.


Operatorul ! (NOT)

Operatorul ! se citește „nu” și este folosit pentru a obține opusul unei valori logice.

Pe scurt: - !true devine false - !false devine true

Calculatorul nu interpretează sensul cuvintelor, ci doar aplică această regulă simplă.


Exemplu pas cu pas

bool ploua = false;
bool iesAfara = !ploua;

Să analizăm cu atenție ce se întâmplă:

  1. Variabila ploua are valoarea false
    (înseamnă că nu plouă).

  2. Scriem !ploua, adică
    „nu plouă” → adevărat.

  3. Calculatorul inversează valoarea:

    • false devine true
  4. Valoarea true este salvată în variabila iesAfara.

La final:

  • ploua = false
  • iesAfara = true

Un alt exemplu explicat

bool usaInchisa = true;
bool potIntra = !usaInchisa;

Interpretare:

  • usaInchisa este true (ușa este închisă)
  • !usaInchisa înseamnă „ușa NU este închisă”
  • rezultatul devine false
  • potIntra va fi false

Cum să te gândești la operatorul !

Poți să îl vezi ca pe un comutator:

  • DA ↔︎ NU
  • DESCHIS ↔︎ ÎNCHIS
  • 1 ↔︎ 0

Operatorul ! schimbă întotdeauna starea.


Tabel de adevăr pentru operatorul !

A !A
1 0
0 1

De reținut

  • Operatorul ! inversează o valoare logică.
  • Se folosește pentru a verifica opusul unei condiții.
  • Este foarte util în instrucțiuni de decizie, precum if.

Greșeli frecvente

1. Confuzia între = și ==

  • = este atribuire (dă o valoare)
  • == este comparație (verifică dacă sunt egale)
if (a = 5)  // GREȘIT: atribuie 5 lui a
if (a == 5) // CORECT: verifică dacă a este 5

2. Împărțirea întreagă neașteptată

int a = 7, b = 2;
cout << a / b; // afișează 3, nu 3.5

Dacă ambii operanzi sunt int, rezultatul este tot int (fără zecimale).


3. Împărțirea la zero

int a = 5, b = 0;
cout << a / b; // EROARE!

Împărțirea la zero oprește programul.


Ce să reții

  • Operatorii ne permit să lucrăm cu valori.
  • Operațiile aritmetice fac calcule.
  • Operațiile de comparație verifică condiții.
  • Operațiile logice combină condiții.
  • Calculatorul respectă exact regulile pe care i le dăm.

Probleme

pbinfoAsii

pbinfoTriplul

pbinfoLazi