Ce vei învăța astăzi?
După această lecție, vei putea să folosești structura alternativă simplă în algoritmi, să înțelegi cum funcționează deciziile bazate pe condiții și să rezolvi probleme care necesită verificări.
Ce este Structura Alternativă Simplă?
Definiție: Structura alternativă simplă (DACĂ...ATUNCI) permite executarea unor instrucțiuni doar dacă o condiție este adevărată. Dacă condiția este falsă, instrucțiunile sunt omise.
Analogie: Semaforul
Gândește-te la structura alternativă ca la un semafor:
Lumină verde
Verificare stareTreci strada
Instrucțiuni executateAșteaptă
Nimic nu se executăExemplu interactiv - Structura Alternativă
Observație: Mesajul "Numărul este pozitiv" se afișează DOAR dacă n > 0. Indiferent de condiție, "Program terminat" se afișează întotdeauna.
Probleme rezolvate - Structură Alternativă Simplă
Problema 1: Verificare număr par
Enunț: Scrieți un algoritm care verifică dacă un număr este par.
Problema 2: Acces restricționat
Enunț: Scrieți un algoritm care permite accesul doar persoanelor cu vârsta ≥ 18 ani.
Problema 3: Notă de trecere
Enunț: Scrieți un algoritm care afișează "Promovat" pentru note ≥ 5.
Algoritmul poate lua decizii bazate pe date
Comportament diferit în funcție de situație
Unele instrucțiuni se execută doar în anumite condiții
Instrucțiunea if în C++
Varianta 1: if simplu (fără else)
Sintaxă:
if (conditie)
instructiune;
Mod de execuție:
1. Se evaluează condiția
2. Dacă este adevărată (true): se execută instrucțiunea
3. Dacă este falsă (false): se continuă cu următoarea instrucțiune
// Exemplu: Verificare număr pozitiv
if (n > 0)
cout << "Numar pozitiv";
Varianta 2: if-else complet
Sintaxă:
if (conditie)
instructiune1;
else
instructiune2;
Mod de execuție:
1. Se evaluează condiția
2. Dacă este adevărată: se execută instructiune1
3. Dacă este falsă: se execută instructiune2
// Exemplu: Par sau impar
if (n % 2 == 0)
cout << "Par";
else
cout << "Impar";
Observații importante:
• Valoare nenulă → true
• Valoare nulă (0) → false
if(x) este echivalent cu if(x != 0)
if(!x) este echivalent cu if(x == 0)
Test C++: Ce afișează programul?
#include <iostream>
using namespace std;
int main() {
int n = 7;
if (n % 2 == 0)
cout << "Par";
else
cout << "Impar";
return 0;
}
Sintaxa Structurii DACĂ...ATUNCI
ÎNCEPUT
Pornirea algoritmului
DACĂ condiție ATUNCI
Verificarea condiției
dacă n > 0 atuncidacă varsta ≥ 18 atuncidacă x = y atunci
Instrucțiuni condiționate
Se execută DOAR dacă condiția este adevărată
scrie "Condiție adevărată"rezultat ← calculcontor ← contor + 1
SFÂRȘIT DACĂ
Încheierea structurii condiționale
└■sfârșit dacă
Continuare algoritm
Instrucțiuni care se execută întotdeauna
Testează-ți cunoștințele:
Care este ordinea corectă de execuție în structura alternativă simplă?
Operatorii Relaționali în Condiții
Comparații de Egalitate
Comparații de Mărime
Exercițiu de completare:
Bancă de cuvinte:
Exemplu Complet: Calculator Reduceri
#include <iostream>
using namespace std;
int main() {
double pret, cantitate;
cout << "Introdu pretul si cantitatea: ";
cin >> pret >> cantitate;
double total = pret * cantitate;
if (total > 100) {
double reducere = total * 0.1;
total = total - reducere;
cout << "Reducere aplicata: " << reducere << endl;
}
cout << "Total de plata: " << total << endl;
return 0;
}
Execuție pas cu pas (2 scenarii):
Scenariul 1: Fără reducere
Scenariul 2: Cu reducere
Limitări și Aplicații
Limitările structurii alternative simple:
Aplicații practice:
Problemă #1581 - Verificare număr pozitiv
Verificare simplă cu structura if
Enunț:
Cerință: Să se scrie un program care citește un număr întreg și afișează "DA" dacă numărul este strict pozitiv, altfel nu afișează nimic.
Date de intrare:
Programul citește de la tastatură un număr întreg.
Date de ieșire:
Programul va afișa pe ecran mesajul "DA" doar dacă numărul este strict pozitiv.
Exemple:
Exemplu 1:
Intrare:
7
Ieșire:
DA
Exemplu 2:
Intrare:
-3
Ieșire:
(nimic)
Restricții și precizări:
- Numărul este întreg
- Se folosește structura alternativă simplă (if fără else)
- Condiția: număr > 0
- Timp de execuție: 0.1 secunde
Scrie soluția ta:
Soluție corectă:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
if (n > 0)
cout << "DA";
return 0;
}
Observație: Acesta este un exemplu perfect de structură alternativă simplă - instrucțiunea din if se execută doar dacă condiția este adevărată.
Problemă #1582 - Verificare număr par
Verificare divizibilitate cu 2
Enunț:
Cerință: Să se scrie un program care citește un număr întreg și afișează "par" dacă numărul este par.
Date de intrare:
Programul citește de la tastatură un număr întreg.
Date de ieșire:
Programul va afișa pe ecran mesajul "par" doar dacă numărul este par.
Exemple:
Exemplu 1:
Intrare:
8
Ieșire:
par
Exemplu 2:
Intrare:
7
Ieșire:
(nimic)
Restricții și precizări:
- Numărul este întreg
- Un număr este par dacă restul împărțirii la 2 este 0
- Folosiți operatorul % (modulo) pentru rest
- Condiția: n % 2 == 0
Scrie soluția ta:
Soluție corectă:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
if (n % 2 == 0)
cout << "par";
return 0;
}
Puncte cheie de reținut:
n % 2calculează restul împărțirii lui n la 2==este operatorul de egalitate în C++ (nu confunda cu=care este atribuire)- Dacă restul este 0, numărul este divizibil cu 2, deci este par
Exercițiu de transformare
Transformă pseudocodul în C++
Pseudocod dat:
Scrie programul C++ echivalent:
Soluție corectă:
#include <iostream>
using namespace std;
int main() {
int nota;
cout << "Introdu nota: ";
cin >> nota;
if (nota >= 5)
cout << "Promovat" << endl;
cout << "Verificare terminata" << endl;
return 0;
}
Reguli de transformare Pseudocod → C++:
citește→cin >>dacă condiție atunci→if (condiție)≥→>=(atenție la ordinea simbolurilor!)scrie→cout <<└■→ se închide acolada}dacă avem bloc
Exercițiul Practic: Scriere Algoritmi cu Decizii
Sarcini de lucru
Completează următoarele sarcini pentru a-ți consolida cunoștințele despre structura alternativă simplă
Sarcina 1: Analiză problemă
Enunț: "Scrieți un algoritm care verifică dacă un număr este divizibil cu 3."
Soluție pentru Sarcina 1:
Analiza problemei:
- Intrare: un număr n
- Condiție: n % 3 = 0 (restul împărțirii la 3 este 0)
- Acțiune dacă condiția este adevărată: afișează "Divizibil cu 3"
- Acțiune dacă condiția este falsă: nu se afișează nimic (structură simplă)
- Tip de date: număr întreg
Sarcina 2: Scriere pseudocod
Cerință: Scrie pseudocodul complet pentru problema de mai sus.