採点されません。匿名です。 間違えることは学習の一部です。読むだけでもかまいません。

break / continue

テクノロジ系 / loop (for / while / break / continue)

break / continue

Lesson 3 / Chapter 4

「途中でやめたい」「この回だけスキップしたい」

普通のループは条件が偽になるまで全部回る。

でも実際は途中で抜けたい場面がある。

  • 探していた値が見つかった → もう続ける必要がない → break
  • 偶数だけスキップして奇数だけ処理したい → continue

break でループを抜ける

<?php
for ($i = 1; $i <= 10; $i++) {
    if ($i === 5) {
        break;
    }
    echo $i . "\n";
}

実行結果:

1
2
3
4
  • break; を実行した瞬間、そのループから出る
  • ループの後ろの処理に進む

continue で次の反復にスキップ

<?php
for ($i = 1; $i <= 5; $i++) {
    if ($i === 3) {
        continue;
    }
    echo $i . "\n";
}

実行結果:

1
2
4
5
  • continue; を実行すると 今の反復だけスキップ
  • ループ自体は次の値で続く

break と continue の違い

breakcontinue
動きループから完全に抜ける今の反復だけ飛ばす
ループ後ループの後ろに進む次の $i で続行
使い所条件を満たしたら終わりこの値だけスキップ
// break: 5 で終了
for ($i = 1; $i <= 10; $i++) {
    if ($i === 5) break;
    echo $i;   // 1234
}

// continue: 5 だけ飛ばして続行
for ($i = 1; $i <= 10; $i++) {
    if ($i === 5) continue;
    echo $i;   // 12346789(10)
}

よくある使い方: 探索して見つけたら終わる

<?php
$numbers = [3, 8, 15, 22, 9];
foreach ($numbers as $n) {
    if ($n > 10) {
        echo "見つかった: $n\n";
        break;
    }
}

実行結果:

見つかった: 15
  • 10 より大きい値を探している
  • 最初に見つかった 15 で出力して すぐ抜ける
  • それ以降 (22, 9) は調べない

このチャプターでできるようになること

break でループを途中で抜けられる

continue で今の反復だけスキップできる

✅ 2 つの違いを言える

✅ 条件と組み合わせて「ある値で終わる / スキップする」を書ける

→ ドリルへ

考えてみよう

既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。

ドリル 01 — 5 で break

問題

1 から 10 までの for ループで、$i5 になったら break でループを抜けてください。

ループの中では (break の前に) $i の値を 1 行ずつ出力します。

期待される出力:

1
2
3
4

採点

php scripts/grade.php topics/loop/ch04-break-continue/drill/01-break-at-5/

ヒント

  • for ($i = 1; $i <= 10; $i++) でループする
  • if ($i === 5) { break; }echo の前に 置く
  • そうすると 5 を出力する前にループを抜けるので、1〜4 が出る

ドリル 02 — 偶数をスキップ

問題

1 から 10 までの for ループで、$i偶数 なら continue で出力をスキップし、奇数だけを 1 行ずつ出力してください。

期待される出力:

1
3
5
7
9

採点

php scripts/grade.php topics/loop/ch04-break-continue/drill/02-skip-even/

ヒント

  • 偶数判定は $i % 2 === 0
  • if ($i % 2 === 0) { continue; } を echo の前に置く
  • 残った奇数だけ echo $i . "\n"; で出力

ドリル 03 — 最初に 100 を超えた値を見つける

問題

標準入力から整数を 1 行ずつ何度も読み、最初に 100 を超えた値 が出てきたら、その値を出力してループを抜けてください。

入力の終端 (EOF) まで 100 を超える値が無かった場合は何も出力しなくてよい (今回のテストでは必ず 100 を超える値が含まれる)。

入力例:

12
50
99
123
77

期待される出力:

123

採点

php scripts/grade.php topics/loop/ch04-break-continue/drill/03-find-input/

ヒント

  • while (($line = fgets(STDIN)) !== false) で EOF まで読める
  • 各行を $n = (int) trim($line); で数値化
  • if ($n > 100) { echo $n . "\n"; break; } で出力 + 抜ける