I den här artikeln lär du dig att skapa medan och upprepa … medan loopar i Swift-programmering.
I föregående artikel lärde vi oss om in-loop för att köra en uppsättning uppgifter för ett visst antal gånger. I den här artikeln lär du dig att använda while
och repeat… while
som ett alternativ för in-loop när antalet iteration är okänt.
En stundslinga kör en uppsättning uttalanden tills ett villkor blir false
. Dessa typer av slingor används bäst när antalet iterationer inte är känt innan den första iterationen börjar. Swift tillhandahåller två typer av ögleslingor:
1. Snabbt medan Loop
Denna slinga utvärderar dess tillstånd i början av varje pass genom slingan.
Syntaxen för while loop är:
while (TestExpression) ( // statements )
Hur medan loop fungerar?
Det TestExpression
är ett booleskt uttryck.
Om den TestExpression
utvärderas till true
,
- uttalanden inuti while-slingan körs.
- och
TestExpression
utvärderas igen.
Denna process fortsätter tills den TestExpression
utvärderas till false
. Om TestExpression
utvärderas till false
, medan slingan avslutas.
Flödesschema för medan Loop
Exempel 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")
När du kör programmet blir resultatet:
Du har klarat nivå 0 Du har klarat nivå 1 Du har klarat nivå 2 Du har klarat nivå 3 Du har klarat nivå 4 Du har klarat nivå 5 utanför under loop
I ovanstående program initialiseras variabeln currentLevel och finalLevel till 0 och konstant gameCompleted initialiseras till true
.
I varje iteration av while loop kontrollerar den tillståndet currentLevel <= finalLevel
. Om villkoret återvänder true
avslutas uttalanden inuti medan slingan annars slutar slingan.
Iteration | Skick (nuvarande nivå <= slutlig nivå) | Produktion |
---|---|---|
1 | 0 <= 5 (sant) | Du har klarat nivå 0 |
2 | 1 <= 5 (sant) | Du har klarat nivå 1 |
3 | 2 <= 5 (sant) | Du har klarat nivå 2 |
4 | 3 <= 5 (sant) | Du har klarat nivå 3 |
5 | 4 <= 5 (sant) | Du har klarat nivå 4 |
6 | 5 <= 5 (sant) | Du har klarat nivå 5 |
7 | 6 <= 5 (falskt) | utanför stundslingan |
2. Upprepa medan Loop
Denna slinga utvärderar dess tillstånd i slutet av varje pass genom slingan. Upprepa … medan slingan liknar medan slingan med en nyckeldifferens. Upprepningens kropp … medan slingan körs en gång innan testuttrycket kontrolleras.
Syntaxen för upprepning … medan loop är:
repeat ( // statements… ) while (testExpression)
Hur upprepas … medan loop fungerar?
Upprepningens kropp … medan slingan körs en gång (innan testuttrycket kontrolleras). Först då är testExpression kontrollerat.
Om testExpression utvärderas till sant körs uttalanden inuti slingan och testExpression utvärderas igen. Denna process fortsätter tills testExpression utvärderas till false
.
När testExpression är false
, upprepas … medan slingan avslutas.
Flödesschema för upprepning … medan Loop
Exempel 2: Upprepa medan 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")
När du kör programmet blir resultatet:
Du har klarat nivå 0 Du har klarat nivå 1 Du har klarat nivå 2 Du har klarat nivå 3 Du har klarat nivå 4 Du har klarat nivå 5 utanför repetition under loop
I exemplet ovan körs uttalandena inuti slingan för första gången. Och för nästa iteration kontrollerar den tillståndet currentLevel <= finalLevel
.
Om villkoret återvänder true
avslutas uttalanden inuti medan slingan annars slutar slingan.
Iteration | Skick (nuvarande nivå <= slutlig nivå) | Produktion |
---|---|---|
1 | 0 <= 5 (sant) | Du har klarat nivå 0 |
2 | 1 <= 5 (sant) | Du har klarat nivå 1 |
3 | 2 <= 5 (sant) | Du har klarat nivå 2 |
4 | 3 <= 5 (sant) | Du har klarat nivå 3 |
5 | 4 <= 5 (sant) | Du har klarat nivå 4 |
6 | 5 <= 5 (sant) | Du har klarat nivå 5 |
7 | 6 <= 5 (falskt) | utanför repetitionen medan slingan |
Även om båda while
och repeat while
loop har samma exekveringssteg, körs villkoret currentLevel <= finalLevel
på repeat while
loop bara efter att ha utfört uttalandena i den.
Men i while
, kontrolleras tillståndet i början innan uttalandena inuti körs.
3. Oändlig medan loop
Om testuttrycket aldrig utvärderas till utförs false
kroppen av while
och repeat… while
loop oändligt många gånger.
Exempel 3: Infinite while Loop
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
När du kör programmet blir resultatet:
Hej världen! Hej världen!…
När du kör programmet kör båda loopar print("Hello, World!")
uttalanden för oändligt antal gånger. Så du kan se kontinuerlig produktion Hello, World! i konsolen.