MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Structuri condiționale

Structurile condiționale permit executarea unor acțiuni diferite în funcție de anumite condiții.

Construcția if..else

Construcția if..else verifică o anumită condiție și, dacă această condiție este adevărată, atunci se execută anumite acțiuni. Forma cea mai simplă a construcției if..else:

if(condiție){
   
  careva acțiuni
}

După cuvântul cheie if, între parantezele rotunde, este specificată condiția, iar după condiție - un bloc de cod cu anumite acțiuni. Dacă condiția este adevărată, atunci acțiunile din blocul de cod sunt executate.

De exemplu:

const income = 100;
if(income > 50) {
   
   console.log("venit mai mare de 50");
}

În această construcție if, se folosește condiția income > 50. Dacă această condiție este adevărată, adică dacă constanta income are o valoare mai mare de 50, atunci browser-ul afișează un mesaj. Dacă valoarea income este mai mică de 50, atunci nu se afișează niciun mesaj.

Dacă blocul de cod conține o singură instrucțiune, cum este cazul de mai sus, construcția poate fi simplificată eliminând acoladele și plasând acțiunile imediat după condiție:

const income = 100;
if(income > 50) console.log("venit mai mare de 50");

Sau putem muta acțiunile pe linii separate:

const income = 100;
if(income > 50)
   console.log("venit mai mare de 50");

Cu toate astea, condițiile pot fi mai complexe:

const income = 100;
const age = 19;
if(income > 50 && age > 18){

   console.log("venit mai mare de 50");
   console.log("vârsta mai mare de 18");
}

Verificarea prezenței valorii

Construcția if permite verificarea prezenței unei valori. De exemplu:

let myVar = 89;
if (myVar) {
   console.log(Variabila myVar are valoarea: ${myVar});
}

Dacă variabila myVar are o valoare, așa cum este cazul aici, atunci în construcția condițională aceasta va evalua la true.

Varianta opusă:

let myVar;
if (myVar) {
   console.log(Variabila myVar are valoarea: ${myVar});
}

Aici, variabila myVar nu are o valoare (în realitate, este undefined). Prin urmare, condiția din construcția if va evalua la false, iar acțiunile din blocul if nu vor fi executate.

Dar adesea, pentru a verifica valoarea unei variabile, se utilizează o variantă alternativă - se verifică pe undefined și null:

if (myVar !== undefined && myVar !== null) {
   console.log(Variabila myVar are valoarea: ${myVar});
}

Expresia else

Mai sus am discutat cum să definim acțiunile care se execută dacă condiția de după if este adevărată. Dar ce facem dacă dorim să executăm și un alt set de instrucțiuni atunci când condiția este falsă? În acest caz, putem utiliza blocul else. Acest bloc conține instrucțiunile care se execută dacă condiția după if este falsă, adică false:

if (condiție) {
   // acțiuni dacă condiția este adevărată
} else {
   // acțiuni dacă condiția este falsă
}

Adică, dacă condiția de după if este adevărată, se execută blocul if. Dacă condiția este falsă, se execută blocul else. De exemplu:

const income = 45;
if (income > 50) {
   console.log("Venitul este mai mare de 50");
} else {
   console.log("Venitul este mai mic sau egal cu 50");
}

Aici, constanta income are valoarea 45, astfel că condiția după operatorul if va evalua valoarea false, iar controlul va trece la blocul else.

De asemenea, dacă blocul else conține o singură instrucțiune, construcția poate fi scurtată:

const income = 45;
if (income > 50) console.log("Venitul este mai mare de 50");
else console.log("Venitul este mai mic sau egal cu 50");

Condiții Alternative și else if

Cu ajutorul construcției else if, putem adăuga o altă condiție la blocul if. De exemplu, mai sus, valoarea income poate fi mai mare, mai mică sau egală cu o anumită valoare. Vom reflecta aceasta în cod:

const income = 50;
if (income > 50) {
   console.log("Venitul este mai mare de 50");
} else if (income === 50) {
   console.log("Venitul este egal cu 50");
} else {
   console.log("Venitul este mai mic de 50");
}

În acest caz, se va executa blocul else if. Dacă este necesar, putem utiliza mai multe blocuri else if cu condiții diferite:

const income = 500;
if (income < 200) {
   console.log("Venitul este sub medie");
} else if (income >= 200 && income < 300) {
   console.log("Puțin sub medie");
} else if (income >= 300 && income < 400) {
   console.log("Venit mediu");
} else {
   console.log("Venitul este peste medie");
}

În acest caz, nu este neapărat să aplicăm blocul else:

const income = 500;
if (income < 200) {
   console.log("Venitul este sub medie");
} else if (income >= 200 && income < 300) {
   console.log("Puțin sub medie");
} else if (income >= 300 && income < 400) {
   console.log("Venit mediu");
}

True sau False

În JavaScript, orice variabilă poate fi folosită în expresii condiționale, dar nu orice variabilă reprezintă un tip boolean. În această privință, apare întrebarea despre ce va returna o anumită variabilă - true sau false? Mult depinde de tipul de date pe care îl reprezintă variabila:

  • undefined: Returnează false
  • null: Returnează false
  • Boolean: Dacă constanta/variabila este false, atunci se returnează false. Similar, dacă constanta/variabila este true, atunci se returnează true.
  • Number: Returnează false dacă numărul este 0 sau NaN (Not a Number), în celelalte cazuri returnează true

De exemplu, următoarea variabilă va returna false:

let x = NaN;
if(x){  // false
       
}
  • String

Returnează false dacă constanta/variabila este o șir de caractere gol, adică lungimea sa este 0, în celelalte cazuri returnează true.

const emptyText = "";   // false - deoarece este un șir gol
const someText = "javascript";  // true - șirul nu este gol
  • Object

Întotdeauna returnează true.

const user = {name:"Tom"};  // true
const car = {}; // true

Construcția switch..case

Construcția switch..case reprezintă o alternativă la folosirea construcției if..else și permite procesarea simultană a mai multor condiții:

const income = 200;
switch (income) {
   case 100:
       console.log("Venitul este de 100");
       break;
   case 200:
       console.log("Venitul este de 200");
       break;
   case 500:
       console.log("Venitul este de 500");
       break;
}

După cuvântul cheie switch, în paranteze, se găsește expresia de comparare. Valoarea acestei expresii este comparată secvențial cu valorile plasate după operatorul case. Dacă se găsește o potrivire, atunci se va executa blocul case corespunzător.

La sfârșitul fiecărui bloc case se adaugă operatorul break pentru a evita executarea altor blocuri. În acest caz, constanta income este egală cu 200, așa că va fi executat blocul case corespunzător:

case 200:
   console.log("Venitul este de 200");
   break;

Operatorul break

Operatorul break servește pentru a evita executarea altor condiții. De exemplu, am putea scrie:

let income = 200;
switch (income) {
   case 100:
       console.log("Venitul este de 100");
       income += 100;
       break;
   case 200:
       console.log("Venitul este de 200");
       income += 100;
       break;
   case 500:
       console.log("Venitul este de 500");
       income += 100;
       // break;   // aici nu are sens să folosim break, deoarece este ultimul bloc
}

În acest caz, variabila income este din nou setată la 200 și blocul va fi din nou executat.

case 200 :
   console.log("Venitul este de 200");
   income +=100;
   break;

Datorită operatorului break, după executarea blocului, se va ieși din construcția switch, iar alte blocuri case nu vor fi executate.

Dar acum să eliminăm operatorul break:

let income = 200;
switch (income) {
   case 100:
       console.log("Venitul este de 100");
       income += 100;
   case 200:
       console.log("Venitul este de 200");
       income += 100;
   case 500:
       console.log("Venitul este de 500");
       income += 100;
}
console.log("Venitul final este", income);

Rezultatul executării:

Venitul este de 200 Venitul este de 500 Venitul final este 400

În acest caz, variabila income este inițializată cu 200, deci blocul va fi executat.

case 200 :
   console.log("Venitul este de 200");
   income += 100;

Valoarea variabilei income este crescută cu 100, dar la sfârșitul blocului nu există un operator break, astfel încât controlul va trece la verificarea condiției în următorul bloc:

case 500 :
   console.log("Venitul este de 500");
   income += 100;

Și nu contează că venitul nu este 500 (ci doar 300 în acest moment), acest bloc tot va fi executat.

Unirea condițiilor

Totuși, dacă este necesar, se pot verifica simultan mai multe condiții:

const income = 200;
switch(income){

   case 100 :
   case 200 :
       console.log("Venitul este 100 sau 200");
       break;
   case 500 :
       console.log("Venitul este 500");
       break;
}

În acest caz, pentru condiția în care venitul este de 100 sau 200, se vor efectua aceleași acțiuni.

Condiția implicită - default

Dacă dorim să gestionăm și situația în care nu se găsesc corespondențe, putem adăuga un bloc opțional default:

const income = 700;
switch(income){

   case 100 :
       console.log("Venitul este 100");
       break;
   case 200 :
       console.log("Venitul este 200");
       break;
   case 500 :
       console.log("Venitul este 500");
       break;
   default:
       console.log("Venitul de valoare necunoscută");
       break;
}
← Lecția anterioară Lecția următoare →