Pagina Principală
Ora 4

Structura Alternativă Simplă

DACĂ...ATUNCI - primele decizii în algoritmi bazate pe condiții

40min teorie + 10min probleme
Competența 3.2
Sigla liceului
TEORIE - 40 minute

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.

Sintaxa structurii DACĂ...ATUNCI
Condiții simple și compuse
Operatorii relaționali
Rezolvarea problemelor cu decizii

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:

CONDIȚIA

Lumină verde

Verificare stare
ACȚIUNEA

Treci strada

Instrucțiuni executate
ALTERNATIVA

Așteaptă

Nimic nu se execută

Exemplu interactiv - Structura Alternativă

citește n (număr întreg) ┌ dacă n > 0 atunci │ scrie "Numărul este pozitiv" └■ scrie "Program terminat"

Observație: Mesajul "Numărul este pozitiv" se afișează DOAR dacă n > 0. Indiferent de condiție, "Program terminat" se afișează întotdeauna.

Citește n
n > 0 ?
DA (Adevărat)
Scrie "Numărul este pozitiv"
NU (Fals)
Nu se execută nimic
Scrie "Program terminat"
Probleme rezolvate - Structură Alternativă Simplă
Problema 1: Verificare număr par

Enunț: Scrieți un algoritm care verifică dacă un număr este par.

citește n (număr întreg) ┌ dacă n % 2 = 0 atunci │ scrie "Numărul este par" └■
Problema 2: Acces restricționat

Enunț: Scrieți un algoritm care permite accesul doar persoanelor cu vârsta ≥ 18 ani.

citește varsta (vârsta persoanei) ┌ dacă varsta ≥ 18 atunci │ scrie "Acces permis" └■
Problema 3: Notă de trecere

Enunț: Scrieți un algoritm care afișează "Promovat" pentru note ≥ 5.

citește nota (nota la examen) ┌ dacă nota ≥ 5 atunci │ scrie "Promovat" └■
Decizii inteligente

Algoritmul poate lua decizii bazate pe date

Flexibilitate

Comportament diferit în funcție de situație

Control asupra execuției

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:
Condiția trebuie să fie booleană - poate fi o expresie care returnează true sau false
Conversie automată:
• Valoare nenulă → true
• Valoare nulă (0) → false
Echivalențe utile:
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 atunci
dacă varsta ≥ 18 atunci
dacă x = y atunci

Instrucțiuni condiționate

Se execută DOAR dacă condiția este adevărată

scrie "Condiție adevărată"
rezultat ← calcul
contor ← 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

=
Egal cu
➡️ dacă x = 10 atunci
Diferit de
➡️ dacă y ≠ 0 atunci

Comparații de Mărime

<
Mai mic decât
➡️ dacă a < b atunci
>
Mai mare decât
➡️ dacă x > 0 atunci
Mai mic sau egal
➡️ dacă varsta ≤ 17 atunci
Mai mare sau egal
➡️ dacă nota ≥ 5 atunci
Exercițiu de completare:
citește ______
______ varsta ______ 18 atunci
│ scrie "Acces ______"
└■
scrie "Verificare ______"
Bancă de cuvinte:
varsta dacă permis terminată

Exemplu Complet: Calculator Reduceri

citește pret, cantitate (pret - prețul produsului, cantitate - număr de bucăți) total ← pret * cantitate ┌ dacă total > 100 atunci │ reducere ← total * 0.1 │ total ← total - reducere │ scrie "Reducere aplicată: ", reducere └■ scrie "Total de plată: ", total
Program C++ echivalent
#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
➡️ citește pret, cantitate pret = 20, cantitate = 4
➡️ total ← pret * cantitate total = 20 * 4 = 80
➡️ dacă total > 100 atunci 80 > 100? FALS
➡️ scrie "Total de plată: ", total Afișează: Total de plată: 80
Scenariul 2: Cu reducere
➡️ citește pret, cantitate pret = 30, cantitate = 5
➡️ total ← pret * cantitate total = 30 * 5 = 150
➡️ dacă total > 100 atunci 150 > 100? ADEVĂRAT
➡️ reducere ← total * 0.1 reducere = 150 * 0.1 = 15
➡️ total ← total - reducere total = 150 - 15 = 135
➡️ scrie "Reducere aplicată: ", reducere Afișează: Reducere aplicată: 15
➡️ scrie "Total de plată: ", total Afișează: Total de plată: 135

Limitări și Aplicații

Limitările structurii alternative simple:

⛔ O singură acțiune - Nu poate gestiona și cazul în care condiția este falsă
⛔ Decizii binare incomplete - Pentru "sau altfel" trebuie structura completă
⛔ Doar pentru condiții simple - Condiții complexe necesită operatori logici

Aplicații practice:

Verificări de validare - Vârsta, note, cantități
Acțiuni condiționate - Reduceri, mesaje, calcule
Filtrare date - Afișare doar pentru anumite condiții
Control acces - Permisiuni bazate pe condiții
EXERCIȚII - 15 minute

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 % 2 calculează 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:

citește nota (nota la examen) ┌ dacă nota ≥ 5 atunci │ scrie "Promovat" └■ scrie "Verificare terminată"
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++:

  1. citeștecin >>
  2. dacă condiție atunciif (condiție)
  3. >= (atenție la ordinea simbolurilor!)
  4. scriecout <<
  5. └■ → se închide acolada } dacă avem bloc
PROBLEME - 10 minute

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.

Soluție pentru Sarcina 2:
ALGORITMUL VerificaDivizibilitate VARIABILE n: întreg ÎNCEPUT CITESTE n DACĂ n % 3 = 0 ATUNCI SCRIE "Numărul este divizibil cu 3" SFÂRȘIT DACĂ SFÂRȘIT

Descarcă exercițiile