Bazele programării în C++

Structura de decizie if și else în C++

Învață structura de decizie if și else în C++ prin paritate, semnul numerelor și intervale. Verifică limitele, greșelile frecvente și exercițiile.

Unele instrucțiuni trebuie executate numai când o condiție este adevărată. De exemplu, un număr este par dacă restul împărțirii lui la 2 este zero. Structura if permite programului să aleagă ce face în funcție de date.

Ai nevoie de citire și afișare și de operatorii de comparație.

Două ramuri: if și else

#include <iostream>

int main() {
    long long n = 0;
    std::cin >> n;
    if (n % 2 == 0) {
        std::cout << "PAR" << '\n';
    } else {
        std::cout << "IMPAR" << '\n';
    }
    return 0;
}

Pentru 8 se afișează PAR, iar pentru 7 se afișează IMPAR. Condiția dintre paranteze este verificată o singură dată când execuția ajunge la if. Dacă este adevărată, se execută primul bloc. Altfel, se execută blocul else. Dintre cele două blocuri se execută exact unul.

Și 0 este par, deoarece 0 % 2 este zero. Testul funcționează și pentru valori negative: -6 este par, iar -3 este impar. Pentru imparitate folosește n % 2 != 0; comparația cu 1 ar rata unele numere negative.

Dacă nu ai nevoie de o acțiune pentru cazul fals, poți omite else. Execuția continuă apoi cu instrucțiunea de după structură.

Pentru n egal cu 8 condiția de paritate este adevărată și se afișează PAR. Pentru 7 este falsă și se afișează IMPAR.Cele două ramuri ale aceleiași condiții, pentru două intrări diferite.

Mai multe cazuri

#include <iostream>

int main() {
    long long x = 0;
    std::cin >> x;
    if (x < 0) {
        std::cout << "NEGATIV" << '\n';
    } else if (x == 0) {
        std::cout << "ZERO" << '\n';
    } else {
        std::cout << "POZITIV" << '\n';
    }
    return 0;
}

Pentru -4, prima condiție este adevărată și celelalte ramuri nu se execută. Pentru 0, prima condiție este falsă, iar a doua este adevărată. Pentru 9, ambele condiții sunt false, deci se ajunge în ultimul else.

Ordinea contează. Într-un șir if / else if / else, se execută prima ramură a cărei condiție este adevărată. Mai multe instrucțiuni if independente își verifică fiecare condiția și pot executa mai multe blocuri.

Cum construiești o condiție din enunț

Caută limitele și cuvintele care leagă cerințele. „Între 1 și 10, inclusiv” devine 1 <= x && x <= 10. „Mai mic decât 0 sau mai mare decât 100” devine x < 0 || x > 100.

Pentru un test de interval, verifică separat valorile imediat înaintea limitei, chiar pe limită și imediat după ea. Dacă intervalul este [1, 10], încearcă 0, 1, 10 și 11. Astfel observi ușor confuzia dintre < și <=.

La un maximum de două numere, poți compara a >= b: dacă este adevărat, afișezi a; altfel, b. Egalitatea este acoperită de prima ramură. Dacă enunțul cere să semnalezi egalitatea printr-un mesaj separat, ai nevoie de un caz distinct.

Greșeli frecvente

Folosește == pentru egalitate. Expresia x = 0 atribuie zero; nu verifică dacă valoarea era zero. Nu pune ; imediat după if (conditie): acesta ar forma o instrucțiune goală, iar blocul următor nu ar mai fi corpul condiției.

Păstrează acoladele chiar când o ramură conține o singură instrucțiune. Devine mai clar ce aparține ramurii, iar adăugarea unei afișări noi nu schimbă accidental logica. Indentarea ajută cititorul, dar acoladele stabilesc efectiv gruparea.

Înainte de a / b, verifică b != 0. Nu calcula întâi câtul și apoi să testezi dacă numitorul era zero: verificarea vine prea târziu.

Exersează

  1. Ce afișează primul program pentru 0, -3 și 14?
  2. Scrie o condiție pentru un număr de două cifre pozitiv.
  3. Modifică al doilea program ca să afișeze NENEGATIV pentru zero și numere pozitive.
  4. Ce teste alegi pentru condiția x >= 18?

Răspunsuri: PAR, IMPAR, PAR; 10 <= x && x <= 99; folosești două ramuri, una pentru x < 0 și una else; testezi cel puțin 17, 18 și 19.

Urmează structurile repetitive: aceeași condiție poate controla executarea repetată a unui bloc.

Un pas mai departe

Se încarcă progresul…

Exersează cu o problemă →