V tem članku se boste naučili ustvarjati in ponavljati zanke v programiranju Swift.
V prejšnjem članku smo izvedeli več o zanki for-in za izvajanje nabora nalog določeno število krat. V tem članku se boste naučili uporabljati while
in repeat… while
kot alternativo vhodni zanki, kadar število ponovitev ni znano.
Zanka while izvaja nabor stavkov, dokler pogoj ne postane false
. Te vrste zank je najbolje uporabiti, če število ponovitev ni znano pred začetkom prve ponovitve. Swift ponuja dve vrsti zank while:
1. Hitro med zanko
Ta zanka oceni svoje stanje na začetku vsakega prehoda skozi zanko.
Sintaksa zanke while je:
while (TestExpression) ( // statements )
Kako deluje zanka?
Je TestExpression
logični izraz.
Če TestExpression
je vrednost ocenjena na true
,
- stavki znotraj zanke while se izvajajo.
- in
TestExpression
se ponovno oceni.
Ta postopek se nadaljuje, dokler se TestExpression
ne oceni false
. Če TestExpression
ovrednoti do false
, je zanka while prekinjena.
Diagram poteka zanke while
Primer 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")
Ko zaženete program, bo rezultat:
Pretekli ste stopnjo 0 Pretekli ste stopnjo 1 Prešli ste stopnjo 2 Prešli ste stopnjo 3 Prešli ste stopnjo 4 Prešli ste stopnjo 5 zunaj zanke while
V zgornjem programu sta spremenljivka currentLevel in finalLevel inicializirana na 0, konstantna gameCompleted pa na true
.
V vsaki ponovitvi zanke while preveri stanje currentLevel <= finalLevel
. Če se stanje vrne true
, se stavki v zanki while izvedejo, sicer se zanka konča.
Ponavljanje | Pogoj (currentLevel <= finalLevel) | Izhod |
---|---|---|
1. | 0 <= 5 (resnično) | Pretekli ste stopnjo 0 |
2. | 1 <= 5 (true) | Prešli ste 1. stopnjo |
3. | 2 <= 5 (resnično) | Prešli ste 2. stopnjo |
4. | 3 <= 5 (resnično) | Prešli ste 3. stopnjo |
5. | 4 <= 5 (resnično) | Pretekli ste 4. stopnjo |
6. | 5 <= 5 (resnično) | Pretekli ste 5. stopnjo |
7. | 6 <= 5 (napačno) | zunaj zanke while |
2. Ponavljajte med zanko
Ta zanka oceni svoje stanje na koncu vsakega prehoda skozi zanko. Ponovitev… while je podobna zanki while z eno ključno razliko. Telo zanke repeat … while se izvede enkrat, preden se preveri testni izraz.
Sintaksa zanke repeat … while je:
repeat ( // statements… ) while (testExpression)
Kako ponoviti… medtem ko zanka deluje?
Telo zanke repeat … while se izvede enkrat (pred preverjanjem testnega izraza). Šele nato se preveri testExpression.
Če testExpression oceni na true, se izvršijo stavki znotraj telesa zanke in testExpression se ponovno oceni. Ta postopek se nadaljuje, dokler se testExpression ne oceni na false
.
Ko je testExpression false
, se ponovitev… while konča.
Diagram poteka ponavljanja … medtem ko Loop
Primer 2: Ponovite, medtem ko zanko
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")
Ko zaženete program, bo rezultat:
Pretekli ste stopnjo 0 Pretekli ste stopnjo 1 Prešli ste raven 2 Prešli ste raven 3 Prešli ste raven 4 Prešli ste raven 5 zunaj ponavljajoče se zanke while
V zgornjem primeru se stavki znotraj zanke prvič izvršijo. In za naslednjo ponovitev preveri stanje currentLevel <= finalLevel
.
Če se stanje vrne true
, se stavki v zanki while izvedejo, sicer se zanka konča.
Ponavljanje | Pogoj (currentLevel <= finalLevel) | Izhod |
---|---|---|
1. | 0 <= 5 (resnično) | Pretekli ste stopnjo 0 |
2. | 1 <= 5 (true) | Prešli ste 1. stopnjo |
3. | 2 <= 5 (resnično) | Prešli ste 2. stopnjo |
4. | 3 <= 5 (resnično) | Prešli ste 3. stopnjo |
5. | 4 <= 5 (resnično) | Pretekli ste 4. stopnjo |
6. | 5 <= 5 (resnično) | Pretekli ste 5. stopnjo |
7. | 6 <= 5 (napačno) | zunaj ponovitve while zanke |
Čeprav imata oba while
in repeat while
zanka enake korake izvedbe, se pogoj currentLevel <= finalLevel
v repeat while
zanki izvede šele po izvedbi stavkov znotraj nje.
Toda v while
, stanje se preveri na začetku, preden se izvršijo stavki v njem.
3. Neskončno, medtem ko zanka
Če testni izraz nikoli ne izračuna false
, se telo zanke while
in repeat… while
zanke izvede neštetokrat.
Primer 3: Neskončno, medtem ko zanka
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Ko zaženete program, bo rezultat:
Pozdravljen, svet! Pozdravljen, svet!…
Ko zaženete program, obe zanki izvajata print("Hello, World!")
stavek neštetokrat. Torej, vidite neprekinjen izhod Pozdravljeni, svet! v konzoli.