1. Compararea buclelor: for
vswhile
O while
buclă poate fi folosită oriunde este nevoie de mai multe ori o instrucțiune sau un grup de instrucțiuni. Dar dintre toate scenariile posibile, unul merită evidențiat.
Vorbim despre situația în care programatorul (creatorul programului) știe dinainte de câte ori trebuie executată bucla. Acest lucru este de obicei gestionat prin declararea unei variabile speciale de contor și apoi creșterea (sau scăderea) variabilei cu 1
fiecare iterație a buclei.
Totul pare să funcționeze așa cum ar trebui, dar nu este foarte convenabil. Înainte de buclă, setăm valoarea inițială a variabilei contorului. Apoi în condiția verificăm dacă a atins deja valoarea finală. Dar de obicei schimbăm valoarea chiar la sfârșitul corpului buclei.
Și ce se întâmplă dacă corpul buclei este mare? Sau dacă avem mai multe bucle imbricate? În general, în aceste cazuri este de dorit să colectați toate aceste informații despre variabilele contorului într-un singur loc. Și de aceea avem for
bucla în Java. De asemenea, nu pare foarte complicat:
for (statement 1; condition; statement 2)
{
block of statements
}
O while
buclă are doar o condiție în paranteze, dar o for
buclă adaugă două instrucțiuni, separate prin punct și virgulă.
Realitatea este mai simplă decât pare: compilatorul convertește o for
buclă într-o while
buclă obișnuită astfel:
statement 1;
while (condition)
{
block of statements
statement 2;
}
Sau mai bine, haideți să demonstrăm acest lucru cu un exemplu. Cele două fragmente de cod de mai jos sunt identice.
Opțiunea 1 | Opțiunea 2 |
---|---|
|
|
Tocmai am adunat într-un singur loc tot codul care se referă la i
variabila contor.
Într-o for
buclă, instrucțiunea 1 este executată o singură dată, înainte ca bucla în sine să înceapă. Acest lucru poate fi văzut clar în al doilea fragment de cod
instrucțiunea 2 este executată de același număr de ori ca și corpul buclei și de fiecare dată este executată după ce întregul corp al buclei a fost executat
2. Unde for
este folosită bucla
Bucla for
este probabil cel mai folosit tip de buclă în Java. Este folosit peste tot, pentru programatori este doar mai clar și mai convenabil decât o while
buclă. Practic, orice while
buclă poate fi convertită într-o for
buclă.
Exemple:
buclă while | pentru buclă |
---|---|
|
|
|
|
|
|
|
|
|
|
Atenție la ultimul exemplu. Lipsesc instrucțiunile pentru lucrul cu contorul de bucle. Nu există contor și nici declarație.
Într-o for
buclă, Java vă permite să omiteți „instrucțiunea pentru a inițializa contorul” și „instrucțiunea pentru a actualiza contorul”. Chiar și expresia care definește condiția buclei poate fi omisă.
3. Nuanțe de utilizare a for
buclei
Un punct important despre utilizarea for
buclelor break
și continue
declarațiilor.
O break
instrucțiune într-o for
buclă funcționează la fel ca și într-o while
buclă - se încheie imediat bucla. O continue
instrucțiune omite corpul buclei, dar nu statement 2
(ceea ce schimbă contorul buclei).
Să aruncăm o altă privire asupra modului în care for
și while
buclele sunt legate.
for (statement 1; condition; statement 2)
{
block of statements
}
statement 1;
while (condition)
{
block of statements
statement 2;
}
Dacă o continue
instrucțiune este executată într-o for
buclă , atunci restul blocului de instrucțiuni este omis, dar instrucțiunea 2 (cea care funcționează cu for
variabila contor a buclei) este încă executată.
Să revenim la exemplul nostru cu sărirea peste numere care sunt divizibile cu 7.
Acest cod va fi în buclă pentru totdeauna | Acest cod va funcționa bine |
---|---|
|
|
Codul care folosește while
bucla nu va funcționa - nu voi fi niciodată mai mare de 7. Dar codul cu for
bucla va funcționa bine.
4. Compararea buclelor for: Java vs Pascal
Apropo, Pascal are și o For
buclă. În general, în esență, fiecare limbaj de programare are unul. Dar în Pascal este foarte clar. Exemple:
Pascal | Java |
---|---|
|
|
|
|
|
|