В этой статье вы научитесь создавать циклы while и repeat… while в программировании на Swift.
В предыдущей статье мы узнали о цикле for-in для выполнения набора задач определенное количество раз. В этой статье вы научитесь использовать while
и repeat… while
в качестве альтернативы цикла for-in, когда количество итераций неизвестно.
Цикл while выполняет набор операторов, пока не станет условие false
. Эти виды циклов лучше всего использовать, когда количество итераций неизвестно до начала первой итерации. Swift предоставляет два вида циклов while:
1. Swift while Loop
Этот цикл оценивает свое состояние в начале каждого прохода через цикл.
Синтаксис цикла while:
while (TestExpression) ( // statements )
Как работает цикл while?
Это TestExpression
логическое выражение.
Если TestExpression
оценивается как true
,
- операторы внутри цикла while выполняются.
- и
TestExpression
снова оценивается.
Этот процесс продолжается до тех пор, пока не TestExpression
будет оценено значение false
. Если TestExpression
значение false
равно, цикл while завершается.
Блок-схема цикла while
Пример 1: цикл while
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. Повторить во время цикла
Этот цикл оценивает свое состояние в конце каждого прохода через цикл. Цикл repeat… while похож на цикл while с одним ключевым отличием. Тело цикла repeat… while выполняется один раз перед проверкой тестового выражения.
Синтаксис цикла repeat… while:
repeat ( // statements… ) while (testExpression)
Как работает цикл … while?
Тело цикла repeat… while выполняется один раз (перед проверкой тестового выражения). Только после этого проверяется testExpression.
Если testExpression имеет значение true, инструкции внутри тела цикла выполняются, и testExpression вычисляется снова. Этот процесс продолжается до тех пор, пока не будет оценено значение testExpression false
.
Когда testExpression равно false
, цикл повторения… while завершается.
Блок-схема повторения… цикла while
Пример 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. Бесконечный цикл while
Если тестовое выражение никогда не оценивается false
, тело while
и repeat… while
цикл выполняется бесконечное количество раз.
Пример 3: бесконечный цикл while
while (true) ( print("Hello, World!") )
repeat ( print("Hello, World!") ) while (true)
Когда вы запустите программу, вывод будет:
Привет мир! Привет мир!…
Когда вы запускаете программу, оба цикла выполняют print("Hello, World!")
оператор бесконечное количество раз. Итак, вы можете видеть непрерывный вывод Hello, World! в консоли.