概要

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

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

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

学習目標

ドリル

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

演習: ドリル 01 — 5 で break

問題

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

期待される出力:

1
2
3
4

ヒント

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

問題

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

期待される出力:

1
3
5
7
9

ヒント

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

問題

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

入力例:

12
50
99
123
77

期待される出力:

123

ヒント

この章を AI に聞く

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

    💬 ChatGPT 📘 Claude ✨ Gemini

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

    💬 ChatGPT 📘 Claude ✨ Gemini

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

    💬 ChatGPT 📘 Claude ✨ Gemini

🎉 受講お疲れさまでした!

ch04 — break / continue」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE