Tässä artikkelissa opit luomaan taas ja toistamaan… kun taas silmukoita Swift-ohjelmoinnissa.
Edellisessä artikkelissa kerrottiin for-in -silmukasta tehtäväsarjan suorittamiseksi tietyn määrän kertoja. Tässä artikkelissa opit käyttämään while
ja repeat… while
vaihtoehtona for-in -silmukalle, kun iteroinnin määrää ei tunneta.
A while -piiri suorittaa joukon lauseita, kunnes ehdosta tulee false
. Tällaisia silmukoita käytetään parhaiten, kun iteraatioiden määrää ei tiedetä ennen ensimmäisen iteraation alkua. Swift tarjoaa kahdenlaisia while-silmukoita:
1. Nopea silmukka
Tämä silmukka arvioi kunnonsa jokaisen silmukan läpi menon alkaessa.
While-silmukan syntaksi on:
while (TestExpression) ( // statements )
Kuinka silmukka toimii?
Se TestExpression
on looginen lauseke.
Jos TestExpression
testataan jotta true
,
- while-silmukan sisällä olevat lauseet suoritetaan.
- ja
TestExpression
arvioidaan uudelleen.
Tätä prosessia jatketaan, kunnes arvo TestExpression
arvioidaan false
. Jos TestExpression
arvioidaan false
, kun silmukka lopetetaan.
Vuokaavio silmukasta
Esimerkki 1: Vaikka silmukka
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")
Kun suoritat ohjelmaa, tulos on:
Olet läpäissyt tason 0 Olet läpäissyt tason 1 Olet läpäissyt tason 2 Olet läpäissyt tason 3 Olet läpäissyt tason 4 Olet läpäissyt tason 5 ulkopuolella silmukan ulkopuolella
Yllä olevassa ohjelmassa muuttujat currentLevel ja finalLevel alustetaan arvoon 0 ja vakio gameCompleted alustetaan arvoon true
.
Jokaisessa while-silmukan iteraatiossa se tarkistaa kunnon currentLevel <= finalLevel
. Jos ehto palaa true
, lauseet sisällä, kun silmukka suoritetaan, muuten silmukka päättyy.
Toisto | Ehto (currentLevel <= finalLevel) | Tuotos |
---|---|---|
1 | 0 <= 5 (tosi) | Olet läpäissyt tason 0 |
2 | 1 <= 5 (tosi) | Olet läpäissyt tason 1 |
3 | 2 <= 5 (tosi) | Olet läpäissyt tason 2 |
4 | 3 <= 5 (tosi) | Olet läpäissyt tason 3 |
5 | 4 <= 5 (tosi) | Olet läpäissyt tason 4 |
6 | 5 <= 5 (tosi) | Olet läpäissyt tason 5 |
7 | 6 <= 5 (väärä) | while-silmukan ulkopuolella |
2. Toista silmukan aikana
Tämä silmukka arvioi kunnonsa jokaisen silmukan läpikulun lopussa. Toista… kun taas silmukka on samanlainen kuin while-silmukka yhdellä keskeisellä erolla. Toiston kappale … kun silmukka suoritetaan kerran ennen testilausekkeen tarkistamista.
Toiston syntaksi, kun taas silmukka on:
repeat ( // statements… ) while (testExpression)
Kuinka toistaa … kun silmukka toimii?
Toiston kappale … kun silmukka suoritetaan kerran (ennen testilausekkeen tarkistamista). Vasta sitten testExpression tarkistetaan.
Jos testExpression arvioidaan tosi, silmukan rungon sisällä olevat lauseet suoritetaan ja testExpression arvioidaan uudelleen. Tätä prosessia jatketaan, kunnes testExpression arvioidaan false
.
Kun testExpression on false
, toista… silmukan päättyessä.
Vuokaavio toistosta … silmukan aikana
Esimerkki 2: Toista silmukan aikana
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")
Kun suoritat ohjelmaa, tulos on:
Olet läpäissyt tason 0 Olet läpäissyt tason 1 Olet läpäissyt tason 2 Olet läpäissyt tason 3 Olet läpäissyt tason 4 Olet läpäissyt tason 5 toistamisen ulkopuolella silmukan aikana
Yllä olevassa esimerkissä silmukan sisällä olevat lauseet suoritetaan ensimmäistä kertaa. Ja seuraavaa iteraatiota varten se tarkistaa kunnon currentLevel <= finalLevel
.
Jos ehto palaa true
, lauseet sisällä, kun silmukka suoritetaan, muuten silmukka päättyy.
Toisto | Ehto (currentLevel <= finalLevel) | Tuotos |
---|---|---|
1 | 0 <= 5 (tosi) | Olet läpäissyt tason 0 |
2 | 1 <= 5 (tosi) | Olet läpäissyt tason 1 |
3 | 2 <= 5 (tosi) | Olet läpäissyt tason 2 |
4 | 3 <= 5 (tosi) | Olet läpäissyt tason 3 |
5 | 4 <= 5 (tosi) | Olet läpäissyt tason 4 |
6 | 5 <= 5 (tosi) | Olet läpäissyt tason 5 |
7 | 6 <= 5 (väärä) | toiston ulkopuolella silmukan aikana |
Vaikka molemmat while
ja repeat while
silmukka on sama suorittamisen vaiheet, ehto currentLevel <= finalLevel
on repeat while
silmukka suoritetaan vasta suorittamalla lausuntoja sisällä.
Mutta while
kunto tarkistetaan alussa ennen sen sisältämien lausekkeiden suorittamista.
3. Ääretön silmukan aikana
Jos testilauseke ei koskaan arvioi sitä false
, runko while
ja repeat… while
silmukka suoritetaan loputtoman monta kertaa.
Esimerkki 3: Ääretön silmukan aikana
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Kun suoritat ohjelmaa, tulos on:
Hei maailma! Hei maailma!…
Kun suoritat ohjelmaa, molemmat silmukat suorittavat print("Hello, World!")
lauseen loputtoman monta kertaa. Joten näet jatkuvan tuotoksen Hei, maailma! konsolissa.