無理しないでゆっくり休んでね!

JavaScript do…while文

JavaScriptにおけるdo…while文は、特定の条件が真である限り、一連の命令を繰り返し実行する制御構造です。

しかし、通常のwhile文と異なり、do…while文では、まずブロック内のコードが実行され、その後で条件がチェックされます。これにより、条件に関係なくブロック内のコードが少なくとも一度は実行されることが保証されます。

do…while文の基本構文

JavaScriptのdo…while文は、次のように書きます。

do {
  // まずここが実行される
} while (条件式);

以下の例では、変数iの値が10より小さい間、コンソールにその値を表示し、その後でiの値を1増やします。

let i = 0;
do {
  console.log(i);
  i++;
} while (i < 10);

このプログラムも、0から9までの数を順に表示します。

while文とdo...while文の違い

主な違いは、「ループが実行されるタイミング」です。

while文では、ループが始まる前に条件をチェックします。もし初めからその条件が偽であるなら、ループ内のコードは一度も実行されません。

let i = 0;
while (i > 0) {
  console.log(i);  // このコードは実行されません
  i++;
}

それに対してdo...while文では、条件が偽であってもループ内のコードが最初の一回は必ず実行されます。これは、条件チェックがループの一連の命令の後、つまり各ループの最後に行われるからです。

let i = 0;
do {
  console.log(i);  // このコードは一度は実行されます
  i++;
} while (i > 0);

簡単に言うと、違いはdo…whileは少なくとも一度は実行されることです。

注意点

do…while文を使用する際には、ループが無限に続くことを防ぐために、必ずいずれ偽となる条件式を設定する必要があります。無限ループはプログラムの処理を停止させてしまうため、適切な制御が重要です。

また、do…while文は、ブロック内のコードが必ず一度は実行されることが保証されるため、ユーザーからの入力を受け取るなど、少なくとも一度は実行したい処理に対して有用です。

練習問題

1から指定された数までの数字を順に出力するものです。

ただし、数字が3の倍数の場合は「Fizz」、5の倍数の場合は「Buzz」、3と5の両方の倍数の場合は「FizzBuzz」を出力します。

let 数値 = 1;

do {
  let 出力 = "";

  if (数値 % 3 == 0) {
    出力 += "Fizz";
  }
  if (数値 % 5 == 0) {
    出力 += "Buzz";
  }

  if (出力 == "") {
    出力 = 数値;
  }

  console.log(出力);
  数値++;
} while (数値 <= 100);

console.log("終了しました");

このコードは、1から100までの各数値に対してFizzBuzzのルールを適用します。

do...whileループは、数値が100以下である限り続けられます。

ループ内では、まず出力文字列を初期化し、次に数値が3の倍数、5の倍数、またはその両方であるかどうかを確認します。それに応じて「Fizz」、「Buzz」、または「FizzBuzz」を出力文字列に追加します。

数値が3でも5でも割り切れない場合は、その数値自体が出力されます。それから数値を1増やします。

数値が101になったとき、ループは終了し、メッセージ”終了しました”が表示されます。

コメント

タイトルとURLをコピーしました