V tomto článku se naučíte vytvářet cykly while a opakovat… while v programování Swift.
V předchozím článku jsme se dozvěděli o smyčce for-in pro spuštění sady úkolů pro určitý počet opakování. V tomto článku se naučíte používat while
a repeat… while
jako alternativu smyčky for-in, když není znám počet iterací.
Smyčka while provádí sadu příkazů, dokud se nestane podmínkou false
. Tyto druhy smyček se nejlépe používají, když není znám počet iterací před začátkem první iterace. Swift poskytuje dva druhy smyček while:
1. Swift, zatímco Loop
Tato smyčka vyhodnocuje svůj stav na začátku každého průchodu smyčkou.
Syntaxe while smyčky je:
while (TestExpression) ( // statements )
Jak funguje smyčka while?
The TestExpression
je booleovský výraz.
V případě, že TestExpression
je vyhodnocena true
,
- jsou prováděny příkazy uvnitř smyčky while.
- a
TestExpression
znovu se vyhodnotí.
Tento proces pokračuje, dokud TestExpression
není vyhodnocen false
. Pokud se TestExpression
vyhodnotí false
, zatímco smyčka je ukončena.
Vývojový diagram while Loop
Pří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")
Když spustíte program, výstup bude:
Prošli jste úrovní 0 Prošli jste úrovní 1 Prošli jste úrovní 2 Prošli jste úrovní 3 Prošli jste úrovní 4 Prošli jste úrovní 5 mimo smyčku while
Ve výše uvedeném programu se proměnná currentLevel a finalLevel inicializuje na 0 a konstantní gameCompleted se inicializuje na true
.
V každé iteraci cyklu while kontroluje podmínku currentLevel <= finalLevel
. Pokud se podmínka vrátí true
, jsou příkazy uvnitř while smyčky provedeny, jinak smyčka končí.
Opakování | Podmínka (currentLevel <= finalLevel) | Výstup |
---|---|---|
1 | 0 <= 5 (true) | Prošli jste úrovní 0 |
2 | 1 <= 5 (true) | Prošli jste úrovní 1 |
3 | 2 <= 5 (true) | Prošli jste úrovní 2 |
4 | 3 <= 5 (true) | Prošli jste úrovní 3 |
5 | 4 <= 5 (true) | Prošli jste úrovní 4 |
6 | 5 <= 5 (true) | Prošli jste úrovní 5 |
7 | 6 <= 5 (false) | mimo smyčku while |
2. Opakujte smyčku
Tato smyčka vyhodnocuje svůj stav na konci každého průchodu smyčkou. Opakování… while je podobné jako while s jedním klíčovým rozdílem. Tělo smyčky repeat… while je provedeno jednou před kontrolou testovacího výrazu.
Syntaxe smyčky repeat… while je:
repeat ( // statements… ) while (testExpression)
Jak opakovat … zatímco smyčka funguje?
Tělo smyčky repeat… while je provedeno jednou (před kontrolou testovacího výrazu). Teprve potom se zkontroluje testExpression.
Pokud je testExpression vyhodnocen na true, jsou provedeny příkazy uvnitř těla smyčky a testExpression je znovu vyhodnocen. Tento proces pokračuje, dokud nebude testExpression vyhodnocen false
.
Je-li testExpression false
, smyčka repeat… while je ukončena.
Vývojový diagram opakování … zatímco Loop
Příklad 2: Opakujte při smyčce
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")
Když spustíte program, výstup bude:
Prošli jste úrovní 0 Prošli jste úrovní 1 Prošli jste úrovní 2 Prošli jste úrovní 3 Prošli jste úrovní 4 Prošli jste úrovní 5 mimo opakování while
Ve výše uvedeném příkladu se poprvé provedou příkazy uvnitř smyčky. A pro další iteraci zkontroluje stav currentLevel <= finalLevel
.
Pokud se podmínka vrátí true
, jsou příkazy uvnitř while smyčky provedeny, jinak smyčka končí.
Opakování | Podmínka (currentLevel <= finalLevel) | Výstup |
---|---|---|
1 | 0 <= 5 (true) | Prošli jste úrovní 0 |
2 | 1 <= 5 (true) | Prošli jste úrovní 1 |
3 | 2 <= 5 (true) | Prošli jste úrovní 2 |
4 | 3 <= 5 (true) | Prošli jste úrovní 3 |
5 | 4 <= 5 (true) | Prošli jste úrovní 4 |
6 | 5 <= 5 (true) | Prošli jste úrovní 5 |
7 | 6 <= 5 (false) | mimo smyčku while while |
Ačkoli oba while
i repeat while
smyčka mají stejné kroky provádění, podmínka currentLevel <= finalLevel
ve repeat while
smyčce se provede až po provedení příkazů uvnitř.
Ale while
, stav je kontrolován na začátku před provedením prohlášení uvnitř.
3. Nekonečno při smyčce
Pokud se testovací výraz nikdy nevyhodnotí false
, tělo while
a repeat… while
smyčka se provedou nekonečně mnohokrát.
Příklad 3: Nekonečno při smyčce
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Když spustíte program, výstup bude:
Ahoj světe! Ahoj světe!…
Když spustíte program, obě smyčky provedou print("Hello, World!")
příkaz nekonečně mnohokrát. Takže můžete vidět nepřetržitý výstup Hello, World! v konzole.