ch04 6章中 4章目

ch04 — break / continue

スライドで見る

この章を AI と学ぶ

💬 AI に聞く質問例 3 件
  1. 「ch04 — break / continue」のつまずきやすいポイントを、初学者向けに3つ教えてください

    ChatGPT Claude Gemini

  2. 「ch04 — break / continue」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    ChatGPT Claude Gemini

  3. 「ch04 — break / continue」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    ChatGPT Claude Gemini

概要

ループは「条件が真の間ずっと繰り返す」しくみだが、実際のプログラムでは「この条件を満たした瞬間、もう続ける必要がない」という途中離脱や、「この反復だけ飛ばして次の反復に進みたい」という部分スキップが頻繁に発生する。これを実現するのが breakcontinue という 2 つの制御命令だ。

break はループそのものから抜ける命令で、見つけた瞬間に for/while/do-while のブロックを終了して次のコードに進む。「配列から目的の値を見つけたら探索を止める」「100 を超えた値が来たら集計を打ち切る」など、完了条件が途中で確定する ケースで使う。一方 continue は、その反復の残りをスキップして条件判定 (および for の場合は更新式) に飛び、次の反復を始める。「偶数だけ集計したいから奇数はスキップ」「空行は無視して次の行を読む」など、特定の反復だけスルー したいときに使う。

注意点が 2 つある。1 つ目は 入れ子ループでの挙動break / continue はデフォルトで「最も内側のループ だけ」に作用する。外側のループまで抜けたい場合は break 2; のように数字で階層を指定する書き方があるが、これは可読性が落ちやすいのでフラグ変数で制御する方が無難なことも多い。2 つ目は 使い過ぎ問題breakcontinue が大量に散らばったループは「結局このループはどんな条件で終わるのか」が読みにくくなる。条件を 1 箇所にまとめて書ける時はループ条件そのもので表現し、本当に途中離脱が必要な時だけ使う、というバランス感覚が大事になる。

学習目標

  • break でループを途中で抜けられる
  • continue で次の反復にスキップできる
  • 2 つの動きの違いを言える

ドリル

no 内容
01 1〜10 のループで 5 になったら break
02 1〜10 のループで偶数を continue でスキップ
03 複数の整数を読み、最初に 100 を超えた値で break

解説スライド 全 7 枚

右の ボタン キー(またはスワイプ)で次のスライドに進めます。 下の「縦表示」を開くと全スライドを一気に読めます。

  1. break / continue

    Lesson 3 / Chapter 4

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

    普通のループは条件が偽になるまで全部回る。 でも実際は途中で抜けたい場面がある。

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

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

    実行結果:

    1
    2
    3
    4
    • break; を実行した瞬間、そのループから出る
    • ループの後ろの処理に進む
  4. continue で次の反復にスキップ

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

    実行結果:

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

    break continue
    動き ループから完全に抜ける 今の反復だけ飛ばす
    ループ後 ループの後ろに進む 次の $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)
    }
  6. よくある使い方: 探索して見つけたら終わる

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

    実行結果:

    見つかった: 15
    • 10 より大きい値を探している
    • 最初に見つかった 15 で出力して すぐ抜ける
    • それ以降 (22, 9) は調べない
  7. このチャプターでできるようになること

    break でループを途中で抜けられる ✅ continue で今の反復だけスキップできる ✅ 2 つの違いを言える ✅ 条件と組み合わせて「ある値で終わる / スキップする」を書ける

    → ドリルへ

1 / 7
📜 スライドを全部一気に読む(縦表示)

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 の違い

break continue
動き ループから完全に抜ける 今の反復だけ飛ばす
ループ後 ループの後ろに進む 次の $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 つの違いを言える ✅ 条件と組み合わせて「ある値で終わる / スキップする」を書ける

→ ドリルへ

この章で取り組む 演習問題の流れ (3ステップ)
  1. 01 ドリル 01 — 5 で break README.md starter.php answer.php
  2. 02 ドリル 02 — 偶数をスキップ README.md starter.php answer.php
  3. 03 ドリル 03 — 最初に 100 を超えた値を見つける README.md starter.php answer.php

演習問題の詳細

この章の演習問題の内容を読めます。実際に手元で解くには教材リポジトリを clone してください。

ドリル 01 — 5 で break

問題

1 から 10 までの for ループで、$i5 になったら break でループを抜けてください。 ループの中では (break の前に) $i の値を 1 行ずつ出力します。

期待される出力:

1
2
3
4

ヒント

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

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

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

問題

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

期待される出力:

1
3
5
7
9

ヒント

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

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

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

問題

標準入力から整数を 1 行ずつ何度も読み、最初に 100 を超えた値 が出てきたら、その値を出力してループを抜けてください。 入力の終端 (EOF) まで 100 を超える値が無かった場合は何も出力しなくてよい (今回のテストでは必ず 100 を超える値が含まれる)。

入力例:

12
50
99
123
77

期待される出力:

123

ヒント

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

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

演習問題(3問)

  1. ドリル 01 — 5 で break

    README.md starter.php answer.php

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

    README.md starter.php answer.php

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

    README.md starter.php answer.php

サイト内で問題文・雛形・解答例を確認できます。実際に手元で解くには教材リポジトリを clone してください。

完了にすると進捗に反映されます