В тази статия ще се научите да създавате while и да повтаряте … while цикли в Swift програмирането.
В предишната статия научихме за цикъл for-in за изпълнение на набор от задачи за определен брой пъти. В тази статия ще се научите да използвате whileи repeat… whileкато алтернатива на цикъл за включване, когато броят на итерациите е неизвестен.
Цикълът while изпълнява набор от изрази, докато условието стане false. Тези видове цикли се използват най-добре, когато броят на итерациите не е известен преди началото на първата итерация. Swift осигурява два вида цикъл while:
1. Бързо, докато Loop
Този цикъл оценява състоянието си в началото на всяко преминаване през цикъла.
Синтаксисът на цикъл while е:
while (TestExpression) ( // statements )
Как работи цикълът while?
Това TestExpressionе булев израз.
Ако TestExpressionсе оценява на true,
- се изпълняват инструкции в цикъла while.
- и
TestExpressionсе оценява отново.
Този процес продължава, докато TestExpressionсе оцени false. Ако TestExpressionоценява до false, цикълът while е прекратен.
Блок-схема на цикъл while

Пример 1: While Loop
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")
Когато стартирате програмата, изходът ще бъде:
Преминахте ниво 0 Преминахте ниво 1 Преминахте ниво 2 Преминахте ниво 3 Преминахте ниво 4 Преминахте ниво 5 извън цикъла while
В горната програма променливата currentLevel и finalLevel се инициализира до 0, а константата gameCompleted се инициализира до true.
Във всяка итерация на цикъл while той проверява състоянието currentLevel <= finalLevel. Ако условието се върне true, операторите вътре в цикълът се изпълняват, в противен случай цикълът се прекратява.
| Повторение | Условие (currentLevel <= finalLevel) | Изход |
|---|---|---|
| 1 | 0 <= 5 (вярно) | Преминахте ниво 0 |
| 2 | 1 <= 5 (вярно) | Преминахте ниво 1 |
| 3 | 2 <= 5 (вярно) | Преминахте ниво 2 |
| 4 | 3 <= 5 (вярно) | Преминахте ниво 3 |
| 5 | 4 <= 5 (вярно) | Преминахте ниво 4 |
| 6 | 5 <= 5 (вярно) | Преминахте ниво 5 |
| 7 | 6 <= 5 (невярно) | извън цикъл while |
2. Повторете, докато цикъла
Този цикъл оценява състоянието си в края на всяко преминаване през цикъла. Повтарянето … while цикъл е подобен на цикъл while с една ключова разлика. Тялото на repeat … while цикъл се изпълнява веднъж, преди да се провери тестовият израз.
Синтаксисът на repeat … while цикъл е:
repeat ( // statements… ) while (testExpression)
Как се повтаря … докато цикълът работи?
Тялото на repeat … while цикъл се изпълнява веднъж (преди проверка на тестовия израз). Само тогава се проверява testExpression.
Ако testExpression се оцени на true, изпълненията в тялото на цикъла се изпълняват и testExpression се оценява отново. Този процес продължава, докато testExpression се оцени на false.
Когато testExpression е false, цикълът repeat … while се прекратява.
Блок-схема на повторение … докато Loop

Пример 2: Повторете докато цикъл
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")
Когато стартирате програмата, изходът ще бъде:
Преминахте ниво 0 Преминахте ниво 1 Преминахте ниво 2 Преминахте ниво 3 Преминахте ниво 4 Преминахте ниво 5 извън цикъла за повторение докато
В горния пример за първи път се изпълняват операторите вътре в цикъла. И за следваща итерация проверява състоянието currentLevel <= finalLevel.
Ако условието се върне true, операторите вътре в цикълът се изпълняват, в противен случай цикълът се прекратява.
| Повторение | Условие (currentLevel <= finalLevel) | Изход |
|---|---|---|
| 1 | 0 <= 5 (вярно) | Преминахте ниво 0 |
| 2 | 1 <= 5 (вярно) | Преминахте ниво 1 |
| 3 | 2 <= 5 (вярно) | Преминахте ниво 2 |
| 4 | 3 <= 5 (вярно) | Преминахте ниво 3 |
| 5 | 4 <= 5 (вярно) | Преминахте ниво 4 |
| 6 | 5 <= 5 (вярно) | Преминахте ниво 5 |
| 7 | 6 <= 5 (невярно) | извън цикъла за повторение докато |
Въпреки че whileи repeat whileцикълът, и цикълът имат еднакви стъпки за изпълнение, условието currentLevel <= finalLevel за repeat whileцикъл се изпълнява само след изпълнение на изразите вътре в него.
Но в while, състоянието се проверява в началото, преди да се изпълнят изявленията вътре в него.
3. Безкрайно, докато Loop
Ако тестовият израз никога не изчислява на false, тялото на whileи repeat… whileцикъл се изпълнява безкраен брой пъти.
Пример 3: Безкрайно, докато цикъл
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Когато стартирате програмата, изходът ще бъде:
Здравей свят! Здравей свят!…
Когато стартирате програмата, и двата цикъла изпълняват print("Hello, World!")оператор за безкраен брой пъти. И така, можете да видите непрекъснато извеждане Здравей, Свят! в конзолата.








