Cum functioneaza un while intr-un while
Abia ai inteles cum merge un while in programare, dar te blochezi atunci cand in interiorul acelui while apare un alt while? (Daca nu ai nicio idee despre ce vorbesc, poate ar fi cazul sa revezi lectia asta.) Nu te ingrijora, caci nu esti singur! 🙂
In acest articol vei vedea ca lucrurile nu sunt chiar asa dificile.
In programul de mai jos (pe care il poti incarca apasand butonul “Reseteaza…” si il poti apoi rula apasand butonul “Executa…”) vei vedea ca pe ecran apare un dreptunghi format din 24 de puncte gri, “asezate” intr-o matrice cu 4 linii si 6 coloane. Liniile (l) si coloanele (c) matricii sunt numerotate cu negru in stanga si deasupra ei.
Desenarea (cu GRI a) acestei matrici se face in functia DeseneazaFundal(), functie ce contine (dupa cum poti vedea daca arunci un ochi prin codul sursa) un while ce contine in el un alt while. Scopul programului este sa iti arate intr-o maniera interactiva in ce ordine sunt parcurse elementele matricii cu ajutorul acestor doua while-uri imbricate (adica unul in interiorul altuia).
La inceperea rularii programului vei vedea ca este marcat cu rosu elementul de pe linia 0 si coloana 0 din matrice. Dupa aceea, la fiecare apasare a tastei ‘w’ (de la “while”) 🙂 punctul rosu se va deplasa la dreapta pana ce va ajunge la capat.
Aceasta deplasare la dreapta corespunde while-ului din interior (adica while-ul in care este marita pas cu pas valoarea variabilei “coloana”).
Atunci cand punctul rosu este la capat de linie si apesi din nou tasta ‘w’ vei vedea ca punctul rosu se muta la capatul din stanga al urmatoarei linii. Acest lucru se intampla fiindca while-ul din interior s-a terminat (caci conditia din el (adica (coloana<=5)) nu mai este adevarata atunci cand esti pe coloana 5 si te deplasezi cu o pozitie la dreapta (deci ai ajunge pe coloana 6, care nu exista in matrice!).)
Trecerea la linia urmatoare corespunde instructiunii “linia = linia+1;” de la finalul primului “while”, iar mutarea punctului la capatul din stanga al noii linii corespunde instructiunii “coloana = 0;” de dinaintea “while”-ului din interior.
Gata vorbaria — iata programul! Distractie placuta! 🙂 (“Reseteaza…”, apoi “Executa…”.)
Abracadabra! Apasa tasta ‘w’ de 23 de ori si modul cum functioneaza un while intr-un while nu va mai fi un mister pentru tine! 🙂
Alatura-te celor peste 7800 de oameni din armata noastra de creiere cu muschi si vei primi testul care iti va spune daca ai sau nu minte de programator.
In plus, vei fi mereu la curent cu tot ce pun la cale.
Cu drag,