Menu
Coddy logo textTech

Break

Часть раздела Основы путешествия по R на Coddy. Урок 40 из 78.

Иногда нужно выйти из цикла досрочно, before он завершит все свои итерации. Инструкция 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 полностью остановил loop. Обрати внимание, что 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

Задание

Легко

Прочитайте number limit из input. Используйте цикл for, чтобы выполнить итерацию от 1 до limit, но остановите loop досрочно с помощью break, когда встретите первый number, который divisible both 3 и 7.

Выводите каждый number перед проверкой condition. Когда вы find number, который divisible both 3 и 7, выведите этот number, затем выйдите из loop.

После того как loop ended, выведите "Loop ended" с помощью print().

Например, если input равен 30, output должен быть таким:

[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"

Loop останавливается на 21, потому что это первый number, который divisible both 3 и 7 (21 = 3 × 7).

Попробуйте сами

# Прочитать ввод
con <- file("stdin", "r")
limit <- as.integer(suppressWarnings(readLines(con, n = 1)))

# TODO: Напишите ваш код ниже
# Используйте цикл for от 1 до limit
# Выводите каждое число перед проверкой условия
# Прервите цикл, когда найдёте число, делимое и на 3, и на 7
# Hint: Используйте оператор %% для проверки делимости


# Выведите "Loop ended" после цикла
print("Loop ended")
quiz iconПроверьте себя

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

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

Потренируйтесь самостоятельно: Онлайн-компилятор R