Menu
Coddy logo textTech

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. Этот паттерн часто встречается, когда нужно выполнять поиск до тех пор, пока не будет выполнено определенное условие.

challenge icon

Задание

Легко

Прочитайте число 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")
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы