Menu
Coddy logo textTech

Break

CoddyのRジャーニー「基礎」セクションの一部 — レッスン 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文がループを完全に停止させました。breakは即座に終了するため、5は出力されなかったことに注意してください。

これは、何かを検索する際に while ループを使用すると特に便利です:

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

出力:

[1] 5

ここでは、while (TRUE) は通常、無限に実行されますが、break は、2乗が20を超える最初の数を見つけると、それを停止させます。このパターンは、条件が満たされるまで検索を行う必要がある場合によく使われます。

challenge icon

チャレンジ

簡単

入力から数値 limit を読み取ります。for ループを使用して 1 から limit まで繰り返しますが、3 と 7 の両方で割り切れる最初の数値に出会ったときに、break を使用してループを途中で停止してください。

条件をチェックする前に、各数値を出力してください。3 と 7 の両方で割り切れる数値が見つかったら、その数値を出力してからループを抜けます。

ループが終了した後、print() を使用して "Loop ended" を出力してください。

例えば、入力が 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)であるため、ループは 21 で停止します。

チートシート

break ステートメントは、特定の条件が満たされたときにループを即座に停止します:

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

出力:

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

i が 5 に達するとループが終了します。break によって即座に終了するため、値 5 は出力されません。

検索のために while (TRUE)break を使用する例:

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

出力:

[1] 5

このパターンは、2 乗が 20 を超える最初の数値を見つけ、無限ループを停止させます。

自分で試してみよう

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

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


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

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

基礎のすべてのレッスン