TOC

This article is currently in the process of being translated into Romanian (~36% done).

Structuri de control:

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

The opposite is true for the do loop, which works like the while loop in other aspects through. The do loop evaluates the condition after the loop has executed, which makes sure that the code block is always executed at least once.

int number = 0;
do  
{  
    Console.WriteLine(number);  
    number = number + 1;  
} while(number < 5);

The output is the same though - once the number is more than 5, the loop is exited.

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();
}
    }
}

This produces the exact same output, but as you can see, the for loop is a bit more compact. It consists of 3 parts - we initialize a variable for counting, set up a conditional statement to test it, and increment the counter (++ means the same as "variable = variable + 1").

The first part, where we define the i variable and set it to 0, is only executed once, before the loop starts. The last 2 parts are executed for each iteration of the loop. Each time, i is compared to our number variable - if i is smaller than number, the loop runs one more time. After that, i is increased by one.

Try running the program, and afterwards, try changing the number variable to something bigger or smaller than 5. You will see the loop respond to the change.

The foreach loop

The last loop we will look at, is the foreach loop. It operates on collections of items, for instance arrays or other built-in list types. In our example we will use one of the simple lists, called an ArrayList. It works much like an array, but don't worry, we will look into it in a later chapter.

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();
}
    }
}

Okay, so we create an instance of an ArrayList, and then we add some string items to it. We use the foreach loop to run through each item, setting the name variable to the item we have reached each time. That way, we have a named variable to output. As you can see, we declare the name variable to be of the string type – you always need to tell the foreach loop which datatype you are expecting to pull out of the collection. In case you have a list of various types, you may use the object class instead of a specific class, to pull out each item as an object.

When working with collections, you are very likely to be using the foreach loop most of the time, mainly because it’s simpler than any of the other loops for these kind of operations.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!