У цій статті ви навчитеся створювати цикли while і повторювати… while у програмуванні Swift.
У попередній статті ми дізналися про цикл for-in для запуску набору завдань певну кількість разів. У цій статті ви навчитеся використовувати while
та repeat… while
як альтернативу циклу for-in, коли кількість ітерацій невідома.
Цикл while виконує набір операторів, поки не стане умова false
. Такі типи циклів найкраще використовувати, коли кількість ітерацій невідома до початку першої ітерації. Swift надає два типи циклів while:
1. Стрім, поки петля
Цей цикл оцінює свій стан на початку кожного проходження через цикл.
Синтаксис циклу 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
, оператори всередині циклу while виконуються, інакше цикл завершується.
Ітерація | Умова (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 з однією різницею ключів. Тіло повторення… while циклу виконується один раз перед тестуванням тестового виразу.
Синтаксис циклу repeat… while:
repeat ( // statements… ) while (testExpression)
Як повторити…, поки цикл працює?
Тіло циклу repeat… while виконується один раз (перед перевіркою тестового виразу). Тільки тоді перевіряється testExpression.
Якщо testExpression оцінюється як true, виконуються оператори всередині тіла циклу, і testExpression знову обчислюється. Цей процес триває до тих пір, поки не буде оцінено testExpression false
.
Коли testExpression є false
, цикл повторення… 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 поза циклом повторення while
У наведеному вище прикладі вперше виконуються оператори всередині циклу. А для наступної ітерації він перевіряє стан currentLevel <= finalLevel
.
Якщо умова повертається true
, оператори всередині циклу while виконуються, інакше цикл завершується.
Ітерація | Умова (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 |
Хоча обидва while
і repeat while
петлі мають ті ж кроки виконання, умова currentLevel <= finalLevel
на repeat while
контурі виконується тільки після виконання операторів всередині нього.
Але в while
, умова перевіряється на початку перед виконанням операторів всередині неї.
3. Нескінченна, поки петля
Якщо тестовий вираз ніколи не обчислюється false
, тіло while
і repeat… while
циклу виконується нескінченну кількість разів.
Приклад 3: Нескінченне, поки петля
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Коли ви запускаєте програму, результат буде:
Привіт Світ! Привіт Світ!…
Коли ви запускаєте програму, обидва цикли виконують print("Hello, World!")
оператор нескінченну кількість разів. Отже, ви можете бачити безперервний вихід Привіт, Світ! у консолі.