This article has been localized into Romanian by the community.
Bucle repetitive
Un alt element esențial în scrierea programelor este folosirea buclelor repetitive, ce permit repetarea unui bloc de instrucțiuni de mai multe ori. În C# sunt de 4 tipuri, și vom vedea fiecare dintre ele cum se folosește.
Bucla while
Bucla while este probabil cea mai simplă, așa că vom începe cu aceasta. Pur și simplu execută un bloc de instrucțiuni atâta timp cât condiția specificată este adevărată. Mai jos este unu mic exemplu, urmat de explicații.
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int number = 0;
while(number < 5)
{
Console.WriteLine(number);
number = number + 1;
}
Console.ReadLine();
}
}
}
Încercați să rulați codul. Veți obține o frumoasă listă de numere de la 0 la 4. number este setat inițial la 0 și este incrementat cu 1 la fiecare execuție a blocului de instrucțiuni din buclă. Dar de ce number ajunge doar până la 4, în condițiile în care codul specifică 5? Pentru ca condiția specificată să fie adevărată, number trebuie să fie mai mic de 5, ceea ce, în cazul nostru, înseamnă că instrucțiunea care returnează number nu mai este atinsă odată ce number este egal cu 5. Acest lucru se întâmplă deoarece condiția din bucla while este evaluată înainte de execuția blocului de instrucțiuni.
Bucla do
Opusul este adevărat pentru bucla do, care funcționează ca și bucla while în alte aspecte. Bucla do evaluează condiția după ce bucla a fost executată, ceea ce asigură că blocul de cod este întotdeauna executat cel puțin o dată.
int number = 0;
do
{
Console.WriteLine(number);
number = number + 1;
} while(number < 5);
Datele de ieșire totuși sunt aceeași - odată ce numărul este mai mare de 5, bucla este finisată.
Bucla for
Bucla for este puțin diferită. Este de preferat să o folosim atunci când știm câte iterații vrem să obținem, fie pentru că știm exact numărul de iterații, fie pentru că avem o variabilă care conține numărul de iterații. Iată un exemplu de folosire a buclei for.
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int number = 5;
for(int i = 0; i < number; i++)
Console.WriteLine(i);
Console.ReadLine();
}
}
}
Acesta produce acelasi output dar, dupa cum poti vedea, bucla este putin mai compacta. Este formata din 3 parti - initializam un counter pentru numarare, setam o conditie pentru a fi testata si incrementam contorul(++ este echivalent cu "variable = variable + 1" )
Prima parte, în care definim variabila i și îi atribuim valoarea 0, este executată o singură dată, înainte de a începe bucla. Ultimele 2 părți sunt executate pentru fiecare iterație a buclei. De fiecare dată când i este comparat cu variabila noastră number - dacă i este mai mic decât number, bucla rulează încă o dată. După aceea, i este încrementat cu 1.
Încercați să rulați programul și, după aceea, încercați să schimbați variabila number cu o valoare mai mare sau mai mică decât 5. Veți vedea că bucla răspunde la schimbare.
Bucla foreach
Ultima buclă la care ne vom uita este bucla foreach. Funcționează pe colecții de date, de exemplu: șiruri sau alte tipuri de liste încorporate. În exemplul nostru vom folosi una dintre listele simple, numită ArrayList. Funcționează la fel ca un șir, dar nu vă faceți griji, îl vom analiza într-un capitol ulterior.
using System;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ArrayList list = new ArrayList();
list.Add("John Doe");
list.Add("Jane Doe");
list.Add("Someone Else");
foreach(string name in list)
Console.WriteLine(name);
Console.ReadLine();
}
}
}
Bine, deci creăm o instanță a unui ArrayList și apoi îi adăugăm câteva elemente de tip string. Folosim bucla foreach pentru a rula fiecare articol, setând variabila name la elementul la care am ajuns de fiecare dată. În acest fel, avem o variabilă numită de ieșire. După cum puteți vedea, declarăm variabila name ca fiind de tip string – trebuie întotdeauna să spuneți buclei foreach ce tip de date vă așteptați să scoateți din colecție. În cazul în care aveți o listă de diferite tipuri, puteți utiliza clasa de obiect în loc de o anumită clasă, pentru a scoate fiecare articol ca obiect.
Când lucrați cu colecții, este foarte probabil să utilizați bucla foreach de cele mai multe ori, în primul rând pentru că este mai simplă decât oricare dintre celelalte bucle pentru acest tip de operațiuni.