Циклы while и do-while в Kotlin с примерами кода

Циклы являются способом многократного выполнения кода в Kotlin. В этом уроке мы познакомимся с одним из типов циклов, а именно — циклом while.

Содержание статьи

  • Цикл while в Kotlin
  • Цикл do-while в Kotlin
  • Прерывание цикла с помощью break в Kotlin
  • Задачи для проверки

Если вы уже изучали другие языки программирования, вам будут знакомы концепции и, возможно, даже синтаксис.

Цикл while в Kotlin

Цикл while повторяет блок кода, пока выполняется условие. Цикл while в Kotlin создается следующим образом:

while (<CONDITION>) { <LOOP CODE> }

while (<CONDITION>) {

  <LOOP CODE>

}

Цикл проверяет условие для каждой итерации. Если условие истинно (true), цикл выполняется и переходит к другой итерации.

Если условие ложно (false), цикл останавливается. Как и выражения if, циклы while создает свою собственную область видимости.

Простейший цикл while имеет следующую форму:

while (true) { }

while (true) {

    

}

Это вечный цикл while в Kotlin, так как условие всегда истинно (true). Конечно, вам вряд ли потребуется писать такой

цикл while, потому что в этом случае программа будет выполняться вечно! Бесконечный цикл не приведет к сбою программы, но из-за него может зависнуть компьютер.

Далее представлен более полезные пример цикла while в Котлин:

var sum = 1 while (sum < 1000) { sum = sum + (sum + 1) }

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 раз тело цикла будет выполнено.

do { <LOOP CODE> } while (<CONDITION>)

do {

    <LOOP CODE>

} while (<CONDITION>)

Далее дан пример из прошлого раздела, только здесь используется цикл do-while:

sum = 1 do { sum = sum + (sum + 1) } while (sum < 1000)

sum = 1

 

do {

    sum = sum + (sum + 1)

} while (sum < 1000)

В данном примере вывод такой же, как и раньше. Однако, так бывает не всегда. Вы можете получить другой результат с другим условием. Рассмотрим следующий цикл

while:

sum = 1 while (sum < 1) { sum = sum + (sum + 1) }

sum = 1

 

while (sum < 1) {

    sum = sum + (sum + 1)

}

Рассмотрим аналогичный цикл do-while, который использует такое же условие:

sum = 1 do { sum = sum + (sum + 1) } while (sum < 1)

sum = 1

 

do {

  sum = sum + (sum + 1)

} while (sum < 1)

В случае обычного цикла while условие sum < 1 является ложным с самого начала.

Это означает, что тело цикла не будет выполнено! Значение sum будет равна 1, потому что цикл не будет выполнять никаких итераций. В случае цикла do-while сумма sum будет равна 3, потому что цикл do-while ВСЕГДА выполнится хотя бы один раз, даже если изначально условие ложное.

Прерывание цикла с помощью break в Kotlin

Иногда требуется прервать цикл раньше времени. Для этого можно использовать оператор break, который сразу прерывает цикл и продолжает выполнение кода после него.

К примеру, рассмотрим следующий код:

sum = 1 while (true) { sum = sum + (sum + 1) if (sum >= 1000) { 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.

Решения задач


[crayon-6453518ca1161818661611/]

Будет ли выполнен код, если он находится после непрерывного бесконечного цикла в JavaScript?