Operatorul ternar
Operatorul ternar

În ce limbaj de programare ai întâlnit până acum operatorul ternar? Operatorul ternar este un artificiu sau un procedeu pentru scrierea pe scurt a instrucțiunii if-else.

Ce se întâmplă într-o instrucțiune if-else? Se verifică mai întâi condiția din if. Dacă este adevărată, se execută blocul de cod respectiv. Dacă nu este adevărată, se execută blocul de cod din else.

Putem merge pe considerentul lui „dacă și cu parcă”, dar un pic mai direct. Cu dacă și cu parcă nu faci treabă totdeauna…

Mai multe detalii despre instrucțiunea if-else găsești în articolul „Instrucțiunea if în Java”.

Operatorul ternar este un operator pe care nu-l folosesc chiar în fiecare zi, nefiind un operator atât de la-ndemână precum operatorul de incrementare sau decrementare, dar îmi place pentru că este util atunci când am de verificat o condiție logică simplă.

Hai să ne uităm la următorul exemplu:

// Utilizăm operatorul ternar
int a = 10;
int b = 20;
int max = (a < b) ? a : b;
// max va avea valoarea 10

// Utilizăm condiția if-else
if (a < b) {
max = a;
} else {
max = b;
}

Ce crezi că se întâmplă în codul anterior? În prima parte, după ce declarăm variabilele a și b, în interiorul variabilei max avem condiția (a < b). Dacă este adevărată, max preia valoarea lui a. Dacă nu este adevărată, max preia valoarea lui b.

Sintaxa de bază este următoarea:

  • condiție ? expresie_dacă_este_adevărată : expresie_dacă_este_falsă;

Nimic greu până aici, nu?

Ei bine, în partea a doua a programului avem instrucțiunea if-else. Dacă instrucțiunea din if este adevărată, max preia valoarea lui a, iar dacă nu, atunci intrăm în instrucțiunea else, iar max preia valoarea lui b. Se merge pe ideea că dacă nu-i albă, e neagră sau dacă nu-i DA, e NU. Totul e logic.

Hai să dau mai multe exemple de programe scurte în mai multe limbaje de programare. Voi da exemple în următoarele 3 limbaje de programare:


Operatorul ternar în Java 🔗

Deși exemplul pe care l-am dat anterior se potrivește foarte bine pentru limbajul Java (dar și C, C++), hai să mai dau două exemple simple, dar importante:

// Utilizăm operatorul ternar
int varUnu = 4;
int varDoi = 3;
int varMax = (varUnu > varDoi) ? a : b;
System.out.println("Maximul dintre: " + varUnu + "și " + varDoi + "este: " + varMax);
// Output: Maximul dintre 4 și 3 este 4.

int ora = 8;
String mesaj = (ora < 12) ? "Bună dimineața!" : "Bună ziua!";
System.out.println(mesaj);
// Output: Bună dimineața!

Ce zici de cele două exemple? E drept că în primul exemplu am forțat un pic. Puteam să folosesc o funcție care returnează maximul dintre două valori, dar pentru situația de față, mi-am permis să trec peste bariere. În al doilea exemplu se verifică dacă ora este mai mică decât 12. Dacă este mai mică decât 12, se afișează mesajul „Bună dimineața!”, iar în caz contrar, mesajul „Bună ziua!”. Hai totuși să mai dau un exemplu!

int nota = 5;
boolean promovat = (nota >= 5) ? true : false;
System.out.println("Elevul a promovat. (True or False?) - " + promovat);
// Output: Elevul a promovat. (true or false?) - true

Operatorul ternar în PHP 🔗

Operatorul ternar este la fel și în PHP. Merită să precizez că în orice limbaj de programare folosești operatorul ternar, trebuie să lași spații între condiție, semnele ? și :, respectiv expresii. De ce? Pentru că trebuie să ai un cod cât mai lizibil.

Apropo, știai că în SEO, lizibilitatea joacă un rol important la optimizarea paginii? Dacă ai vreodată nevoie de servicii SEO pentru optimizarea și indexarea site-ului în Google, îți recomand să dai o „geană” pe pagina „Servicii SEO”. Mulțumesc!

 
$varsta = 18;
$mesaj = ($varsta >= 18) ? "Adult" : "Minor";
echo $mesaj;
// Output: Adult

Îți dau un exemplu mai complicat, nerecomandat (mai bine folosești instrucțiunea if-elseif-else).

 
$nota = 7;
$evaluare = ($nota >= 9) ? "Excelent" : (($nota >= 5) ? "Admis" : "Respins");
echo $evaluare;
// Output: Admis

Ce face codul anterior? Prima condiție este falsă (7 nu este mai mare decât 9) și trecem în partea a doua. În această parte, condiția este adevărată (7 este mai mare decât 5) și se evaluează prima expresie, astfel că textul „Admis” este atribuit variabilei $evaluare. La final, afișăm valoarea variabilei $evaluare.

Codul anterior putea fi scris astfel:

 
$nota = 7; 
$evaluare = ($nota >= 9) 
    ? "Excelent" 
    : (($nota >= 5) 
        ? "Admis" 
        : "Respins"); 
echo $evaluare; 
// Output: Admis 

// Sau cu if-else:
if ($nota >= 9) {
    $evaluare = "Excelent";
} elseif ($nota >= 5) {
    $evaluare = "Admis";
} else {
    $evaluare = "Respins";
}

Interesant, nu-i așa? Hai să ne vedem cum este operatorul ternar în Python.


Operatorul ternar în Python 🔗

În Python, operatorul ternar este un pic diferit. De ce? Pentru că prima dată se pune expresia adevărată (sau valoarea care se atribuie când avem condiția adevărată), apoi se pune condiția, iar la urmă vine expresia care se atribuie când avem condiția falsă.

Sintaxa operatorul ternar în Python:

  • expresie_dacă_este_adevărată conidție expresie_dacă_este_falsă

Așadar, în Python nu mai există operatorul ternar cu simbolurile ? și :, ci se scrie totul continuu.

 $nota = 7;
varsta = 20
mesaj = "Adult" if varsta <= 18 else "Minor"
print(mesaj)
# Output: Adult

Hai să mai dau un ultim exemplu, și anume fix primul exemplu pe care l-am scris la începutul articolului, dar de data aceasta va fi în Python:

 
a = 10
b = 20
max = a if a < b else b
print(max)
# Output: 10

Învață să fii profesionist!

By projava.ro

„Binele-i bun atunci când e bine făcut.”

Abonează-te
Primește notificări pentru
guest
0 Comentarii
Cele mai vechi
Cele mai noi Cele mai votate
Păreri...
Vezi toate comentariile