U ovom ćete članku naučiti stvarati while i ponavljati… while petlje u Swift programiranju.
U prethodnom smo članku saznali o petlji for-in za pokretanje skupa zadataka određeni broj puta. U ovom ćete članku naučiti koristiti while
i repeat… while
kao alternativu for-in petlji kada je broj iteracija nepoznat.
Petlja while izvršava skup naredbi dok uvjet ne postane false
. Ovakve se petlje najbolje koriste kada broj iteracija nije poznat prije početka prve iteracije. Swift nudi dvije vrste while petlji:
1. Brzo dok petljate
Ova petlja procjenjuje svoje stanje na početku svakog prolaska kroz petlju.
Sintaksa while petlje je:
while (TestExpression) ( // statements )
Kako while petlja radi?
To TestExpression
je logički izraz.
Ako TestExpression
se procjenjuje na true
,
- izvršavaju se izrazi unutar while petlje.
- i
TestExpression
ponovno se ocjenjuje.
Ovaj postupak traje sve dok se TestExpression
ne ocijeni false
. Ako TestExpression
evaluira do false
, petlja while prestaje.
Dijagram toka while Loop
Primjer 1: Dok petlja
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")
Kada pokrenete program, izlaz će biti:
Prešli ste nivo 0 Prošli ste nivo 1 Prošli ste nivo 2 Prošli ste nivo 3 Prošli ste nivo 4 Prošli ste nivo 5 izvan while petlje
U gornjem programu, varijabla currentLevel i finalLevel inicijaliziraju se na 0, a konstantna gameCompleted inicijalizira na true
.
U svakoj iteraciji while petlje provjerava stanje currentLevel <= finalLevel
. Ako se uvjet vrati true
, naredbe unutar while petlje se izvršavaju, inače se petlja završava.
Iteracija | Stanje (currentLevel <= finalLevel) | Izlaz |
---|---|---|
1 | 0 <= 5 (točno) | Prešli ste nivo 0 |
2 | 1 <= 5 (točno) | Prošli ste nivo 1 |
3 | 2 <= 5 (točno) | Prošli ste razinu 2 |
4 | 3 <= 5 (točno) | Prošli ste nivo 3 |
5 | 4 <= 5 (točno) | Prošli ste nivo 4 |
6 | 5 <= 5 (točno) | Prošli ste nivo 5 |
7 | 6 <= 5 (netačno) | izvan while petlje |
2. Ponavljajte dok petljate
Ova petlja procjenjuje svoje stanje na kraju svakog prolaska kroz petlju. Ponavljanje … while petlja slična je while petlji s jednom ključnom razlikom. Tijelo repeat … while petlje izvršava se jednom prije provjere testnog izraza.
Sintaksa loop … while je:
repeat ( // statements… ) while (testExpression)
Kako ponoviti … dok petlja radi?
Tijelo ponavljanja… while petlja izvršava se jednom (prije provjere testnog izraza). Tek tada se provjerava testExpression.
Ako se testExpression procijeni na true, izvršavaju se izrazi unutar tijela petlje, a testExpression se ponovno procjenjuje. Ovaj se postupak nastavlja dok se testExpression ne procijeni na false
.
Kada je testExpression false
, ponavljanje… while petlja se završava.
Dijagram toka ponavljanja … dok se ponavlja
Primjer 2: Ponovite dok petlja
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")
Kada pokrenete program, izlaz će biti:
Prešli ste nivo 0 Prošli ste nivo 1 Prošli ste nivo 2 Prošli ste nivo 3 Prošli ste nivo 4 Prošli ste nivo 5 izvan ponavljanja while petlje
U gornjem primjeru se prvi put izvršavaju izrazi unutar petlje. I za sljedeću iteraciju provjerava stanje currentLevel <= finalLevel
.
Ako se uvjet vrati true
, naredbe unutar while petlje se izvršavaju, inače se petlja završava.
Iteracija | Stanje (currentLevel <= finalLevel) | Izlaz |
---|---|---|
1 | 0 <= 5 (točno) | Prešli ste nivo 0 |
2 | 1 <= 5 (točno) | Prošli ste nivo 1 |
3 | 2 <= 5 (točno) | Prošli ste razinu 2 |
4 | 3 <= 5 (točno) | Prošli ste nivo 3 |
5 | 4 <= 5 (točno) | Prošli ste nivo 4 |
6 | 5 <= 5 (točno) | Prošli ste nivo 5 |
7 | 6 <= 5 (netačno) | izvan ponavljanja while petlje |
Iako su obje while
te repeat while
petlje imaju iste korake izvršenja, stanje currentLevel <= finalLevel
na repeat while
petlji izvršava tek nakon izvršenja izjave unutar njega.
Ali u while
, stanje se provjerava na početku prije izvođenja naredbi unutar njega.
3. Beskonačno dok petlja
Ako se testni izraz nikad ne izračuna false
, tijelo while
i repeat… while
petlje izvršava se neograničen broj puta.
Primjer 3: Beskonačno dok petlja
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Kada pokrenete program, izlaz će biti:
Pozdrav svijete! Pozdrav svijete!…
Kada pokrenete program, obje petlje izvršavaju print("Hello, World!")
naredbu beskonačno mnogo puta. Dakle, možete vidjeti kontinuirani izlaz Zdravo, svijete! u konzoli.