Циклы 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 в Котлин:
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.
Он отличается от цикла тем, что условие проверяется в конце цикла, а не в начале. Это означает, что хотя бы 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-6437e60026bf7649051386/]
Основы программирования на Java
Основы программирования на Java
ОглавлениеВВЕДЕНИЕОСНОВНЫЕ ПОНЯТИЯ 1. ПЕРЕМЕННЫЕ 2. ТИПЫ 2.1. Простые типы 2.1.1. Числовые типы 2.1.2. Символы 2.1.3. Тип boolean 2.2. Приведение типов 3. МАССИВЫ 3.1. Многомерные массивы 4. ОПЕРАТОРЫ 4.1. Арифметические операторы 4.1.1. Оператор деления по модулю 4.1.2. Арифметические операторы присваивания 4.1.3. Инкремент и декремент 4.2. Целочисленные битовые операторы и операторы отношений 4. 3. Операторы отношений4.4. Булевы логические операторы 4.5. Тернарный оператор if-then-else 4.6. Приоритеты операторов 5. УПРАВЛЕНИЕ ВЫПОЛНЕНИЕМ ПРОГРАММЫ 5.1. Условный оператор if-else 5.2. Опреатор break 5.3. Оператор switch 5.4. Оператор return 6. ЦИКЛЫ 6.1. Цикл while 6.2. Цикл do-while 6.3. Цикл for 6.4. Оператор continue ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ НА JAVA 7. КЛАССЫ 7.1. Переменные класса 7.2. Оператор new 7.3. Объявление методов 7.4. Вызов метода 7.5. Скрытие переменных 7.6. Конструкторы 7.7. Совмещение методов 7.8. Ссылка this 7.9. Наследование 7.10. Ссылка super 7.11. Замещение методов 7.12. Динамическое назначение методов 7.13. Директива final 7.14. Деструкторы 7.15. Статические методы Директива final, деструкторы и статические методы 7.16. Абстрактные классы 8. ПАКЕТЫ И ИНТЕРФЕЙСЫ 8.1. Пакеты 8.2. Интерфейсы 9. ОБРАБОТКА ИСКЛЮЧЕНИЙ 9. ![]() 9.2. Типы исключений 9.3. Неперехваченные исключения 9.4. Операторы try и catch 9.5. Несколько разделов catch 9.6. Вложенные операторы try 9.7. Оператор throw 9.8. Оператор throws Операторы throw и throws 9.9. Оператор finally 10. МНОГОПОТОЧНОЕ ПРОГРАММИРОВАНИЕ 10.1. Модель легковесных процессов в Java 10.2. Подпроцесс 10.3. Интерфейс Runnable 10.4. Приоритеты подпроцессов 10.5. Синхронизация 10.6. Методы программного интерфейса легковесных процессов 11. ВВОД/ВЫВОД 11.1. Работа с файлами 11.2. Каталоги Классы InputStream и OutputStream 11.3. Класс InputStream 11.4. Класс OutputStream Файловый поток FilelnputStream и FileOutputStream 11.5. Файловый поток FilelnputStream 11.6. Файловый поток FileOutputStream 12. ПРОГРАММИРОВНИЕ ГРАФИЧЕСКИХ ПОЛЬЗОВАТЕЛЬСКИХ ИНТЕРФЕЙСОВ 12.1. Компоненты 12.2. Класс Container 12.3. Класс Canvas 12.4. Класс Label 12. 5. Класс Button12.6. Класс Checkbox 12.7. Класс CheckboxGroup 12.8. Класс Choice 12.9. Класс List 12.10. Класс Scrollbar 12.11. Класс TextField 12.12. Класс TextArea 12.13. Стратегии размещения компонентов 12.14. Программирование окон – Window 12.15. Программирование меню 12.16. Модель обработки событий от компонентов ЗАКЛЮЧЕНИЕ БИБЛИОГРАФИЧЕСКИЙ СПИСОК |
Учебное пособие по Java: цикл do-while в Java
Введение в Java + установка Java JDK и IntelliJ IDEA для Java
Базовая структура программы на Java: понимание нашей первой программы Hello World на Java
Учебное пособие по Java: переменные и типы данных в программировании на Java
Учебник по Java: Литералы в Java
Учебник по Java: Получение пользовательского ввода в Java
Упражнение по программированию на Java 1: Калькулятор процентного соотношения платы CBSE
Учебник по Java: Глава 1 — Практический набор | Проблемы с практикой Java с решением
Учебное пособие по Java.
Операторы, типы операторов и выражения в Java
Учебное пособие по Java. Ассоциативность операторов в Java
Учебное пособие по Java. Тип данных выражений и операторы увеличения/уменьшения
Учебное пособие по Java.
Учебник по Java. Глава 2. Практический набор (вопросы по практике Java)
Учебник по Java. Введение в строки
Учебник по Java. Строковые методы в Java
0003Условные операторы Java: Оператор If-else в Java
Учебное пособие по Java: Реляционные и логические операторы в Java
Учебное пособие по Java: Операторы Switch Case в Java
Учебное пособие по Java: Практические вопросы по условным операторам и Switch Case
Упражнение по программированию на Java 2 : Rock, Paper Scissors Game в Java
Учебное пособие по Java: циклы While в Java
Учебное пособие по Java: цикл do-while в Java
Учебное пособие по Java: цикл for в Java
Учебное пособие по Java: прерывание и продолжение в Java
Учебное пособие по Java: Практические вопросы по циклам
Учебное пособие по Java: Введение в массивы
Учебное пособие по Java: Для каждого цикла в Java
Учебное пособие по Java: Многомерные массивы в Java Практические вопросы по массивам в Java
Как сделать так, чтобы IntelliJ IDEA выглядела потрясающе!
Учебное пособие по Java.
Методы в Java
Учебное пособие по Java. Перегрузка методов в Java
Учебное пособие по Java. Переменные аргументы (VarArgs) в Java
Учебник по Java. Рекурсия в Java
Учебник по Java. Практические вопросы по методам Java
Учебник по Java. Введение в объектно-ориентированное программирование
Учебник по Java. Основные термины в объектно-ориентированном программировании
Учебник по Java.
Учебное пособие по Java. Основные вопросы по объектно-ориентированному программированию
Учебное пособие по Java. Модификаторы доступа, геттеры и сеттеры в Java
Учебное пособие по Java. Упражнение 2. Решение и комментарии
Учебное пособие по Java. Конструкторы в Java
Упражнение по Java 3. Угадай число (версия OOPs)
Учебное пособие по Java. Упражнение по модификаторам доступа и конструкторам
Наследование в Java
Наследование конструкторов в Java
this и ключевое слово super в JavaПереопределение метода в Java
Динамическая отправка методов в Java
Учебное пособие по Java: Упражнение 3 — Решения и сообщения
Учебное пособие по Java: Упражнение 4 — Онлайн-библиотека
Учебник по Java: Упражнения и практические вопросы по наследованию
Учебник по Java: Абстрактные классы и абстрактные методы
Учебник по Java: Введение в интерфейсы
Учебник по Java: Абстрактные классы и интерфейсы
Почему множественное наследование не поддерживается в Java?
Пример интерфейса Java и методы по умолчанию
Наследование в интерфейсах
Учебник по Java: Полиморфизм в интерфейсах
Практика Java Вопросы по абстрактным классам и интерфейсам
Java-упражнение 4: решение и приветствие!
Интерпретируемые и компилируемые языки!
Java интерпретируется или компилируется?
Пакеты в Java
Учебное пособие по Java.
Создание пакетов в Java
Модификаторы доступа в Java
Практический набор по пакету Java и модификаторам доступа
Упражнение 5 по Java. Создание пользовательского пакета
Многопоточность в Java Создание потока путем расширения класса Thread
Создание потока Java с использованием интерфейса Runnable
Жизненный цикл потока Java
Конструкторы из класса Thread в Java
Приоритеты потока Java
Методы потока Java
Учебник по Java: практические вопросы по потоку
Упражнение 5: Решение и приветствие!
Ошибки и исключения в Java
Синтаксические ошибки, ошибки времени выполнения и логические ошибки в Java (демонстрация)
Исключения и блок Try-Catch в Java
Обработка определенных исключений в Java
Вложенный Try-Catch в Java
Класс Exception в Java
Throw vs Throws в Java
Наконец-то блок в Java и зачем он нужен!
Практический набор по ошибкам и исключениям
Java-упражнение 6: Пользовательский калькулятор | Практический вопрос по Java
Java Collections Framework
Иерархия коллекций в Java
Как правильно просматривать документацию по Java
ArrayList в Java: демонстрация и методы
LinkedList в Java: демонстрация и методы
ArrayDeque в Java
Хеширование в Java
HashSet в Java
Дата и время в Java
Класс Date в Java
Класс календаря в Java
Класс GregorianTimeCalendar и TimeZone в Java Классы и методы
DateTimeFormatter в Java
Advanced Java Practice Set
Java Упражнение 6: Решение | Пользовательский калькулятор
Java Упражнение 7: Система управления библиотекой в Java
Генерация собственных JavaDocs для нашего пакета
Javadocs: теги для документирования классов
Javadocs: теги методов для генерации документации java
Advanced Java 2 — практический набор
Упражнение 7.
Решения + комментарии
Цикл Do while — основы программирования
Кеннет Лерой Басби и Дэйв Брауншвейг
Обзор
Цикл do while — это оператор потока управления, который выполняет блок кода по крайней мере один раз, а затем повторно выполняет этот блок или нет, в зависимости от заданного логического условия в конце блока.
Некоторые языки могут использовать другое соглашение об именах для этого типа цикла. Например, в языке Pascal есть повторение до цикла , который продолжает работать до тех пор, пока управляющее выражение не станет истинным (и затем завершится), тогда как цикл while выполняется, пока управляющее выражение истинно (и завершается, когда выражение становится истинным). ЛОЖЬ). [2]
Обсуждение
Введение в циклы Test After
В категории итерации (или повторения) управляющих структур есть два часто используемых цикла проверки после.
Они таковы: делай пока и повторяй до тех пор, пока. Этот модуль охватывает оба.
Понимание итерации в целом – делать пока
Концепция итерации связана с возможным желанием повторить действие. Как и все управляющие структуры, мы задаем вопрос, чтобы контролировать выполнение цикла. Термин «петля» происходит от кругового циклического движения, которое происходит при использовании блок-схемы. Базовая форма цикла do while выглядит следующим образом:
делать
некоторые заявления или действия
некоторые заявления или действия
некоторые заявления или действия
обновить флаг
пока ответ на вопрос верный В большинстве языков программирования вопрос (называемый проверочным выражением) представляет собой логическое выражение. Тип данных Boolean имеет два значения — true и false. Давайте перепишем структуру, чтобы учесть это:
делать
некоторые заявления или действия
некоторые заявления или действия
некоторые заявления или действия
обновить флаг
пока выражение верно В структуре управления do while есть три атрибута правильно работающего цикла.
Они:
- Действие или действия
- Обновление флага
- Тестовое выражение
Английская формулировка звучит так: «Вы делаете действие, пока выражение верно». Это зацикливание на истине. Когда тестовое выражение ложно, вы останавливаете цикл и переходите к следующему элементу программы. Обратите внимание, поскольку это тест после цикла, действие будет происходить всегда хотя бы один раз . Это называется тест за циклом, потому что тест следует за действием. Его также иногда называют пост-тестовым циклом, что означает, что тест представляет собой пост (или «после» на латыни) действие и обновление.
Общие сведения об итерации — повторять до
Концепция итерации связана с возможным желанием повторить действие. Как и все управляющие структуры, мы задаем вопрос, чтобы контролировать выполнение цикла. Термин «петля» происходит от кругового циклического движения, которое происходит при использовании блок-схемы. Базовая форма цикла «Повторять до» выглядит следующим образом:
повтор
некоторые заявления или действия
некоторые заявления или действия
некоторые заявления или действия
обновить флаг
пока ответ на вопрос не станет верным В большинстве языков программирования вопрос (называемый проверочным выражением) представляет собой логическое выражение.
Тип данных Boolean имеет два значения — true и false. Давайте перепишем структуру, чтобы учесть это:
повтор
некоторые заявления или действия
некоторые заявления или действия
некоторые заявления или действия
обновить флаг
пока выражение не станет истинным В структуре управления «Повторить до» есть три атрибута правильно работающего цикла. Они:
- Действие или действия
- Обновление флага
- Тестовое выражение
Английская формулировка звучит так: «Вы повторяете действие до тех пор, пока выражение не станет верным». Это зацикливание на ложном. Когда тестовое выражение становится истинным, вы останавливаете цикл и переходите к следующему элементу программы. Обратите внимание, поскольку это тест после цикла, действие будет происходить всегда хотя бы один раз . Это называется «тест за циклом», потому что тест следует за действием. Его также иногда называют пост-тестовым циклом, что означает, что тест представляет собой пост (или «после» на латыни) действие и обновление.
Пример
Делать
Вывод "Каков ваш возраст?"
Введите user_age
Вывод «Каков возраст вашего друга?»
Введите возраст_друга
Вывод «Сумма ваших возрастов составляет:»
Вывод age_user + friend_age
Вывод «Хотите попробовать еще раз? y или n»
Входной цикл_ответ
Пока loop_response == 'y' Присутствуют три атрибута проверки после цикла. Часть действия состоит из 6 строк, которые запрашивают данные, а затем отображают общее количество двух возрастов. Обновление флага — это отображение вопроса и получение ответа для переменной loop_response. Тест представляет собой относительное сравнение на равенство значения в переменной флага с символом нижнего регистра y.
Этот тип управления циклом называется циклом, управляемым событием. Обновление флага — это событие, когда кто-то решает, хотят ли они, чтобы цикл выполнялся снова.
Использование отступа с выравниванием действий цикла и обновлением флага является обычной отраслевой практикой.
Бесконечные петли
Здесь стоит упомянуть, что хорошее программирование всегда предусматривает метод, гарантирующий, что вопрос цикла в конечном итоге окажется ложным, так что выполнение цикла прекратится, и программа продолжит работу со следующей строкой кода. Однако если этого не происходит, то программа находится в бесконечном цикле. Бесконечные циклы — это плохо. Рассмотрим следующий код:
loop_response = 'у'
Делать
Вывод "Каков ваш возраст?"
Введите user_age
Вывод «Каков возраст вашего друга?»
Введите возраст_друга
Вывод «Сумма ваших возрастов составляет:»
Вывод user_age + friend_age
Пока loop_response == 'y' Программист присвоил флагу значение перед циклом и забыл обновить флаг. Каждый раз, когда задается тестовое выражение, оно всегда будет истинным. Таким образом, бесконечный цикл, потому что программист не предусмотрел способ выхода из цикла (он забыл обновить флаг).
Рассмотрим следующий код:
делать
Вывод "Каков ваш возраст?"
Введите user_age
Вывод «Каков возраст вашего друга?»
Введите возраст_друга
Вывод «Сумма ваших возрастов составляет:»
Вывод age_user + friend_age
Вывод «Хотите попробовать еще раз? y или n»
Входной цикл_ответ
Пока loop_response = 'y' Независимо от того, что отвечает пользователь во время обновления флага, тестовое выражение не выполняет реляционное сравнение, а выполняет присваивание.
Он присваивает переменной «y» и спрашивает, верно ли «y»? Поскольку все ненулевые значения рассматриваются как истинные, ответ на текстовый вопрос верен. Виола, у тебя бесконечный цикл.
Ключевые термины
- элемент действия
- Атрибут структур управления итерацией.
- хотя бы один раз
- Указывает, что циклы test after выполняют действие хотя бы один раз.
- делать пока
- Тест после итерации структуры управления.
- бесконечный цикл
- Последовательность инструкций, которая зацикливается бесконечно, либо из-за того, что в цикле нет условия завершения, либо из-за наличия условия, которое никогда не может быть выполнено, либо из-за того, что цикл начинается заново. [3]
- повторять до
- Альтернативная структура управления тестом после итерации, доступная в некоторых языках программирования.
- образец для испытаний
- Атрибут структур управления итерацией.


А. Сухов. -Ульяновск: УлГТУ, 2006. — 88 с.
3. Операторы отношений
5. Класс Button