Break
Часть раздела Основы путешествия по R на Coddy — урок 40 из 78.
Иногда вам нужно выйти из цикла раньше, до того как он завершит все свои итерации. Инструкция break позволяет немедленно остановить цикл при выполнении определенного условия.
for (i in 1:10) {
if (i == 5) {
break
}
print(i)
}Вывод:
[1] 1
[1] 2
[1] 3
[1] 4Цикл был настроен на выполнение от 1 до 10, но когда i достигла 5, инструкция break полностью остановила цикл. Обратите внимание, что 5 так и не было выведено, так как break выполняет немедленный выход.
Это особенно полезно при использовании циклов while для поиска чего-либо:
num <- 1
while (TRUE) {
if (num * num > 20) {
break
}
num <- num + 1
}
print(num)Вывод:
[1] 5Здесь while (TRUE) обычно выполнялся бы бесконечно, но break останавливает его, как только мы находим первое число, квадрат которого превышает 20. Этот паттерн часто встречается, когда нужно выполнять поиск до тех пор, пока не будет выполнено определенное условие.
Задание
ЛегкоПрочитайте число limit из входных данных. Используйте цикл for для итерации от 1 до limit, но досрочно остановите цикл с помощью break, когда встретите первое число, которое делится одновременно на 3 и на 7.
Выводите каждое число перед проверкой условия. Когда вы найдете число, делящееся и на 3, и на 7, выведите это число, а затем прервите цикл.
После завершения цикла выведите "Loop ended" с помощью функции print().
Например, если входное значение равно 30, вывод должен быть следующим:
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
[1] 11
[1] 12
[1] 13
[1] 14
[1] 15
[1] 16
[1] 17
[1] 18
[1] 19
[1] 20
[1] 21
[1] "Loop ended"Цикл останавливается на 21, так как это первое число, делящееся и на 3, и на 7 (21 = 3 × 7).
Шпаргалка
Оператор break немедленно останавливает цикл, когда выполняется определенное условие:
for (i in 1:10) {
if (i == 5) {
break
}
print(i)
}Вывод:
[1] 1
[1] 2
[1] 3
[1] 4Цикл завершается, когда i достигает 5. Значение 5 никогда не выводится на печать, потому что break осуществляет немедленный выход.
Использование break с while (TRUE) для поиска:
num <- 1
while (TRUE) {
if (num * num > 20) {
break
}
num <- num + 1
}
print(num)Вывод:
[1] 5Этот паттерн находит первое число, квадрат которого превышает 20, а затем останавливает бесконечный цикл.
Попробуйте сами
# Чтение входных данных
con <- file("stdin", "r")
limit <- as.integer(suppressWarnings(readLines(con, n = 1)))
# TODO: Напишите свой код ниже
# Используйте цикл for от 1 до limit
# Выводите каждое число перед проверкой условия
# Прервите цикл, когда найдете число, которое делится и на 3, и на 7
# Подсказка: используйте оператор %% для проверки делимости
# Вывести "Loop ended" после завершения цикла
print("Loop ended")В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы (AND, OR)Логические операторы. Часть 2 (NOT)Повторение: простая логикаВекторизованная логика. Часть 1Векторизованная логика. Часть 27Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Векторы: продвинутый уровень
Срезы и индексация векторовЛогическая индексацияАрифметика и ресайклинг векторовОператор %in%2Переменные и типы данных
Числовой тип данныхЦелочисленный тип данныхСимвольный тип данныхЛогический тип данныхПроверка типов данныхПравила именованияПропущенные значения: NAИтоги — создание переменных5Принятие решений
Оператор ifКонструкция if - elseПовторение: Простой калькуляторВложенные конструкции if - else8Циклы
Цикл ForЦикл WhileBreakNext (Continue)Повторение: ФакториалГенерация последовательностей (seq, :)Вложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыЦелочисленное деление и остаток от деленияОператоры присваиванияПовторение: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод через printКоманда cat для выводаВывод с переменнымиЧтение ввода через readline()Основы преобразования типовПовторение — Калькулятор возрастаПовторение — Истина или ложь9Функции
Объявление функцииАргументы функцииВозвращаемые значенияПовторение — функция SigmaПовторение — функция валидацииЗначения параметров по умолчанию12Итерация по последовательностям
Итерация по элементам вектораИспользование seq_along()Итерация по символам (strsplit)Функции для работы со строками