概要
do-while 文 は while の親戚だが、「最低 1 回は必ず本体を実行してから、条件を判定する」という点だけが違う。文法も do { ... } while (条件); と、ブロックが先・条件が後ろになっていて、末尾にセミコロンが付くのが特徴だ。while が「実行する前に条件を見る」のに対し、do-while は「実行してから条件を見る」と覚えると違いが頭に入りやすい。
この性質が活きるのが 入力検証 のような場面だ。たとえば「正の数が入力されるまでユーザーに何度も入力させたい」とき、while だと「最初に 1 回入力を受け取る → 条件を判定 → ループに入る」と 2 段階に分けないとならず、入力処理を 2 箇所に書く羽目になる。do-while なら「まず 1 回読む → ダメならもう一度読む」と自然な流れで書ける。「条件チェックの前に、データ取得が必要」というパターンが綺麗にハマる。
ただし、現場での使用頻度は for や while より明らかに低い。多くのケースは while で十分書けるし、慣れていない人が読むと「あれ、これいつ条件チェックされるんだっけ」と混乱の元にもなる。「最低 1 回必ず実行する」が本質的に必要なときだけ do-while を選び、迷うなら while で書く、というのが実務的な判断基準になる。
学習目標
do { ... } while (条件);の形を書ける- do-while は 最低 1 回は必ず実行される ことを理解する
- while と do-while の違いを言える
ドリル
| no | 内容 |
|---|---|
| 01 | 条件が最初から偽でも 1 回は実行される do-while を書く |
| 02 | 入力が正になるまで何度も読み、最後に「OK」を出力 |
📝 演習: ドリル 01 — 最低 1 回は実行する
問題
do-while 文を使って、条件が最初から偽でも 1 回は処理が実行される ことを確認します。
$i = 5; から始めて、$i < 5 の条件で do-while ループを書いてください。
ループの中では 実行された と 1 行出力します。
期待される出力:
実行されたヒント
$i = 5;で初期化do { echo "実行された\n"; } while ($i < 5);- 条件は最初から偽 (
5 < 5は偽) なので、最初の 1 回だけ実行されて終わる - 末尾の
;を忘れずに
📝 演習: ドリル 02 — 正の数が入力されるまで読む
問題
do-while を使って、標準入力から整数を 1 行ずつ読み続け、正の整数 (1 以上) が入力されたらループを抜けて OK と出力してください。
入力例:
-3
0
-1
7
期待される出力:
OK
(7 を読んだ時点でループを抜ける)
ヒント
do { $n = (int) trim(fgets(STDIN)); } while ($n <= 0);- ループを抜けたら
echo "OK\n"; - do-while の末尾の
;を忘れずに