ch03 6章中 3章目

ch03 — do-while 文

スライドで見る

この章を AI と学ぶ

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

    ChatGPT Claude Gemini

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

    ChatGPT Claude Gemini

  3. 「ch03 — do-while 文」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    ChatGPT Claude Gemini

概要

do-whilewhile の親戚だが、「最低 1 回は必ず本体を実行してから、条件を判定する」という点だけが違う。文法も do { ... } while (条件); と、ブロックが先・条件が後ろになっていて、末尾にセミコロンが付くのが特徴だ。while が「実行する前に条件を見る」のに対し、do-while は「実行してから条件を見る」と覚えると違いが頭に入りやすい。

この性質が活きるのが 入力検証 のような場面だ。たとえば「正の数が入力されるまでユーザーに何度も入力させたい」とき、while だと「最初に 1 回入力を受け取る → 条件を判定 → ループに入る」と 2 段階に分けないとならず、入力処理を 2 箇所に書く羽目になる。do-while なら「まず 1 回読む → ダメならもう一度読む」と自然な流れで書ける。「条件チェックの前に、データ取得が必要」というパターンが綺麗にハマる。

ただし、現場での使用頻度は forwhile より明らかに低い。多くのケースは while で十分書けるし、慣れていない人が読むと「あれ、これいつ条件チェックされるんだっけ」と混乱の元にもなる。「最低 1 回必ず実行する」が本質的に必要なときだけ do-while を選び、迷うなら while で書く、というのが実務的な判断基準になる。

学習目標

  • do { ... } while (条件); の形を書ける
  • do-while は 最低 1 回は必ず実行される ことを理解する
  • while と do-while の違いを言える

ドリル

no 内容
01 条件が最初から偽でも 1 回は実行される do-while を書く
02 入力が正になるまで何度も読み、最後に「OK」を出力

解説スライド 全 6 枚

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

  1. do-while 文

    Lesson 3 / Chapter 3

  2. while は条件を 先に チェックする

    <?php
    $i = 10;
    while ($i < 5) {
        echo $i . "\n";   // 一度も実行されない
    }
    • while入る前 に条件を見る
    • 最初から偽なら 1 回も実行されない

    「最初の 1 回はとりあえずやってほしい」場面では困る。

  3. do-while は条件を 後で チェック

    <?php
    $i = 10;
    do {
        echo $i . "\n";   // 必ず 1 回は実行される (10 が出る)
    } while ($i < 5);

    実行結果:

    10
    • do { 処理 } while (条件);
    • 先に 1 回処理してから 条件を見る
    • 末尾のセミコロン ; を忘れない
  4. while と do-while の比較

    while do-while
    条件チェック
    最低実行回数 0 回 1 回
    末尾のセミコロン 不要 必要
    // 条件が最初から偽の場合
    while (false) { echo "A"; }    // 何も出ない
    do { echo "B"; } while (false); // B が 1 回出る
  5. ありがちな使い方: 入力検証

    <?php
    do {
        $n = (int) trim(fgets(STDIN));
    } while ($n <= 0);
    echo "OK\n";
    • とりあえず 1 回入力を読む
    • 0 以下ならもう一度読む
    • 正の数になったらループを抜ける

    「先に処理してから判定したい」時にハマる。

  6. このチャプターでできるようになること

    do { ... } while (条件); を書ける ✅ do-while は最低 1 回必ず実行されると理解している ✅ 末尾のセミコロンを忘れない ✅ while と do-while を使い分けられる

    → ドリルへ

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

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 を使い分けられる

→ ドリルへ

この章で取り組む 演習問題の流れ (2ステップ)
  1. 01 ドリル 01 — 最低 1 回は実行する README.md starter.php answer.php
  2. 02 ドリル 02 — 正の数が入力されるまで読む README.md starter.php answer.php

演習問題の詳細

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

ドリル 01 — 最低 1 回は実行する

問題

do-while 文を使って、条件が最初から偽でも 1 回は処理が実行される ことを確認します。

$i = 5; から始めて、$i < 5 の条件で do-while ループを書いてください。 ループの中では 実行された と 1 行出力します。

期待される出力:

実行された

ヒント

  • $i = 5; で初期化
  • do { echo "実行された\n"; } while ($i < 5);
  • 条件は最初から偽 (5 < 5 は偽) なので、最初の 1 回だけ実行されて終わる
  • 末尾の ; を忘れずに

🧪 ブラウザで試す

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

PHP ランタイム未読込

          

        

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

🧪 ブラウザで試す

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

PHP ランタイム未読込

          

        

演習問題(2問)

  1. ドリル 01 — 最低 1 回は実行する

    README.md starter.php answer.php

  2. ドリル 02 — 正の数が入力されるまで読む

    README.md starter.php answer.php

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

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