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 — локальная установка не требуется.
Все уроки этого курса
- Цикл for по диапазонам и коллекциям
- while и do-while: когда что использовать
- forEach, repeat и forEachIndexed
- break, continue и возвраты с метками