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

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 の比較

whiledo-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 の末尾の ; を忘れずに