V tomto článku sa dozvieme o cykloch while and do … while v C #, o ich použití a rozdieloch medzi nimi.
V programovaní je často žiaduce vykonať určitý blok príkazov po zadaný počet opakovaní. Možným riešením bude zadať tieto výpisy požadovaný počet opakovaní. Počet opakovaní však nemusí byť známy vopred (počas kompilácie) alebo nemusí byť dostatočne veľký (napríklad 10 000).
Najlepším riešením tohto problému je slučka. Smyčky sa používajú v programovaní na opakované vykonávanie určitého bloku príkazov, kým nie je splnená určitá podmienka.
V tomto článku sa naučíme používať cykly while v C #.
C # while
Kým kľúčové slovo sa používa na vytvorenie while v jazyku C #. Syntax cyklu while je:
while (test-výraz) (// telo while)
Ako funguje slučka while?
- C # while slučka sa skladá z a
test-expression
. - V prípade, že
test-expression
je vyhodnotenátrue
,- sú vykonávané príkazy vo vnútri cyklu while.
- po vykonaní
test-expression
sa znova vyhodnotí.
- Ak
test-expression
sa vyhodnotí akofalse
, slučka while sa ukončí.
while loop Flowchart
Príklad 1: while Loop
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++; ) ) ) )
Keď spustíme program, výstup bude:
C # pre slučku: Iterácia 1 C # pre slučku: Iterácia 2 C # pre slučku: Iterácia 3 C # pre slučku: Iterácia 4 C # pre slučku: Iterácia 5
Spočiatku je hodnota i 1.
Keď program dosiahne príkaz while,
i <=5
hodnotí sa testovací výraz . Pretože i je 1 a1 <= 5
jetrue
, vykoná telo cyklu while. Tu je riadok vytlačený na obrazovke s iteráciou 1 a hodnota i sa zvýši o 1 na hodnotu 2.- Teraz sa testovací výraz (
i <=5
) vyhodnotí znova. Aj tentokrát sa vráti výraztrue
(2 <= 5), takže sa na obrazovku vytlačí riadok a hodnota i sa teraz zvýši na 3… - Toto ide a slučka while sa vykoná, kým i nedosiahne 6. V tomto okamihu bude testovací výraz vyhodnotený do
false
a teda sa slučka ukončí.
Príklad 2: while, aby vypočítal súčet prvých 5 prirodzených čísel
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); ) ) )
Keď spustíme program, výstup bude:
Súčet = 15
Tento program počíta súčet prvých 5 prirodzených čísel.
- Spočiatku sa hodnota súčtu inicializuje na 0.
- Pri každej iterácii sa hodnota súčtu aktualizuje na
sum+i
a hodnota i sa zvyšuje o 1. - Keď hodnota i dosiahne 6, testovací výraz
i<=5
vráti hodnotu false a slučka sa ukončí.
Pozrime sa, čo sa stane v danom programe pri každej iterácii.
Spočiatku i = 1, súčet = 0
Zatiaľ čo kroky vykonania slučkyIterácia | Hodnota i | i <= 5 | Hodnota súčtu |
---|---|---|---|
1 | 1 | pravda | 0 + 1 = 1 |
2 | 2 | pravda | 1 + 2 = 3 |
3 | 3 | pravda | 3 + 3 = 6 |
4 | 4 | pravda | 6 + 4 = 10 |
5 | 5 | pravda | 10 + 5 = 15 |
6 | 6 | nepravdivé | Slučka sa končí |
Konečná hodnota sumy bude teda 15.
C # robiť … zatiaľ čo slučka
Robiť aj keď kľúčové slovo sa používa na vytvorenie robiť … while. Je to podobné ako cykla while, je však medzi nimi zásadný rozdiel.
V cykle while sa pred vykonaním tela skontroluje stav. Je to presne naopak v cykle do … while, tj. Stav sa kontroluje po vykonaní tela.
To je dôvod, prečo sa telo cyklu do … while vykoná aspoň raz bez ohľadu na testovací výraz.
Syntax cyklu do … while je:
do (// telo cyklu do while) while (test-vyraz);
Ako … zatiaľ čo slučka funguje?
- Telo slučky do … zatiaľ čo najskôr sa vykoná slučka.
- Potom
test-expression
sa vyhodnotí. - Ak
test-expression
jetrue
, telo slučky sa vykoná. - Keď
test-expression
jefalse
, urobte … zatiaľ čo slučka končí.
robiť … zatiaľ čo vývojový diagram slučky
Príklad 3: urobte… while
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); ) ) )
Keď spustíme program, výstup bude:
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 (true) (// telo cyklu while)
Nekonečné robiť … zatiaľ čo slučka
do (// telo cyklu while) while (true);
Nekonečná slučka je užitočná, keď potrebujeme, aby slučka fungovala tak dlho, ako beží náš program.
Napríklad ak je váš program animácia, budete ho musieť neustále spúšťať, kým sa nezastaví. V takýchto prípadoch je nevyhnutná nekonečná slučka, aby sa animácia mohla spúšťať opakovane.