do-while 文
テクノロジ系 / loop (for / while / break / continue)
do-while 文
Lesson 3 / Chapter 3
while は条件を 先に チェックする
<?php
$i = 10;
while ($i < 5) {
echo $i . "\n"; // 一度も実行されない
}whileは 入る前 に条件を見る- 最初から偽なら 1 回も実行されない
「最初の 1 回はとりあえずやってほしい」場面では困る。
do-while は条件を 後で チェック
<?php
$i = 10;
do {
echo $i . "\n"; // 必ず 1 回は実行される (10 が出る)
} while ($i < 5);実行結果:
10
do { 処理 } while (条件);- 先に 1 回処理してから 条件を見る
- 末尾のセミコロン
;を忘れない
while と do-while の比較
| while | do-while | |
|---|---|---|
| 条件チェック | 先 | 後 |
| 最低実行回数 | 0 回 | 1 回 |
| 末尾のセミコロン | 不要 | 必要 |
// 条件が最初から偽の場合
while (false) { echo "A"; } // 何も出ない
do { echo "B"; } while (false); // B が 1 回出るありがちな使い方: 入力検証
<?php
do {
$n = (int) trim(fgets(STDIN));
} while ($n <= 0);
echo "OK\n";- とりあえず 1 回入力を読む
- 0 以下ならもう一度読む
- 正の数になったらループを抜ける
「先に処理してから判定したい」時にハマる。
このチャプターでできるようになること
✅ do { ... } while (条件); を書ける
✅ do-while は最低 1 回必ず実行されると理解している
✅ 末尾のセミコロンを忘れない
✅ while と do-while を使い分けられる
→ ドリルへ
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
ドリル 01 — 最低 1 回は実行する
問題
do-while 文を使って、条件が最初から偽でも 1 回は処理が実行される ことを確認します。
$i = 5; から始めて、$i < 5 の条件で do-while ループを書いてください。
ループの中では 実行された と 1 行出力します。
期待される出力:
実行された
採点
php scripts/grade.php topics/loop/ch03-do-while/drill/01-at-least-once/
ヒント
$i = 5;で初期化do { echo "実行された\n"; } while ($i < 5);- 条件は最初から偽 (
5 < 5は偽) なので、最初の 1 回だけ実行されて終わる - 末尾の
;を忘れずに
ドリル 02 — 正の数が入力されるまで読む
問題
do-while を使って、標準入力から整数を 1 行ずつ読み続け、正の整数 (1 以上) が入力されたらループを抜けて OK と出力してください。
入力例:
-3 0 -1 7
期待される出力:
OK
(7 を読んだ時点でループを抜ける)
採点
php scripts/grade.php topics/loop/ch03-do-while/drill/02-input-positive/
ヒント
do { $n = (int) trim(fgets(STDIN)); } while ($n <= 0);- ループを抜けたら
echo "OK\n"; - do-while の末尾の
;を忘れずに