I denne artikel lærer du at oprette mens og gentage … mens du løkker i Swift-programmering.
I den foregående artikel lærte vi om for-in-loop til at køre et sæt opgaver et bestemt antal gange. I denne artikel lærer du at bruge while
og repeat… while
som et alternativ til for-in-loop, når antallet af iteration er ukendt.
Et stykke loop udfører et sæt udsagn, indtil en betingelse bliver false
. Disse slags sløjfer bruges bedst, når antallet af iterationer ikke er kendt, før den første iteration begynder. Swift tilbyder to slags mens sløjfer:
1. Swift mens Loop
Denne sløjfe evaluerer dens tilstand ved starten af hver passage gennem sløjfen.
Syntaksen for while loop er:
while (TestExpression) ( // statements )
Hvordan mens loop fungerer?
Det TestExpression
er et boolsk udtryk.
Hvis den TestExpression
vurderes til true
,
- udsagn inden i mens løkken udføres.
- og den
TestExpression
evalueres igen.
Denne proces fortsætter, indtil den TestExpression
evalueres til false
. Hvis TestExpression
evalueres til false
, mens loop er afsluttet.
Flowchart af mens Loop
Eksempel 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ører programmet, vil output være:
Du har bestået niveau 0 Du har bestået niveau 1 Du har bestået niveau 2 Du har bestået niveau 3 Du har bestået niveau 4 Du har bestået niveau 5 uden for loop
I ovenstående program initialiseres variablen currentLevel og finalLevel til 0, og konstant gameCompleted initialiseres til true
.
I hver iteration af mens loop kontrollerer den tilstanden currentLevel <= finalLevel
. Hvis betingelsen vender tilbage true
, udgår udsagn inden i loop, ellers slutter loop.
Iteration | Betingelse (nuværende niveau <= endelig niveau) | Produktion |
---|---|---|
1 | 0 <= 5 (sand) | Du har bestået niveau 0 |
2 | 1 <= 5 (sand) | Du har bestået niveau 1 |
3 | 2 <= 5 (sand) | Du har bestået niveau 2 |
4 | 3 <= 5 (sand) | Du har bestået niveau 3 |
5 | 4 <= 5 (sand) | Du har bestået niveau 4 |
6 | 5 <= 5 (sand) | Du har bestået niveau 5 |
7 | 6 <= 5 (falsk) | uden for mens sløjfe |
2. Gentag mens Loop
Denne sløjfe evaluerer dens tilstand i slutningen af hver passage gennem sløjfen. Gentag… mens sløjfen ligner mens sløjfen med en nøgleforskel. Body of repeat … mens loop udføres en gang før testudtrykket kontrolleres.
Syntaksen for gentagelse… mens loop er:
repeat ( // statements… ) while (testExpression)
Hvordan gentager … mens loop fungerer?
Body of repeat … mens loop udføres en gang (inden kontrol af testudtrykket). Først derefter kontrolleres testExpression.
Hvis testExpression evalueres til sand, udføres udsagn inde i sløjfens krop, og testExpression evalueres igen. Denne proces fortsætter, indtil testExpression vurderes til false
.
Når testExpression er false
, gentages … mens loop slutter.
Flowchart of repeat … while Loop
Eksempel 2: Gentag mens sløjfe
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ører programmet, vil output være:
Du har bestået niveau 0 Du har bestået niveau 1 Du har bestået niveau 2 Du har bestået niveau 3 Du har bestået niveau 4 Du har bestået niveau 5 uden for gentagelse under loop
I ovenstående eksempel udføres udsagnene inde i sløjfen for første gang. Og til næste iteration kontrollerer den tilstanden currentLevel <= finalLevel
.
Hvis betingelsen vender tilbage true
, udgår udsagn inden i loop, ellers slutter loop.
Iteration | Betingelse (nuværende niveau <= endelig niveau) | Produktion |
---|---|---|
1 | 0 <= 5 (sand) | Du har bestået niveau 0 |
2 | 1 <= 5 (sand) | Du har bestået niveau 1 |
3 | 2 <= 5 (sand) | Du har bestået niveau 2 |
4 | 3 <= 5 (sand) | Du har bestået niveau 3 |
5 | 4 <= 5 (sand) | Du har bestået niveau 4 |
6 | 5 <= 5 (sand) | Du har bestået niveau 5 |
7 | 6 <= 5 (falsk) | uden for gentagelse under løkke |
Selvom begge while
og repeat while
loop har samme udførelsestrin, udføres betingelsen currentLevel <= finalLevel
på repeat while
loop kun efter udførelse af udsagnene inde i den.
Men i while
, tilstanden kontrolleres i starten, før de udfører udsagnene inde i den.
3. Uendelig mens Loop
Hvis testudtrykket aldrig evalueres til false
, udføres kroppen af while
og repeat… while
loop uendeligt mange gange.
Eksempel 3: Uendelig mens Loop
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Når du kører programmet, vil output være:
Hej Verden! Hej Verden!…
Når du kører programmet, udfører begge sløjfer et print("Hello, World!")
uendeligt antal gange. Så du kan se kontinuerlig output Hello, World! i konsollen.