Šiame straipsnyje mes sužinosime apie „while“ ir „do while…“ ciklą C #, kaip juos naudoti ir kaip skiriasi.
Programuojant dažnai pageidaujama tam tikrą skaičių kartų įvykdyti tam tikrą sakinių bloką. Galimas sprendimas bus tuos teiginius įvesti reikiamą skaičių kartų. Tačiau pakartojimų skaičius gali būti nežinomas iš anksto (kompiliavimo metu), o gal ir pakankamai didelis (tarkime, 10000).
Geriausias tokios problemos sprendimas yra kilpa. Kilpos naudojamos programuojant pakartotinai vykdyti tam tikrą teiginių bloką, kol įvykdoma kokia nors sąlyga.
Šiame straipsnyje mes išmoksime naudoti „C“ ciklo metu.
C # o kilpa
„ While“ raktinis žodis naudojamas kuriant „loop“ C #. „Loop“ sintaksė yra:
while (testo išraiška) (// kurio nors kūno dalis)
Kaip veikia kilpa?
- C # o kilpa susideda iš a
test-expression
. - Jei
test-expression
įvertinamatrue
,- vykdomi sakiniai „while“ ciklo viduje.
- po įvykdymo
test-expression
vėl įvertinamas.
- Jei
test-expression
įvertinama ikifalse
, „loop“ baigiasi.
o kilpa Blowchart
1 pavyzdys: o kilpa
using System; namespace Loop ( class WhileLoop ( public static void Main(string() args) ( int i=1; while (i<=5) ( Console.WriteLine("C# For Loop: Iteration (0)", i); i++; ) ) ) )
Kai vykdysime programą, išvestis bus:
C # Loop: Iteracija 1 C # Loop: Iteration 2 C # Loop: Iteration 3 C # Loop: Iteration 4 C # Loop: Iteration 5
Iš pradžių i reikšmė yra 1.
Kai programa pasiekia „while loop“ sakinį,
- įvertinama testo išraiška
i <=5
. Kadangi i yra 1 ir1 <= 5
yratrue
, jis vykdo „while“ kilpos kūną. Čia linija atspausdinama ekrane su Iteracija 1, o i reikšmė padidinama 1, kad būtų 2. - Dabar bandomoji išraiška (
i <=5
) vėl įvertinta. Šį kartą išraiška grįžtatrue
(2 <= 5), todėl eilutė atspausdinama ekrane, o i reikšmė dabar padidinama iki 3 … - Tai vyksta ir „while“ ciklas vykdomas tol, kol i tampa 6. Šiuo metu testo išraiška įvertins
false
ir tokiu būdu kilpa baigsis.
2 pavyzdys: while loop apskaičiuoti pirmųjų 5 natūralių skaičių sumą
using System; namespace Loop ( class WhileLoop ( public static void Main(string() args) ( int i=1, sum=0; while (i<=5) ( sum += i; i++; ) Console.WriteLine("Sum = (0)", sum); ) ) )
Kai vykdysime programą, išvestis bus:
Suma = 15
Ši programa apskaičiuoja pirmųjų 5 natūralių skaičių sumą.
- Iš pradžių sumos vertė inicijuojama iki 0.
- Kiekvienoje iteracijoje sumos vertė atnaujinama
sum+i
ir i vertė didinama 1. - Kai i reikšmė pasieks 6, bandomoji išraiška
i<=5
bus klaidinga ir ciklas baigsis.
Pažiūrėkime, kas vyksta pateiktoje programoje kiekvienoje iteracijoje.
Iš pradžių i = 1, suma = 0
Nors kilpos vykdymo žingsniaiKartojimas | I vertė | i <= 5 | Sumos vertė |
---|---|---|---|
1 | 1 | tiesa | 0 + 1 = 1 |
2 | 2 | tiesa | 1 + 2 = 3 |
3 | 3 | tiesa | 3 + 3 = 6 |
4 | 4 | tiesa | 6 + 4 = 10 |
5 | 5 | tiesa | 10 + 5 = 15 |
6 | 6 | melagingas | Kilpa baigiasi |
Taigi galutinė sumos vertė bus 15.
C # daryti … o kilpa
„ Do and while“ raktinis žodis naudojamas „do… while“ kilpai sukurti. Tai panašu į tam tikrą laiką, tačiau tarp jų yra didelis skirtumas.
In while loop, the condition is checked before the body is executed. It is the exact opposite in do… while loop, i.e. condition is checked after the body is executed.
This is why, the body of do… while loop will execute at least once irrespective to the test-expression.
The syntax for do… while loop is:
do ( // body of do while loop ) while (test-expression);
How do… while loop works?
- The body of do… while loop is executed at first.
- Then the
test-expression
is evaluated. - If the
test-expression
istrue
, the body of loop is executed. - When the
test-expression
isfalse
, do… while loop terminates.
do… while loop Flowchart
Example 3: do… while loop
using System; namespace Loop ( class DoWhileLoop ( public static void Main(string() args) ( int i = 1, n = 5, product; do ( product = n * i; Console.WriteLine("(0) * (1) = (2)", n, i, product); i++; ) while (i <= 10); ) ) )
When we run the program, the output will be:
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25 5 * 6 = 30 5 * 7 = 35 5 * 8 = 40 5 * 9 = 45 5 * 10 = 50
As we can see, the above program prints the multiplication table of a number (5).
- Initially, the value of i is 1. The program, then enters the body of do… while loop without checking any condition (as opposed to while loop).
- Inside the body, product is calculated and printed on the screen. The value of i is then incremented to 2.
- After the execution of the loop’s body, the test expression
i <= 10
is evaluated. In total, the do… while loop will run for 10 times. - Finally, when the value of i is 11, the test-expression evaluates to
false
and hence terminates the loop.
Infinite while and do… while loop
If the test expression in the while and do… while loop never evaluates to false
, the body of loop will run forever. Such loops are called infinite loop.
For example:
Infinite while loop
while (tiesa) (// kilpos „body“)
Begalinis padaryti … o kilpa
do (// body of while loop) while (tiesa);
Begalinė kilpa yra naudinga, kai mums reikia, kad ciklas veiktų tol, kol vykdoma mūsų programa.
Pavyzdžiui, jei jūsų programa yra animacija, turėsite ją nuolat paleisti, kol ji bus sustabdyta. Tokiais atvejais, norint pakartotinai paleisti animaciją, būtina begalinė kilpa.