If you're seeing this message, it means we're having trouble loading external resources on our website.

Dacă sunteţi în spatele unui filtru de web, vă rugăm să vă asiguraţi că domeniile *. kastatic.org şi *. kasandbox.org sunt deblocate.

Conţinutul principal

Decizii cu if, else și expresii booleene

În viață luăm decizii zilnic, ca de exemplu ce să pregătim pentru prânz sau dacă să luăm o haină de ploaie sau o umbrelă. Când luăm asemenea decizii, ținem seama de mai multe condiții din realitate, precum ingredientele pe care le avem în frigider, în cazul prânzului, sau vremea de afară, în cazul hainei de ploaie sau umbrelei.
Și programele de calculator iau decizii, folosind expresii booleene (adică valori de tip adevărat sau fals) în cadrul unor structuri decizionale (dacă/altfel sau, în engleză if/else). Cu ajutorul structurilor decizionale, programele pot să reacționeze diferit în funcție de valori diferite ale datelor de intrare sau ale parametrilor.

O decizie simplă

Imaginează-ți că scriem un program care să ne ajute cu decizia legată de felul în care ne îmbrăcăm zilnic. Există o mulțime de condiții pe care le-am putea lua în calcul pentru acest program, dar să începem cu una simplă: dacă temperatura de afară este negativă, atunci programul ar trebui să ne avertizeze să purtăm o geacă de zăpadă.
Iată schema logică a acestui raționament:
Flowchart that starts with diamond that says "Is temperature less than or equal to 32?". Diamond has arrow labeled "TRUE" that leads to rectangle that says "Display: "Wear a snow jacket!".
Putem implementa în JavaScript programul ce corespunde acelei scheme logice, folosind o structură if:
if (temperatura < 0) {
  println("Poartă o geacă de zăpadă!");
}
Hai să analizăm sintaxa! Forma generală a unei asemenea structuri decizionale if este următoarea:
if (<conditie>) {
  <instructiuni>
}
Condiție și instrucțiuni sunt cele care se pot modifica; astfel se produce magia.
Condiția este o expresie booleană: o expresie care poate avea valoarea adevărat sau fals. Valorile booleene reprezintă un alt tip de dată din limbajele de programare, iar acestea pot reține doar una dintre valorile true (adevărat) sau false (fals).
De exemplu, putem memora valoarea unei expresii booleene într-o variabilă:
var subZero = temperatura < 0;
În funcție de valoarea pe care o are variabila temperatura, variabila subZero poate avea fie valoarea true, fie valoarea false.
Putem chiar să înlocuim condiția cu variabila:
var subZero = temperatura < 0;
if (subZero) {
  println("Poartă o geacă de zăpadă!");
}
Oricum am scrie, condiția trebuie să aibă fie valoarea true fie false, deoarece ea îi spune calculatorului dacă să execute instrucțiunile dintre acolade sau nu.
Instrucțiunile pot fi orice poate executa programul tău și atât timp cât este necesar.
✏️ Încearcă să modifici valoarea variabilei temperature în programul de mai jos și vezi ce se întâmplă. De asemenea, poți să modifici condiția sau instrucțiunile.
📝 Vezi codul echivalent în: App Lab | Snap | Python
Observație: în general, un program cum este acesta ar trebui să citească valaorea variabilei temperatura de la un senzor sau de la un alt dispozitiv de intrare, dar, pentru simplitate, noi precizăm valoarea direct în program.

Operatori relaționali (de comparare)

Expresia booleană de mai sus folosește operatorul <= pentru a determina dacă un număr este mai mic sau egal cu un alt număr. Există mai mulți operatori de comparare (relaționali) în limbajele de programare, operatori care determină relații dintre diverse valori, mai ales între numere.
Iată care sunt operatorii relaționali în JavaScript:
OperatorSemnificațieExpresii adevărate
>Mai mare decât60 > 32
>=Mai mare decât sau egal60 >= 3232 >= 32
<Mai mic decât20 < 32
<=Mai mic decât sau egal20 <= 3232 <= 32
===Strict egal32 === 32
==Egal32 == 32"32" == 32
!==Strict diferit30 !== 32"32" !== 32
!=Diferit30 != 32
JavaScript este un limbaj puțin mai delicat în privința aceasta, deoarece el conține atât operatori de egalitate, cât și operatori de egalitate "strictă".
Operatorii de egalitate încearcă mai întâi să forțeze ca ambele părți ale expresiei să fie de același tip (de exemplu, le convertește pe amândouă la numere) și după aceea verifică egalitatea. Operatorul de egalitate strictă va observa dacă cele două valori au tipuri diferite și va decide imediat că nu pot fi egale. Noi recomandăm folosirea operatorilor stricți deoarece ei conduc la programe predictibile; altfel, pot sa apară situații neprevăzute.
Cele mai multe limbaje de programare nu conțin ambele tipuri de operatori de egalitate, dar poți găsi și alte diferențe legate de modul în care limbajele decid dacă două variabile sunt egale.
✏️Programul de mai jos afișează tot felul de mesaje, în funcție de valoarea pe care o are variabila yourAge (vârstaTa). Încearcă să o modifici și să observi ce se va afișa. De asemenea, poți adăuga mai multe structuri if în program.
📝 Vezi codul echivalent în: App Lab | Snap | Python

Ramura else

Cu ajutorul structurii if, programul nostru poate executa o secvență de instrucțiuni numai dacă este adevărată o anumită condiție. Dacă dorim ca programele noastre să execute o altă secvență de instrucțiuni în situațiile când condiția nu este îndeplinită, atunci putem folosi o ramură else:
Să ne imaginăm un program foarte simplu care verifică o parolă. În schema logică reprezentată mai jos, întrebarea "Is password equal to "TOPSECRET"?" înseamnă "Este valoarea variabilei password egală cu "TOPSECRET"?":
Flowchart that starts with diamond that says "Is password equal to TOPSECRET?". First arrow is labeled "TRUE" and leads from diamond to rectangle that says "Display: 'You got it!'". Second arrow is labeled "FALSE" and leads from diamond to rectangle that says "Display: 'Try again!'".
Putem să implementăm programul folosind o structură if care conține și o ramură else:
if (password === "TOPSECRET") {
   println("You got it!");
} else {
   println("Try again!");
}
📝 Vezi codul echivalent în: App Lab | Snap | Python
Programul nostru va continua, cu siguranță, pe una dintre cele două ramuri: fie condiția este îndeplinită și se execută prima ramură, fie este falsă și atunci se va continua cu a doua ramură.
✏️ Programul de mai jos îl dezvoltă pe cel cu verificarea vârstei, prin adăugarea de ramuri else. Acum poți știi mai ușor ce poți și ce nu poți face la fiecare vârstă. Joacă-te schimbând valoarea variabilei yourAge ca să vezi cum se modifică informațiile afișate.
📝 Vezi codul echivalent în: App Lab | Snap | Python

Structuri decizionale în limbajul pseudocod

Secvența pseudocod de mai jos reprezintă o simplă structură decizională if:
IF (<conditie>)
{
     <instructiuni>
} 
Secvența următoare include o ramură else cu instrucțiunile ce vor fi executate pe acea ramură:
IF (<conditie>)
{
     <instructiuni 1>
} 
ELSE 
{
     <instructiuni 2>
}
Iată operatorii relaționali din limbajul pseudocod:
OperatorSemnificație
a = bEgalitate
a ≠ bInegalitate
a > bMai mare decât
a < bMai mic decât
a ≥ bMai mare decât sau egal
a ≤ bMai mic decât sau egal
Iată secvența pseudocod pentru verificarea parolei:
IF (password = "TOPSECRET")
{
   DISPLAY("You got it!")
}
ELSE {
   DISPLAY("Try again!");
}

🙋🏽🙋🏻‍♀️🙋🏿‍♂️Ai vreo întrebare pe acest subiect? Ne-ar face plăcere să îți răspundem— nu ai decât să pui întrebarea în spațiul de mai jos!