0Pricing
Kotlin Academy · Урок

while и do-while: когда что использовать

Пишите циклы while и do-while и разбирайтесь, в каких случаях их применять.

«while и do-while: когда что использовать» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.

Два вида циклов while

Kotlin предлагает циклы while с проверкой условия до итерации и do-while с проверкой после неё. Разница в том, что do-while всегда выполняет тело хотя бы один раз.

Базовый цикл while

while проверяет условие перед каждой итерацией. Если оно изначально ложно, тело не выполнится ни разу.

fun main() {
    var count = 0
    while (count < 3) {
        println("count = $count")
        count++
    }
}

Базовый цикл do-while

do-while сначала выполняет тело, а затем проверяет условие. Тело всегда выполняется хотя бы один раз.

fun main() {
    var n = 10
    do {
        println("n = $n")
        n--
    } while (n > 7)
}

Чтение до сигнального значения

Циклы while особенно подходят, когда неизвестно, сколько итераций потребуется, например при чтении до получения сигнального значения.

fun main() {
    val data = listOf(3, 7, 0, 9)
    var i = 0
    while (i < data.size && data[i] != 0) {
        println("got ${data[i]}")
        i++
    }
    println("stopped at index $i")
}

Поиск в списке

Используйте while для поиска с досрочным завершением: остановитесь сразу после выполнения условия.

fun main() {
    val nums = listOf(2, 4, 7, 8, 10)
    var i = 0
    while (i < nums.size && nums[i] % 2 == 0) i++
    println("first odd at index $i = ${nums[i]}") // 2 = 7
}

do-while для проверки ввода

Используйте do-while, когда сначала нужно выполнить действие (показать запрос, прочитать данные или сделать попытку), а уже затем проверить успешность.

fun main() {
    val validInputs = listOf("y", "n", "y")
    var idx = 0
    var input: String
    do {
        input = validInputs[idx++]
        println("user typed: $input")
    } while (input != "n" && idx < validInputs.size)
}

Счётчик с уменьшением

Циклы while удобно использовать для счётчиков, которые уменьшаются до нуля.

fun main() {
    var lives = 3
    while (lives > 0) {
        println("Lives left: $lives")
        lives--
    }
    println("Game over")
}

Бесконечный цикл с break

Используйте while (true) вместе с break для кода в стиле цикла обработки событий, когда условие выхода сложное.

fun main() {
    val items = listOf(1, 2, 3, -1, 4)
    var i = 0
    while (true) {
        if (i >= items.size || items[i] < 0) break
        println("ok: ${items[i]}")
        i++
    }
}

Сравнение while и for

Если количество итераций заранее известно, предпочитайте for. Используйте while, когда количество итераций зависит от состояния во время выполнения.

fun main() {
    // for: known bounds
    for (i in 1..3) print("$i ")
    println()
    // while: state-driven
    var n = 1
    while (n <= 3) { print("$n "); n++ }
    println()
}

Цикл с двумя переменными

Циклы while могут отслеживать несколько переменных, что полезно в алгоритмах вроде вычисления чисел Фибоначчи.

fun main() {
    var a = 0
    var b = 1
    while (b < 50) {
        print("$b ")
        val next = a + b
        a = b
        b = next
    }
    println() // 1 1 2 3 5 8 13 21 34
}

do-while всегда выполняется один раз

Даже если условие изначально ложно, тело do-while выполнится один раз. Иногда это именно то, что нужно, а иногда — ошибка.

fun main() {
    var x = 100
    do {
        println("x = $x") // prints once
        x--
    } while (x > 1000) // false immediately
}

Быстрая проверка

Какой цикл гарантирует выполнение своего тела хотя бы один раз независимо от условия?

Итоги

Используйте while, когда количество итераций зависит от условия во время выполнения. Используйте do-while, когда тело должно выполниться хотя бы один раз, например при проверке или повторной попытке. Если количество итераций известно, предпочитайте for.

Часто задаваемые вопросы

Урок «while и do-while: когда что использовать» бесплатный?

Да — полный текст урока «while и do-while: когда что использовать» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.

Чему я научусь в уроке «while и do-while: когда что использовать»?

Пишите циклы while и do-while и разбирайтесь, в каких случаях их применять. Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Kotlin Academy?

Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «while и do-while: когда что использовать»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Kotlin Academy?

Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Цикл for по диапазонам и коллекциям
  2. while и do-while: когда что использовать
  3. forEach, repeat и forEachIndexed
  4. break, continue и возвраты с метками
← Назад к Kotlin Academy