
Ce faci dacă este vreme urâtă afară și trebuie să ieși din casă? Dacă este frig, te îmbraci bine, iar dacă este frig și plouă, îți iei în plus și o umbrelă sau pur și simplu nu ieși din casă… Poți să-ți faci un astfel de program condițional în limbajul Java, în care ai cel puțin două posibilități sau alegeri.
Poate că ai auzit în ultima vreme (din 2019 încoace) de inteligența artificală. Practic, ce este inteligența artificială? Un fel de „creieraș” al unui program care ia decizii singur.
Dar cum ia deciziile? Păi are de ales… Programatorii un pic mai experimentați îți vor spune că inteligența artificială se bazează foarte mult pe instrucțiunea if, în care programul alege fie A, fie B (sau mai multe, până la Z).
În schimb, programatorii experți îți vor spune că nu e vorba doar de instrucțiunea if. Hai să trecem direct la „jucăriile” noastre!
Instrucțiunea if este o instrucțiune condițională care verifică întăi dacă este îndeplinită o condiție, iar dacă totul este în regulă (și condiția este îndeplinită) se execută codul din interiorul instrucțiunii if.
Dacă nu este îndeplinită condiția (adică e totul fals, ca-n politică), atunci se sare peste codul din interiorul instrucțiunii if și se trece la următoarea instrucțiune (fix după ce se închide acolada deschisă la if).
Exemplu general:
if (condiție) { /* dacă condiția este adevărată, atunci se execută tot ce este în interiorul acestui bloc de cod, adică tot ce este între acolade */
Așadar, în instrucțiunea if avem totdeauna cuvântul if, iar în paranteză vom pune condiția.
Dacă acea condiție este adevărată, atunci se va executa codul din interiorul blocului de cod (cuprins între acolade), iar dacă nu este adevărată, atunci programul va sări peste codul din interiorul instrucțiunii if și va executa următoarea instrucțiune (oricare ar fi ea) dacă există.
Instrucțiunea if 🔗
Te rog să ții minte faptul că acea condiție de la if trebuie să returneze o valoare de tipul boolean.
Îți recomand să lecturezi articolul „Tipuri de date primitive în Java” pentru a vedea ce valori poate avea o variabilă de tipul boolean. Dacă nu e mult și vrei să fii un profesionist adevărat, te rog să citești și articolul „Tipul unei variabile în Java”. Mulțumesc!
Mai repet o dată logica instrucțiunii if: dacă valoarea returnată în condiția de la if este adevărată (true), atunci se va executa codul din interiorul instrucțiunii if, iar dacă valoarea returnată este falsă (false), atunci nu se va executa codul din interiorul instrucțiunii if. Simplu?
Exemplu:
int a = 10; if (a == 10) { System.out.println("Valoarea lui a este egală cu 10"); } System.out.println("Instrucțiunea if");
În exemplul anterior am atribuit valoarea 10 variabilei a, iar în if am pus să se verifice condiția dacă variabila a are valoarea 10.
Atenție: semnele egal-egal (==) testează dacă valoarea din dreapta este egală cu valoarea din stânga. Un singur semn egal (=) atribuie valoarea din dreapta variabilei din stânga. Așadar, avem așa:
Instrucțiunea if – else 🔗
Instrucțiunea if poate fi urmată sau continuată de instrucțiunea else. Cum vine asta? Programul execută instrucțiunea următoare dacă avem o condiție falsă. Adică, dacă condiția este falsă, rezultatul este altfel (else). Hai să vezi un exemplu clar:
int a = 10; if (a != 10) { System.out.println("Valoarea lui a nu este 10"); } else { System.out.println("Valoarea lui a este 10"); }
Ce va afișa codul anterior? Exact ce afișează funcția println() din blocul de cod de la else. De ce? Pentru că avem o condiție falsă. Ce spune programul nostru? „Dacă variabila a nu este egală cu 10, afișează ‘Valoarea lui a nu este 10′, altfel afișează ‘Valoarea lui a este 10’”.
Noi avem inițializată variabila a cu valoarea 10. Programul evită ce este în blocul de cod de la if și merge la else.
Putem, de asemenea, să avem o altă instrucțiune if lângă else.
Instrucțiunea if – else if 🔗
Ce facem cu if – else if? Punem o altă condiție la else if. Uite aici cum:
int a = 10; if (a != 10) { System.out.println("Valoarea lui a nu este 10"); } else if (a == 10) { System.out.println("Valoarea lui a este 10"); }
În exemplul anterior avem o condiție în if care testează dacă variabila a este diferită de 10, dar variabila a este egală cu 10, deci nu intrăm în if.
Avem apoi structura else if, în care se verifică dacă a este egal cu 10, ceea ce este adevărat și intrăm în acel bloc de cod, iar programul va afișa „Valoarea lui a este 10”.
Dar dacă nu știm deloc valoarea lui a? Să presupunem prin absurd… Atunci putem completa programul cu un alt else.
Instrucțiunea if – else if – else 🔗
int a = 100; if (a < 10) { System.out.println("Valoarea lui a este mai mică decât 10"); } else if (a == 10) { System.out.println("Valoarea lui a este 10"); } else { System.out.println("Valoarea lui a este mai mare decât 10"); }
Acum avem o structură completă if – else if – else. Programul va afișa doar ce este în blocul de la else pentru că valoarea lui a este mai mare decât 10 și nu îndeplinește condițiile prezentate.
Ce zici de instrucțiunea if? O înțelegi?
De asemenea, poți folosi instrucțiunea if în interiorul altei instrucțiuni if (sau else if sau else) pentru un program mai complex.
Exemplu complex:
int a = 18; if (a > 14) { System.out.println("Ai deja buletin"); if (a >= 18) { System.out.println("Poți să dai de permisul auto"); } } else if (a > 100) { if (a > 80) { System.out.println("Ești un pic cam măricel"); } System.out.println("Cine are peste 100 de ani ar trebui să fie mega fericit!"); }
Ce crezi că afișează programul anterior?
Valoarea lui a este 18, deci este mai mare decât 14 și intrăm în structura lui if. Afișează „Ai deja buletin”, apoi verifică dacă valoarea lui a este mai mare sau egală cu 18.
Cum a este egal cu 18, intrăm și în cel de-al doilea if și va afișa mesajul „Poți să dai de permisul auto”.
După aceea, vedem structura else if, dar nu ne mai interesează execuția ei pentru că deja ne-am făcut treaba (ne-am consumat opțiunea) și bineînțeles că tot ce urmează nu se potrivește (condițiile fiind false), astfel că ne încheiem treaba cu succes.
Poți să pui câte instrucțiuni de if dorești în interiorul unei instrucțiuni if sau chiar else if sau chiar în interiorul lui else. Te poți complica cum vrei sau cum e nevoie.
Cel mai bine ar fi să folosești instrucțiunea if în mod înțelept și curat, adică fără prea multe complicații. Trebuie să știi ce vrei, nu să te tot amețești sau să ne amețești cu programul…
În caz că ai nevoie de mai multe opțiuni (dintr-un singur tun), ai putea să iei în calcul folosirea instrucțiunii switch.
Înainte să-nchei, hai să-ți las și un bonus…
BONUS 🔗
Poți să pui o singură declarație sau o linie de cod fără a o încadra între acolade. Cum? Simplu: scrii instrucțiunea if, apoi pui direct o linie de cod. Linia respectivă are „cordonul ombilical” legat de instrucțiunea if. Orice altă linie de cod care va urma nu va fi legată de instrucțiunea if. Hai să ne uităm la următoarele două exemple:
// exemplul 1 int a = 1; if (a == 1) System.out.println("Valoarea lui a este: " + a); System.out.prinln("Salutare!"); // exemplul 2 int a = 2; if (a == 4) System.out.println("Valoarea lui a este " + a); System.out.println("Salutare!");
În primul exemplu, declarația carea fișează „Valoarea lui a este 1” ține strict de condiția din if. Linia de cod care afișează textul „Salutare!” nu mai are legătură cu instrucțiunea if și se execută în mod normal, cursiv, așa cum trebuie.
Uită-te la exemplul al doilea! Acolo am indentat codul ca să se vadă mai bine. Apropo de indentare, îți recomand să citești articolul „Indentarea”. Este o tehnică de programare pe care trebuie să o știi și să o folosești.
Așadar, în exemplul al doilea, nu se va mai executa linia indentată, deci nu se afișează „Valoarea lui a este 2”, ci se va executa direct linia de cod care nu există în cadrul instrucțiunii if.
Ca regulă generală, dacă nu pui acolade, doar prima linie de cod va avea „cordonul ombilical” legat de instrucțiunea if. Ca regulă generală și de bun-simț, pune te rog acoladele de fiecare dată! Va fi mai ușor și pentru tine, și pentru cei care-ți vor citi codul peste ani și ani…
Învață să fii profesionist!