Šajā rakstā jūs iemācīsities izveidot un atkārtot … kamēr cilpas Swift programmēšanā.
Iepriekšējā rakstā mēs uzzinājām par for-in ciklu, lai noteiktu laiku veiktu uzdevumu kopu. Šajā rakstā jūs iemācīsities izmantot while
un repeat… while
kā alternatīvu for-in ciklam, kad atkārtojuma skaits nav zināms.
A while cikls izpilda paziņojumu kopu, līdz kļūst nosacījums false
. Šāda veida cilpas vislabāk izmantot, ja atkārtojumu skaits nav zināms pirms pirmās atkārtošanas sākuma. Swift nodrošina divu veidu ciklus:
1. Ātri, kamēr cilpa
Šī cilpa novērtē tā stāvokli katra izlaiduma sākumā.
While cikls sintakse ir:
while (TestExpression) ( // statements )
Kā darbojas cilpa?
Tā TestExpression
ir būla izteiksme.
Ja TestExpression
tiek novērtēts līdz true
,
- paziņojumi, kamēr cikls tiek izpildīts.
- un
TestExpression
tiek atkārtoti novērtēts.
Šis process turpinās, līdz TestExpression
tiek novērtēts false
. Ja TestExpression
novērtē līdz false
, kamēr cilpa tiek pārtraukta.
Bloka diagramma, kamēr cilpa
1. piemērs: kamēr cilpa
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")
Palaidot programmu, izeja būs:
Jūs esat nokārtojis 0. līmeni. Jūs esat izturējis 1. līmeni. Jūs esat izturējis 2. līmeni. Jūs esat izturējis 3. līmeni. Jūs esat izturējis 4. līmeni. Jūs esat izturējis 5. līmeni.
Iepriekš minētajā programmā mainīgais currentLevel un finalLevel tiek inicializēts uz 0 un konstants gameCompleted tiek inicializēts uz true
.
Katrā it loop ciklā tā pārbauda stāvokli currentLevel <= finalLevel
. Ja nosacījums atgriežas true
, paziņojumi iekšpusē, kamēr tiek izpildīta cilpa, pretējā gadījumā cilpa beidzas.
Atkārtojums | Nosacījums (currentLevel <= finalLevel) | Rezultāts |
---|---|---|
1 | 0 <= 5 (taisnība) | Jūs esat izturējis 0. līmeni |
2 | 1 <= 5 (taisnība) | Jūs esat izturējis 1. līmeni |
3 | 2 <= 5 (taisnība) | Jūs esat izturējis 2. līmeni |
4 | 3 <= 5 (taisnība) | Jūs esat izturējis 3. līmeni |
5 | 4 <= 5 (taisnība) | Jūs esat izturējis 4. līmeni |
6 | 5 <= 5 (taisnība) | Jūs esat izturējis 5. līmeni |
7 | 6 <= 5 (nepatiesa) | ārpus kamēr cilpa |
2. Atkārtojiet, kamēr notiek cilpa
Šī cilpa novērtē tā stāvokli katra izlaiduma beigās. Atkārtojums… kamēr cilpa ir līdzīga kamēr cilpa ar vienu galveno atšķirību. Atkārtojuma pamatteksts … kamēr cilpa tiek izpildīta vienu reizi, pirms tiek pārbaudīta testa izteiksme.
Atkārtojuma sintakse … kamēr cilpa ir:
repeat ( // statements… ) while (testExpression)
Kā atkārtot … kamēr darbojas cilpa?
Atkārtojuma pamatteksts … kamēr cilpa tiek izpildīta vienu reizi (pirms testa izteiksmes pārbaudes). Tikai pēc tam tiek pārbaudīts testExpression.
Ja testExpression tiek vērtēts kā patiess, tiek izpildīti paziņojumi cilpas iekšpusē un testExpression tiek vērtēti vēlreiz. Šis process turpinās, līdz tiek novērtēts testExpression false
.
Ja testExpression ir false
, atkārtojiet … kamēr cilpa tiek pārtraukta.
Atkārtojumu blokshēma … kamēr cilpa
2. piemērs: atkārtojiet, kamēr notiek cilpa
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")
Palaidot programmu, izeja būs:
Jūs esat nokārtojis 0. līmeni. Jūs esat izturējis 1. līmeni. Jūs esat izturējis 2. līmeni. Jūs esat izturējis 3. līmeni. Jūs esat izturējis 4. līmeni. Jūs esat izturējis 5. līmeni ārpus atkārtojuma, kamēr cikls
Iepriekš minētajā piemērā pirmo reizi tiek izpildīti paziņojumi cilpas iekšienē. Nākamajā atkārtojumā tas pārbauda stāvokli currentLevel <= finalLevel
.
Ja nosacījums atgriežas true
, paziņojumi iekšpusē, kamēr tiek izpildīta cilpa, pretējā gadījumā cilpa beidzas.
Atkārtojums | Nosacījums (currentLevel <= finalLevel) | Rezultāts |
---|---|---|
1 | 0 <= 5 (taisnība) | Jūs esat izturējis 0. līmeni |
2 | 1 <= 5 (taisnība) | Jūs esat izturējis 1. līmeni |
3 | 2 <= 5 (taisnība) | Jūs esat izturējis 2. līmeni |
4 | 3 <= 5 (taisnība) | Jūs esat izturējis 3. līmeni |
5 | 4 <= 5 (taisnība) | Jūs esat izturējis 4. līmeni |
6 | 5 <= 5 (taisnība) | Jūs esat izturējis 5. līmeni |
7 | 6 <= 5 (nepatiesa) | ārpus atkārtojuma, kamēr cilpa |
Kaut gan while
, un repeat while
cilpa ir pašas izpildes pasākumus, stāvoklis currentLevel <= finalLevel
uz repeat while
cilpas tiek izpildīts tikai pēc izpildes paziņojumus tā iekšpusē.
Bet pēc while
stāvokļa pārbauda sākumā, pirms tiek izpildīti tajā esošie paziņojumi.
3. Bezgalīgs, kamēr cilpa
Ja testa izteiksme nekad nenovērtē false
, ķermenis while
un repeat… while
cilpa tiek izpildīti bezgalīgi daudz reižu.
3. piemērs: Bezgalīgs, kamēr cilpa
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Palaidot programmu, izeja būs:
Sveika pasaule! Sveika pasaule!…
Palaidot programmu, abas cilpas izpilda print("Hello, World!")
paziņojumu bezgalīgi daudz reižu. Tātad, jūs varat redzēt nepārtrauktu izvadi Sveika, pasaule! konsolē.