JavaScript の do…while 文を初心者向けにやさしく解説
はじめてのループは少しとっつきにくいですよね。do…while 文は「とりあえず1回はやってみて、その後で続けるか決める」仕組み。使いどころが分かると、入力確認やランダム処理などでとても便利になります。
仕組みと考え方
- 基本イメージ: まず処理を1回やってみる → 条件を見て「続ける?やめる?」を判断する。
- 必ず1回実行: 条件が最初から false でも、最初の1回は実行される。
- while との違い: while は「先に条件チェック → OKなら実行」。do…while は「先に実行 → 後で条件チェック」。
do {
// ここが必ず1回は実行される処理
} while (条件式); // ← セミコロンが必要
JavaScript書き方のポイント
- セミコロン: while の後ろにセミコロンが必要。
- ブロック: 処理が複数行なら { } で囲む。
- 条件式: true の間は繰り返し。false になったら終了。
フローチャートで直感的に理解
- 実行: ブロック内の処理を1回実行する。
- 判定: 条件式を評価する(true か false)。
- 継続: 条件が true ならもう一度ブロックを実行。false なら終了。
この順番が「先に実行、その後判定」です。
まずは基本例(流れが見える)
let num = 4;
do {
console.log(num); // 今の値を表示
num = num * 4; // 値を4倍に更新
} while (num < 100); // 100より小さい間は続ける
console.log("end");
JavaScript- 1回目: 出力 4 → 更新して 16 → 条件 16 < 100 → 継続
- 2回目: 出力 16 → 更新して 64 → 条件 64 < 100 → 継続
- 3回目: 出力 64 → 更新して 256 → 条件 256 < 100 → 終了
- 最後: 「end」を表示
現実的な使いどころ
- 最低1回は試行したい: サイコロ、コイン投げ、乱数での抽選など。
- 入力チェック: ユーザー入力を1回受けてから、条件に合うまで再入力を促す。
- メニュー表示: メニューを1回表示して、終了選ぶまで繰り返す。
例題1:サイコロで6が出るまで
let dice;
do {
dice = Math.floor(Math.random() * 6) + 1; // 1〜6の整数
console.log("出た目:", dice);
} while (dice !== 6);
console.log("終了: 6が出ました");
JavaScript- ポイント: ランダムは「最低1回は振りたい」ので do…while が合う。
- 条件式: dice が 6 と等しくない間は続ける。
例題2:パスワード再入力(簡易版)
// 実際の環境では prompt が使えないこともあるのでイメージ例
let input;
const correct = "apple123";
do {
// ここを実行する環境なら prompt を使えます
input = prompt("パスワードを入力してください(apple123)");
} while (input !== correct);
console.log("認証に成功しました");
JavaScript- ポイント: 1回は入力してもらう → 間違っていればもう一度。
- 注意: 実運用では入力の取り方やセキュリティが別途必要。
例題3:メニュー選択(終了を選ぶまで)
let choice;
do {
console.log("メニュー:");
console.log("1: 足し算");
console.log("2: 引き算");
console.log("0: 終了");
// 例: choice をテスト用にランダムに決める(実際はユーザー入力)
choice = Math.floor(Math.random() * 3); // 0〜2
console.log("選択:", choice);
if (choice === 1) {
console.log("足し算を実行します");
} else if (choice === 2) {
console.log("引き算を実行します");
} else if (choice === 0) {
console.log("終了を選びました");
} else {
console.log("不正な入力です");
}
} while (choice !== 0);
console.log("メニューを終了します");
JavaScript- ポイント: メニューは「1回は表示」→「0が選ばれるまで」繰り返すのが自然。
while との比較が一番わかる
// while: 先に条件チェック
let count1 = 0;
while (count1 > 0) {
console.log("これは実行されない(count1は0なので条件がfalse)");
}
// do...while: 先に実行
let count2 = 0;
do {
console.log("これは1回は必ず実行される");
} while (count2 > 0);
JavaScript- 違いの核心: 「最初の1回があるかないか」。
よくあるミスと回避策
- セミコロン忘れ: while の後ろにセミコロンが必要。
- 例:
} while (条件);を忘れない。
- 例:
- 無限ループ: 条件がずっと true のままだと終わらない。
- 例: ループ内で変数を必ず更新する。
- 条件の取り違え:
===と!==を意図通りに使う。- 例: 等価は
===、等しくないは!==。
- 例: 等価は
- 入力の型問題: 文字列と数値の比較に注意。
- 例:
"6" === 6は false。
- 例:
すぐできる練習課題
- 課題1: 1 から順に足して合計が 100 を超えるまで繰り返し、最後の合計と回数を表示。
例: 1 + 2 + 3 + ... → 100 を超えた時点で終了
- 課題2: ランダムで 0〜9 を生成し、「5」が出るまで回数をカウントして表示。
- 課題3: 名前を必ず1回入力させ、空文字やスペースだけなら再入力を促す。最終的に「こんにちは、〇〇さん!」を表示。
ヒント(課題2の骨格):
let n;
let count = 0;
do {
n = Math.floor(Math.random() * 10); // 0〜9
count++;
console.log("出た数:", n);
} while (n !== 5);
console.log("試行回数:", count);
JavaScriptまとめ
- do…while は「まず1回実行 → 条件で続行」
- 入力確認・メニュー・ランダム試行に向いている
- 無限ループ防止のために「変数更新」を忘れない
