Sari la conținut
LECȚIA 5.2 · INFORMATICĂ

Prioritatea operatorilor și evaluarea expresiilor

Ordinea operațiilor în C++, capcanele cu împărțirea întreagă și exerciții de evaluare.

Conținut verificat

Ierarhia (de la prioritate mare la mică)

  1. parantezele ( );
  2. unare: !, - (minusul de semn), ++, --;
  3. *, /, % (aceeași prioritate, evaluate de la stânga la dreapta);
  4. +, -;
  5. comparațiile <, <=, >, >=, apoi ==, !=;
  6. &&, apoi ||;
  7. atribuirea = (cea mai slabă).

Evaluare pas cu pas (tiparul de subiect I)

1. 2 + 3 * 4 % 5 →\to 3*4 = 12 →\to 12 % 5 = 2 →\to 2 + 2 = 4.

2. 7 / 2 * 2 + 7 % 2 →\to 7/2 = 3 (întreg!) →\to 3*2 = 6; 7%2 = 1 →\to 7.

3. 10 - 4 - 3 →\to stânga-dreapta: 6 - 3 = 3 (nu 9!).

4. (1 + 2) * (10 % 4) - 6 / 4 →\to 3 * 2 - 1 = 5.

Expresiile logice și scurtcircuitarea

&& și || evaluează operandul drept DOAR dacă e necesar:

  1. x != 0 && 10 / x > 2: sigură (împărțirea nu se execută la x = 0);
  2. în C++, orice valoare NENULĂ e "adevărat"; rezultatul comparațiilor e 0 sau 1.

Exemplu. Pentru x = 5: x > 3 && x < 10 →\to 1 && 1 = 1. Expresia 3 < x < 10 e o CAPCANĂ: se evaluează (3 < x) < 10 →\to 1 < 10 = 1 mereu adevărat, indiferent de x!

Modulo cu negative (detaliu de barem)

În C++, semnul restului urmează DEÎMPĂRȚITUL: -7 % 2 = -1, 7 % -2 = 1.

Greșeli frecvente

  1. 7/2*2 este 6, nu 7: împărțirea întreagă lovește înainte de înmulțire.
  2. Intervalele se scriu a < x && x < b, niciodată înlănțuit.
  3. % are aceeași prioritate cu * și /: se evaluează în ordinea apariției.
EXEMPLU, ÎN 4 LIMBAJE

Alege limbajul în care dai examenul. Poți edita codul și îl poți rula direct aici. Programa oficiala de BAC (proba E.d) cere Pascal sau C/C++, la alegere. Python apare in manualele noi si e pus aici pentru inteles, nu ca limbaj de examen.

#include <iostream>
using namespace std;

int main() {
    cout << 2 + 3 * 4 << " ";
    cout << (2 + 3) * 4 << " ";
    cout << 17 / 5 % 3 << " ";
    cout << (7 > 3 && 2 < 1);
    return 0;
}