Kiire aeg ja korrake silmuse ajal (koos näidetega)

Lang L: none (table-of-contents)

Selles artiklis õpitakse Swifti programmeerimisel silmuseid looma ja kordama.

Eelmises artiklis õppisime for-in-tsükli kohta, et teatud arvu kordi ülesandeid täita. Selle artikli õpid kasutamise whileja repeat… whilekui alternatiivi for-silmuses kui korduste arvu, ei ole teada.

Mingi aja jooksul täidab lause lausekomplekti, kuni tingimus saab false. Selliseid tsükleid saab kõige paremini kasutada, kui enne esimese iteratsiooni algust pole korduste arv teada. Swift pakub kahte tüüpi silmuseid:

1. Kiire aas

See silmus hindab selle seisundit iga silmuse läbimise alguses.

While tsükli süntaks on:

 while (TestExpression) ( // statements )

Kuidas silmus töötab?

See TestExpressionon tõeväärtuse väljend.

Kui TestExpressionhinnatakse, et true,

  • käske while-tsükli sees täidetakse.
  • ja TestExpressionhinnatakse uuesti.

See protsess kestab seni, kuni TestExpressionhinnatakse false. Kui TestExpressionhindab false, kuni silmus on lõpetatud.

Loopi voo diagramm

Näide 1: Loopi ajal

 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")

Programmi käivitamisel on väljund järgmine:

 Olete läbinud taseme 0 olete läbinud 1. taseme olete läbinud 2. taseme olete läbinud 3. taseme olete läbinud 4. taseme olete läbinud 5. taseme väljaspool tsüklit 

Ülaltoodud programmis initsialiseeritakse muutujad currentLevel ja finalLevel väärtuseks 0 ning konstantseks gameCompleted väärtuseks true.

Iga loopi iteratsiooni korral kontrollib see seisundit currentLevel <= finalLevel. Kui tingimus naaseb true, on tsükli käivitamise ajal sees olevad laused vastasel juhul silmus lõpetatud.

Täitmise etapid
Kordus Tingimus (currentLevel <= finalLevel) Väljund
1 0 <= 5 (tõene) Olete läbinud taseme 0
2 1 <= 5 (tõene) Olete läbinud 1. taseme
3 2 <= 5 (tõene) Olete läbinud 2. taseme
4 3 <= 5 (tõene) Olete läbinud 3. taseme
5 4 <= 5 (tõene) Olete läbinud 4. taseme
6 5 <= 5 (tõene) Olete läbinud 5. taseme
7 6 <= 5 (vale) väljaspool silmust

2. Korda silmuse ajal

See silmus hindab selle seisundit iga silmuse läbimise lõpus. Kordus … samas kui silmus sarnaneb samal ajal kui ühe võtme erinevusega. Korduse keha, samal ajal kui tsükkel käivitatakse üks kord enne testi avaldise kontrollimist.

Korduse süntaks samal ajal kui tsükkel on:

 repeat ( // statements… ) while (testExpression)

Kuidas korrata … kui silmus töötab?

Korduse keha, samal ajal kui tsükkel käivitatakse üks kord (enne testi avaldise kontrollimist). Alles seejärel kontrollitakse testExpression.

Kui testExpressioni väärtuseks on seatud tõene, käivitatakse silmuse kehas olevad laused ja testExpression hinnatakse uuesti. See protsess kestab seni, kuni testExpression on hinnatud false.

Kui testExpression on false, korrake…, kuni silmus lõpeb.

Korduse vooskeem … silmuse ajal

Näide 2: korrake silmuse ajal

 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") 

Programmi käivitamisel on väljund järgmine:

 Olete läbinud taseme 0 olete läbinud 1. taseme olete läbinud 2. taseme olete läbinud 3. taseme olete läbinud 4. taseme olete läbinud 5. taseme väljaspool kordust, kui tsükkel 

Ülaltoodud näites täidetakse esmakordselt tsükli sees olevad laused. Ja järgmise korduse korral kontrollib see seisukorda currentLevel <= finalLevel.

Kui tingimus naaseb true, on tsükli käivitamise ajal sees olevad laused muidu silmus lõpetatud.

Täitmise etapid
Kordus Tingimus (currentLevel <= finalLevel) Väljund
1 0 <= 5 (tõene) Olete läbinud taseme 0
2 1 <= 5 (tõene) Olete läbinud 1. taseme
3 2 <= 5 (tõene) Olete läbinud 2. taseme
4 3 <= 5 (tõene) Olete läbinud 3. taseme
5 4 <= 5 (tõene) Olete läbinud 4. taseme
6 5 <= 5 (tõene) Olete läbinud 5. taseme
7 6 <= 5 (vale) väljaspool kordust silmuse ajal

Kuigi nii whileja repeat whileloop on sama täitmise samme, tingimusel currentLevel <= finalLevel kohta repeat whileloop täidetakse ainult pärast täidesaatva avaldused sees.

Kuid pärast whileseda kontrollitakse seisundit alguses, enne kui selles olevad avaldused käivitatakse.

3. Lõputu, samas aas

Kui testväljend ei anna kunagi tulemust false, käivitatakse keha whileja repeat… whilesilmus lõpmatult mitu korda.

Näide 3: lõpmatu aasa ajal

 while (true) ( print("Hello, World!") )
 repeat ( print("Hello, World!") ) while (true)

Programmi käivitamisel on väljund järgmine:

Tere, Maailm! Tere, Maailm!…

Programmi käivitamisel täidavad mõlemad tsüklid print("Hello, World!")avalduse lõpmatu arv kordi. Niisiis, näete pidevat väljundit Tere, maailm! konsoolis.

Huvitavad Artiklid...