В тази статия ще се научите да създавате 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!")
оператор за безкраен брой пъти. И така, можете да видите непрекъснато извеждане Здравей, Свят! в конзолата.