MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Construcția if..else și operația ternară

Construcțiile condiționale sunt una dintre componentele de bază ale multor limbaje de programare, care direcționează funcționarea programului pe una dintre căi în funcție de anumite condiții. Una dintre aceste construcții în limbajul de programare C# este construcția if..else.

Construcția if/else verifică veridicitatea unei condiții și, în funcție de rezultatele verificării, execută un anumit cod.

Forma sa cea mai simplă constă dintr-un bloc if:

if (condiție)
{
   instrucțiuni executate
}

După cuvântul cheie if se pune condiția. Condiția trebuie să reprezinte o valoare de tip bool. Aceasta poate fi direct o valoare de tip bool sau rezultatul unei expresii condiționale sau altei expresii care returnează o valoare de tip bool. Și dacă această condiție este adevărată (egală cu true), atunci se execută codul plasat după condiție în interiorul acoladelor.

De exemplu:

int num1 = 8;
int num2 = 6;
if (num1 > num2)
{
   Console.WriteLine($"Numărul {num1} este mai mare decât numărul {num2}");
}

În acest caz, primul număr este mai mare decât al doilea, astfel expresia num1 > num2 este adevărată și returnează true, prin urmare, controlul trece la linia Console.WriteLine("Numărul {num1} este mai mare decât numărul {num2}");

Dacă blocul if conține o singură instrucțiune, atunci îl putem scurta, eliminând acoladele:

int num1 = 8;
int num2 = 6;
if (num1 > num2)
   Console.WriteLine($"Numărul {num1} este mai mare decât numărul {num2}");

// sau așa
if (num1 > num2) Console.WriteLine($"Numărul {num1} este mai mare decât numărul {num2}");

De asemenea, putem combina mai multe condiții folosind operatori logici:

int num1 = 8;
int num2 = 6;
if (num1 > num2 && num1 == 8)
{
   Console.WriteLine($"Numărul {num1} este mai mare decât numărul {num2}");
}

În acest caz, blocul if va fi executat dacă num1 > num2 este true și num1 == 8 este true.

Expresia else

Dar ce se întâmplă dacă dorim ca, în cazul în care condiția nu este îndeplinită, să se execute anumite acțiuni? În acest caz, putem adăuga blocul else:

int num1 = 8;
int num2 = 6;
if (num1 > num2)
{
   Console.WriteLine($"Numărul {num1} este mai mare decât numărul {num2}");
}
else
{
   Console.WriteLine($"Numărul {num1} este mai mic decât numărul {num2}");
}

Blocul else se execută dacă condiția după if este falsă, adică egală cu false. Dacă blocul else conține doar o singură instrucțiune, atunci, din nou, îl putem scurta, eliminând acoladele:

int num1 = 8;
int num2 = 6;
if (num1 > num2)
   Console.WriteLine($"Numărul {num1} este mai mare decât numărul {num2}");
else
   Console.WriteLine($"Numărul {num1} este mai mic decât numărul {num2}");

else if

Dar în exemplul de mai sus, la compararea numerelor, putem avea trei stări: primul număr este mai mare decât al doilea, primul număr este mai mic decât al doilea și numerele sunt egale. Folosind construcția else if, putem gestiona condiții suplimentare:

int num1 = 8;
int num2 = 6;
if (num1 > num2)
{
   Console.WriteLine($"Numărul {num1} este mai mare decât numărul {num2}");
}
else if (num1 < num2)
{
   Console.WriteLine($"Numărul {num1} este mai mic decât numărul {num2}");
}
else
{
   Console.WriteLine("Numărul num1 este egal cu numărul num2");
}

Dacă este necesar, putem adăuga mai multe expresii else if:

string name = "Alex";

if (name == "Tom")
   Console.WriteLine("Numele tău este Tomas");
else if (name == "Bob")
   Console.WriteLine("Numele tău este Robert");
else if (name == "Mike")
   Console.WriteLine("Numele tău este Michael");
else
   Console.WriteLine("Nume necunoscut");

Operația ternară

Operația ternară permite de asemenea să verificăm o anumită condiție și, în funcție de veridicitatea acesteia, să executăm anumite acțiuni. Are următoarea sintaxă:

[primul operand - condiție] ? [al doilea operand] : [al treilea operand]

Aici avem trei operanzi. În funcție de condiție, operația ternară returnează al doilea sau al treilea operand: dacă condiția este true, se returnează al doilea operand; dacă condiția este false, se returnează al treilea operand. De exemplu:

int x = 3;
int y = 2;

int z = x < y ? (x + y) : (x - y);
Console.WriteLine(z);   // 1

Aici primul operand (adică condiția) reprezintă expresia x < y. Dacă este true, se returnează al doilea operand - (x + y), adică rezultatul operației de adunare. Dacă condiția este false, se returnează al treilea operand - (x - y).

Rezultatul operației ternare (adică al doilea sau al treilea operand în funcție de condiție) este atribuit variabilei z.

← Lecția anterioară Lecția următoare →