Menu
Coddy logo textTech

Break

CoddyのRジャーニー「基礎」セクションの一部。レッスン 40/78。

すべての反復を終える前に、loopを途中で終了する必要がある場合があります。break文を使うと、特定のconditionが満たされたときに、loopを直ちに停止できます。

for (i in 1:10) {
  if (i == 5) {
    break
  }
  print(i)
}

出力:

[1] 1
[1] 2
[1] 3
[1] 4

loop は 1 から 10 まで実行されるように設定されていましたが、i が 5 に達すると、break 文によって loop が完全に停止しました。break は直ちに終了するため、5 は決して出力されなかったことに注目してください。

これは、何かを探すときの while ループで特に役立ちます。

num <- 1
while (TRUE) {
  if (num * num > 20) {
    break
  }
  num <- num + 1
}
print(num)

出力:

[1] 5

ここで、while (TRUE)は通常、永遠に実行されますが、breakによって、二乗が20を超える最初の数をfindすると停止します。このパターンは、conditionが満たされるまで検索する必要がある場合によく使われます。

challenge icon

チャレンジ

簡単

input から limit という number を読み取ります。for loop を使用して 1 から limit まで反復しますが、3 と 7 の both で割り切れる最初の number に遭遇した when、break を使用して loop を早期に停止します。

condition を確認する before に各 number を Print します。3 と 7 の both で割り切れる number を find したら、その number を Print してから loop から抜けます。

After the loop ends、print() を使用して "Loop ended" を Print します。

たとえば、input が 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"

loop は 21 で停止します。これは 3 と 7 の both で割り切れる最初の number だからです(21 = 3 × 7)。

自分で試してみよう

# 入力を読み取る
con <- file("stdin", "r")
limit <- as.integer(suppressWarnings(readLines(con, n = 1)))

# TODO: 以下にコードを書いてください
# 1からlimitまでのforループを使用する
# 条件をチェックする前に各数値を出力する
# 3と7の両方で割り切れる数を見つけたらbreakする
# ヒント: 割り切れるかどうかを確認するには%%演算子を使用する


# ループの後に"Loop ended"を出力する
print("Loop ended")
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Rオンラインコンパイラ