Šiame straipsnyje jūs sužinosite, kaip kurti ir kartoti …, o ciklus atliekant „Swift“ programavimą.
Ankstesniame straipsnyje mes sužinojome apie „for-in“ ciklą, kad tam tikrą skaičių kartų vykdytumėte užduočių rinkinį. Šiame straipsnyje jūs išmoksite naudoti while
ir repeat… while
kaip alternatyvą for-in ciklui, kai nežinomas iteracijos skaičius.
„While“ ciklas vykdo sakinių rinkinį, kol tampa sąlyga false
. Tokio tipo kilpas geriausia naudoti, kai iki pirmosios kartojimo pradžios nežinomas pakartojimų skaičius. „Swift“ teikia dviejų rūšių „loop“:
1. Greitai, kol kilpa
Ši kilpa įvertina jo būklę kiekvieno praėjimo per kilpą pradžioje.
„While loop“ sintaksė yra:
while (TestExpression) ( // statements )
Kaip veikia kilpa?
Tai TestExpression
yra loginė išraiška.
Jei TestExpression
įvertinama true
,
- vykdomi sakiniai „while“ ciklo viduje.
- ir
TestExpression
vėl įvertinama.
Šis procesas tęsiasi tol, kol TestExpression
bus įvertinta false
. Jei TestExpression
įvertins false
, kol ciklas bus nutrauktas.
„Loop“ schema
1 pavyzdys: o ciklas
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")
Kai paleisite programą, išvestis bus:
Jūs perėjote 0 lygį Perėjote 1 lygį Perėjote 2 lygį Perėjote 3 lygį Perėjote 4 lygį Perėjote 5 lygį ne ciklo metu
Pirmiau pateiktoje programoje kintamasis currentLevel ir finalLevel inicializuojamas į 0, o konstanta gameCompleted - į true
.
Kiekvienoje kartos ciklo iteracijoje jis tikrina būklę currentLevel <= finalLevel
. Jei sąlyga grįžta true
, sakiniai viduje, kol vykdoma kilpa, kitaip ciklas baigiasi.
Kartojimas | Sąlyga (currentLevel <= finalLevel) | Rezultatas |
---|---|---|
1 | 0 <= 5 (teisinga) | Jūs perėjote 0 lygį |
2 | 1 <= 5 (tiesa) | Jūs perėjote 1 lygį |
3 | 2 <= 5 (teisinga) | Jūs perėjote 2 lygį |
4 | 3 <= 5 (teisinga) | Jūs perėjote 3 lygį |
5 | 4 <= 5 (tiesa) | Jūs perėjote 4 lygį |
6 | 5 <= 5 (teisinga) | Jūs perėjote 5 lygį |
7 | 6 <= 5 (klaidinga) | už ciklo ribų |
2. Pakartokite, kol kilpa
Ši kilpa įvertina jo būklę kiekvieno praėjimo per kilpą pabaigoje. Pakartokite … o ciklas yra panašus į „loop“ su vienu pagrindiniu skirtumu. Pakartotinis tekstas … o ciklas vykdomas vieną kartą prieš patikrinant testo išraišką.
Kartojimo sintaksė … o ciklas yra:
repeat ( // statements… ) while (testExpression)
Kaip pakartoti … kol ciklas veikia?
Pakartotinis tekstas … o ciklas vykdomas vieną kartą (prieš patikrinant testo išraišką). Tik tada patikrinamas testExpression.
Jei „testExpression“ vertinama kaip teisinga, vykdomi sakiniai ciklo kūne ir testExpression vertinama dar kartą. Šis procesas tęsiasi tol, kol bus įvertinta „testExpression“ false
.
Kai yra „testExpression“ false
, pakartokite… kol ciklas baigsis.
Pakartotinių schema … o ciklas
2 pavyzdys: pakartokite, kol ciklas
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")
Kai paleisite programą, išvestis bus:
Jūs perėjote 0 lygį Jūs perėjote 1 lygį Perėjote 2 lygį Perėjote 3 lygį Perėjote 4 lygį Perėjote 5 lygį ne kartodami, kol ciklas
Pirmiau pateiktame pavyzdyje pirmą kartą ciklo viduje vykdomi teiginiai. Ir kitą kartojimą tikrina būklę currentLevel <= finalLevel
.
Jei sąlyga grįžta true
, sakiniai viduje, kol vykdoma kilpa, kitaip ciklas baigiasi.
Kartojimas | Sąlyga (currentLevel <= finalLevel) | Rezultatas |
---|---|---|
1 | 0 <= 5 (teisinga) | Jūs perėjote 0 lygį |
2 | 1 <= 5 (tiesa) | Jūs perėjote 1 lygį |
3 | 2 <= 5 (teisinga) | Jūs perėjote 2 lygį |
4 | 3 <= 5 (teisinga) | Jūs perėjote 3 lygį |
5 | 4 <= 5 (tiesa) | Jūs perėjote 4 lygį |
6 | 5 <= 5 (teisinga) | Jūs perėjote 5 lygį |
7 | 6 <= 5 (klaidinga) | ne kartoti, o kilpa |
Nors tiek while
ir repeat while
kilpa turi tuos pačius vykdymo veiksmus, su sąlyga, currentLevel <= finalLevel
ant repeat while
kilpos yra vykdomas tik po to vykdyti pareiškimus viduje.
Tačiau while
būsena patikrinama pradžioje, prieš vykdant joje esančius teiginius.
3. Begalinis, kol ciklas
Jei bandomoji išraiška niekada neįvertina false
, kūnas while
ir repeat… while
ciklas vykdomi begalinį skaičių kartų.
3 pavyzdys: begalinis, kol ciklas
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Kai paleisite programą, išvestis bus:
Labas pasauli! Labas pasauli!…
Kai paleidžiate programą, abu print("Hello, World!")
ciklai vykdo pareiškimą begalinį skaičių kartų. Taigi, jūs galite pamatyti nuolatinį išėjimą Sveiki, pasauli! konsolėje.