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.
În acest material
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ă.
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ă
- Ce afișează primul program pentru
0,-3și14? - Scrie o condiție pentru un număr de două cifre pozitiv.
- Modifică al doilea program ca să afișeze
NENEGATIVpentru zero și numere pozitive. - 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…