Metode si structuri de control (Part. III)

0

Cand compilezi si rulezi un program Java, masina virtuala (JVM) executa codul din metodamain. Aceste instructiuni sunt rulate secvential pana la intalnirea unei structuri de control, a unei metode sau a unei initializari de obiecte. In acest tutorial vei putea citi despre structurile de control si apelarea metodelor in Java.

Indiferent de limbajul in care este implementat, un program poate fi privit la modul simplist ca o serie de instructiuni ce sunt executate secvential. Cu toate acestea, trebuie sa tii cont ca structurarea codului dintr-o aplicatie se poate realiza in mai multe moduri.

Spre exemplu, daca aplicatia ta permite interactiunea cu utilizatorii, diverse portiuni de cod sau functii vor fi executate in functie de actiunile realizate de utilizatori. De fiecare data cand programele tale folosesc date externe, fie ca acestea provin de la utilizatori sau dintr-o baza de date, codul tau trebuie sa realizeze operatii diferite in functie de datele particulare pe care le primeste.

Instructiuni conditionale

Imagineaza-ti ca ai o aplicatie in care sunt afisate un anumit numar de produse, detaliile acestora fiind extrase dintr-o baza de date. Afisarea ta va avea un aspect neplacut daca numele produselor sunt mai lungi de 20 de caractere, deci trebuie sa le afisezi pe primele 20 si sa le stergi pe celelalte. In editorul tau, creeaza un nou proiect Java si introdu urmatorul cod in metoda main:

In acest exemplu, numele produsului a fost initializat in functia main, dar imagineaza-ti ca atunci cand vei scrie programul, nu vei avea nicio idee ce valoare va fi in acea variabila. Trebuie sa te uiti la conditie si sa te gandesti ce se va intampla la rulare. Daca numele variabilei are mai mult de 20 de caractere, doar codul aflat sub conditia if va fi executat, ignorand ramura else. Daca numele are 20 de caractere sau mai putin, se va executa doar codul aflat sub ramura else, ignorand ramura if. Ceea ce se afla intre parantezele instructiunii if (productName.length()>20) reprezinta un test sau o conditie care va returna o valoare booleana true (adevarat) sau false (fals). Daca este returnata valoareatrue, este executata ramura if, iar daca este returnata valoarea false, se trece la ramuraelse. Cand rulezi programul, ar trebui sa afiseze „Batiste parfumate pe” – experimenteaza dand diferite valori variabilei productName.

Bucle de executie

Un alt tip de structura de control este reprezentat de buclele de executie. Pe masura ce programezi, vei descoperi ca deseori ai nevoie de executia repetata a unei instructiuni sau a unui bloc de instructiuni. In plus, instructiunile while si for te vor ajuta sa reduci dimensiunea codului.

Imagineaza-ti ca ai un sir de produse ale caror nume vrei sa le introduci si sa le afisezi. Scrie si ruleaza urmatoarea portiune de cod:

Codul din bucla for va fi executat pentru fiecare element din vectorul products, adica de 3 ori. Iata ce se intampla atunci cand executia ajunge la bucla:

  • In prima parte a instructiunii for, variabila i este initializata cu valoarea 0 (i = 0).
  • Cea de-a doua parte (i<products.length) reprezinta o conditie. Bucla este executata daca aceasta conditie este adevarata, adica atat timp cat variabila i este mai mica decat lungimea vectorului products (3).
  • Instructiunea i++ are rolul de a incrementa variabila i ,pentru a inregistra de cate ori a fost executata bucla. Apoi, conditia i<products.length este din nou verificata. In exemplul de mai sus, iesirea din bucla are loc pentru i = 4.

Instructiunea while are un format ceva mai simplu, dar scopul este acelasi.

Metode

De multe ori, vei avea nevoie de acelasi cod in sectiuni diferite ale programului tau. Ca exemplu, sa presupunem ca ai mai multi vectori al caror continut vrei sa-l afisezi. Pentru a evita repetarea inutila a codului care face afisarea, il poti include intr-o metoda sau functie. Iata un exemplu de cod care realizeaza acest lucru:

Atunci cand creezi propriile metode, trebuie sa decizi asupra parametrilor transmisi, precum si a tipului returnat (in acest caz void, deoarece functia printElements nu returneaza nici o valoare). De asemenea, trebuie sa denumesti metoda respectiva in functie de scopul ei, dar cat mai concis.

Ca exercitiu, poti apela metoda printElements utilizand ca parametri si alti vectori cu un continut similar.

Leave A Reply