Циклы являются способом многократного выполнения кода в Kotlin. В этом уроке мы познакомимся с одним из типов циклов, а именно — циклом while
.
Содержание статьи
- Цикл while в Kotlin
- Цикл do-while в Kotlin
- Прерывание цикла с помощью break в Kotlin
- Задачи для проверки
Если вы уже изучали другие языки программирования, вам будут знакомы концепции и, возможно, даже синтаксис.
Цикл while в Kotlin
Цикл while
повторяет блок кода, пока выполняется условие. Цикл while в Kotlin создается следующим образом:
1 2 3 | while (<CONDITION>) { <LOOP CODE> } |
Цикл проверяет условие для каждой итерации. Если условие истинно (true), цикл выполняется и переходит к другой итерации.
Если условие ложно (false), цикл останавливается. Как и выражения if, циклы while создает свою собственную область видимости.
Простейший цикл while
имеет следующую форму:
1 2 3 | while (true) { } |
Это вечный цикл while в Kotlin, так как условие всегда истинно (true). Конечно, вам вряд ли потребуется писать такой цикл while, потому что в этом случае программа будет выполняться вечно! Бесконечный цикл не приведет к сбою программы, но из-за него может зависнуть компьютер.
Далее представлен более полезные пример цикла while в Котлин:
1 2 3 4 5 | var sum = 1 while (sum < 1000) { sum = sum + (sum + 1) } |
Данный код подсчитывает математическую последовательность до того момента, где значение больше 1000
.
Цикл выполняется следующим образом:
- Перед итерацией 1:
sum
= 1, условие цикла = true - После итерации 1:
sum
= 3, условие цикла = true - После итерации 2:
sum
= 7, условие цикла = true - После итерации 3:
sum
= 15, условие цикла = true - После итерации 4:
sum
= 31, условие цикла = true - После итерации 5:
sum
= 63, условие цикла = true - После итерации 6:
sum
= 127, условие цикла = true - После итерации 7:
sum
= 255, условие цикла = true - После итерации 8:
sum
= 511, условие цикла = true - После итерации 9:
sum
= 1023, условие цикла = false
После девятой итерации переменная sum
равна 1023
, следовательно, условие sum < 1000
становится ложным (false). В данной точке — цикл останавливается.
Цикл do-while в Kotlin
Одним из вариантов цикла while
является цикл do-while. Он отличается от цикла while
тем, что условие проверяется в конце цикла, а не в начале. Это означает, что хотя бы 1 раз тело цикла будет выполнено.
1 2 3 | do { <LOOP CODE> } while (<CONDITION>) |
Далее дан пример из прошлого раздела, только здесь используется цикл do-while
:
1 2 3 4 5 | sum = 1 do { sum = sum + (sum + 1) } while (sum < 1000) |
В данном примере вывод такой же, как и раньше. Однако, так бывает не всегда. Вы можете получить другой результат с другим условием. Рассмотрим следующий цикл while
:
1 2 3 4 5 | sum = 1 while (sum < 1) { sum = sum + (sum + 1) } |
Рассмотрим аналогичный цикл do-while
, который использует такое же условие:
1 2 3 4 5 | sum = 1 do { sum = sum + (sum + 1) } while (sum < 1) |
В случае обычного цикла while
условие sum < 1
является ложным с самого начала. Это означает, что тело цикла не будет выполнено! Значение sum
будет равна 1
, потому что цикл не будет выполнять никаких итераций. В случае цикла do-while
сумма sum
будет равна 3
, потому что цикл do-while ВСЕГДА выполнится хотя бы один раз, даже если изначально условие ложное.
Прерывание цикла с помощью break в Kotlin
Иногда требуется прервать цикл раньше времени. Для этого можно использовать оператор break
, который сразу прерывает цикл и продолжает выполнение кода после него.
К примеру, рассмотрим следующий код:
1 2 3 4 5 6 7 8 | sum = 1 while (true) { sum = sum + (sum + 1) if (sum >= 1000) { break } } |
Здесь условие цикла истинно (true), поэтому цикл будет повторятся бесконечно. Однако оператор break указывает на то, что цикл while
завершится, когда сумма будет больше или равна 1000
.
Мы узнали, как написать один и тот же цикл по-разному, и тем самым продемонстрировали, что в программировании бывает много способов добиться одного и того же результата разными способами.
Вам следует выбирать наиболее удобные в зависимости от ситуации. Это подход, который вы усвоите со временем и практикой.
Задачи для проверки
1. Создайте переменную counter
, значением которой будет 0
. Создайте цикл while с условием counter < 10
, который выводит counter равен X
(где Х
заменяется значением counter
) и затем увеличивает counter
на 1
;
2. Создайте переменную counter
со значением 0
. Создайте другую переменную под названием roll
, значением которой будет 0
. Создайте цикл do-while
.
Внутри цикла укажите, что переменная roll
равна Random().nextInt(6)
, то есть выбор случайного числа между 0
и 5
. Затем увеличьте counter
на 1
.
Под конец выведите После X бросков, roll равен Y
, где Х
является значением counter
, а Y
— значением roll
. Укажите условие цикла, при котором цикл будет заканчиваться при выпаде первого 0
.