Ātri un atkārtojiet, kamēr cilpa (ar piemēriem)

Š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 whileun repeat… whilekā 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?

TestExpressionir būla izteiksme.

Ja TestExpressiontiek novērtēts līdz true,

  • paziņojumi, kamēr cikls tiek izpildīts.
  • un TestExpressiontiek atkārtoti novērtēts.

Šis process turpinās, līdz TestExpressiontiek novērtēts false. Ja TestExpressionnovē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.

Izpildes soļi
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.

Izpildes soļi
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 whilecilpa ir pašas izpildes pasākumus, stāvoklis currentLevel <= finalLevel uz repeat whilecilpas tiek izpildīts tikai pēc izpildes paziņojumus tā iekšpusē.

Bet pēc whilestā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 whileun repeat… whilecilpa 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ē.

Interesanti raksti...