V tomto článku sa naučíte vytvárať cykly while a opakovať … while v programovaní Swift.
V predchádzajúcom článku sme sa dozvedeli o slučke for-in na vykonávanie množiny úloh viackrát. V tomto článku sa naučíte používať while
a repeat… while
ako alternatívu vstupnú slučku, keď počet iterácií nie je známy.
Smyčka while vykonáva množinu príkazov, kým sa nestane podmienkou false
. Tieto druhy slučiek sa najlepšie používajú, keď počet iterácií nie je známy pred začiatkom prvej iterácie. Swift poskytuje dva druhy cyklov while:
1. Počas slučky posúvajte prstom
Táto slučka vyhodnocuje jej stav na začiatku každého prechodu slučkou.
Syntax cyklu while je:
while (TestExpression) ( // statements )
Ako funguje slučka while?
The TestExpression
je boolovský výraz.
V prípade, že TestExpression
je vyhodnotená true
,
- sú vykonávané príkazy vo vnútri cyklu while.
- a
TestExpression
znova sa vyhodnotí.
Tento proces pokračuje, kým TestExpression
sa vyhodnotí false
. Ak sa TestExpression
vyhodnotí false
, kým je slučka ukončená.
Vývojový diagram while Loop
Príklad 1: While Loop
var currentLevel:Int = 0, finalLevel:Int = 5 let gameCompleted = true while (currentLevel <= finalLevel) ( //play game if gameCompleted ( print("You have passed level (currentLevel)") currentLevel += 1 ) ) print("outside of while loop")
Po spustení programu bude výstup:
Prešli ste úrovňou 0 Prešli ste úrovňou 1 Prešli ste úrovňou 2 Prešli ste úrovňou 3 Prešli ste úrovňou 4 Prešli ste úrovňou 5 mimo slučky while
Vo vyššie uvedenom programe sú premenné currentLevel a finalLevel inicializované na 0 a konštantná gameCompleted je inicializovaná na true
.
V každej iterácii cyklu while kontroluje stav currentLevel <= finalLevel
. Ak sa podmienka vráti true
, vykonajú sa príkazy vo vnútri cyklu while, inak sa cyklus ukončí.
Iterácia | Podmienka (currentLevel <= finalLevel) | Výkon |
---|---|---|
1 | 0 <= 5 (pravda) | Prešli ste úrovňou 0 |
2 | 1 <= 5 (pravda) | Prešli ste úrovňou 1 |
3 | 2 <= 5 (pravda) | Prešli ste úrovňou 2 |
4 | 3 <= 5 (pravda) | Prešli ste úrovňou 3 |
5 | 4 <= 5 (pravda) | Prešli ste 4. úrovňou |
6 | 5 <= 5 (true) | Prešli ste 5. úrovňou |
7 | 6 <= 5 (nepravdivé) | mimo slučky while |
2. Opakujte cyklus Loop
Táto slučka vyhodnocuje jej stav na konci každého prechodu cez slučku. Smyčka opakovania… while je podobná cyklu while s jedným kľúčovým rozdielom. Telo slučky repeat… while sa vykoná raz pred kontrolou testovacieho výrazu.
Syntax cyklu opakovania … zatiaľ čo je:
repeat ( // statements… ) while (testExpression)
Ako funguje opakovanie… kým funguje slučka?
Telo slučky repeat… while sa vykoná raz (pred kontrolou testovacieho výrazu). Až potom sa skontroluje testExpression.
Ak je testExpression vyhodnotený ako true, vykonajú sa príkazy v tele cyklu a testExpression sa vyhodnotí znova. Tento proces pokračuje, kým sa testExpression nevyhodnotí false
.
Keď je testExpression false
, slučka repeat… while sa ukončí.
Vývojový diagram opakovania … zatiaľ čo slučka
Príklad 2: Opakujte krok Loop
var currentLevel:Int = 0, finalLevel:Int = 5 let gameCompleted = true repeat ( //play game if gameCompleted ( print("You have passed level (currentLevel)") currentLevel += 1 ) ) while (currentLevel <= finalLevel) print("outside of repeat while loop")
Po spustení programu bude výstup:
Prešli ste úrovňou 0 Prešli ste úrovňou 1 Prešli ste úrovňou 2 Prešli ste úrovňou 3 Prešli ste úrovňou 4 Prešli ste úrovňou 5 mimo opakovania while
Vo vyššie uvedenom príklade sa po prvýkrát vykonajú príkazy vnútri slučky. A pri ďalšej iterácii skontroluje stav currentLevel <= finalLevel
.
Ak sa podmienka vráti true
, vykonajú sa príkazy vo vnútri cyklu while, inak sa slučka ukončí.
Iterácia | Podmienka (currentLevel <= finalLevel) | Výkon |
---|---|---|
1 | 0 <= 5 (pravda) | Prešli ste úrovňou 0 |
2 | 1 <= 5 (pravda) | Prešli ste úrovňou 1 |
3 | 2 <= 5 (pravda) | Prešli ste úrovňou 2 |
4 | 3 <= 5 (pravda) | Prešli ste úrovňou 3 |
5 | 4 <= 5 (pravda) | Prešli ste 4. úrovňou |
6 | 5 <= 5 (true) | Prešli ste 5. úrovňou |
7 | 6 <= 5 (nepravdivé) | mimo slučky while while |
Aj keď majú oba cykly while
a repeat while
cyklus rovnaké kroky vykonania, podmienka currentLevel <= finalLevel
v repeat while
cykle sa vykoná až po vykonaní príkazov v ňom.
Ale v while
, podmienka je skontrolovaná na začiatku pred vykonaním príkazov v nej.
3. Nekonečné, zatiaľ čo slučka
Ak sa testovací výraz nikdy nevyhodnotí false
, telo while
a repeat… while
slučka sa vykonajú nekonečne veľa krát.
Príklad 3: Nekonečné, kým je slučka
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Po spustení programu bude výstup:
Ahoj, svet! Ahoj, svet!…
Keď spustíte program, obe slučky vykonajú print("Hello, World!")
príkaz nekonečne veľa krát. Takže môžete vidieť nepretržitý výstup Dobrý deň, svet! v konzole.