Bucla do-while este folosită atunci când vrem să fim siguri că instrucțiunile vor fi executate cel puțin o dată, chiar și atunci când condiția buclei este evaluată ca fiind falsă. Așa cum am învățat în lecția precedentă, o buclă este un construct care ne permite să executăm una sau mai multe instrucțiuni în mod repetat, până când o condiție este evaluată ca fiind falsă.
Forma generală a unei bucle do-while arată astfel:
|
1
2
3
|
do
instrucțiuni;
while (condiție);
|
Dacă veți compara această buclă cu bucla while explicată în postarea anterioară, veți observa cu ușurință că verificarea condițională se efectuează DUPĂ executarea instrucțiunilor din corpul buclei. Acest lucru înseamnă că instrucțiunile vor fi executate CEL PUȚIN O DATĂ, chiar și atunci când condiția va fi evaluată ca fiind false.
În primul rând, programul va rula instrucțiunile, iar mai apoi va evalua condiția. În cazul în care condiția returnează true, aceasta va rula din nou instrucțiunile; dacă nu, execuția codului va sări la prima instrucțiune care urmează după bucla do-while.
Iată un exemplu de utilizare a buclei do-while, calcularea factorialelor unui număr:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using
System;
namespace
BunaLume
{
class
Program
{
static void Main(string[] args)
{
Console.WriteLine("n = "); // afiseaza un mesaj
int n = int.Parse(Console.ReadLine()); // citeste numarul introdus de utilizator
decimal factorial = 1;
do
{
factorial *= n;
n--;
} while (n > 0); // calculeaza factorialul
Console.WriteLine("n! = " + factorial); // afiseaza rezultatul
Console.ReadLine();
}
}
}
|
Dacă vă amintiți de la matematică, factorialul unui număr întreg pozitiv este produsul tuturor numerelor întregi mai mari decât 0 și mai mic sau egal cu numărul în sine. De exemplu, factorialul lui 3 este:
|
1
|
3! = 1 * 2 * 3
|
Deci, codul de mai sus va afișa următoarea ieșire:
Când programul se execută, începe mai întâi cu rezultatul 1, apoi o multiplicare ulterioară a rezultatului fiecărei iterații a buclei, reducând în același timp n cu 1, până când ajunge la 0. Acest lucru ne oferă produsul n * (n - 1) * ... * 1.
Această bucată de cod se execută întotdeauna cel puțin o dată, de aceea nu va funcționa corespunzător când n este mai mic sau egal cu 0.
Conceptele explicate în această lecție sunt prezentate și vizual, ca parte a următorului videoclip: