メインコンテンツまでスキップ

while文とfor文

while 文の基本構造

while文は、以下の構造をとります。

while (式) 文

whileは、式の値が truthy であれば、文を実行します。文の実行が終わったら、もう一度式を評価するところからやり直します。この繰り返しです。例を見てみましょう。

let i = 0;
while (i < 3) {
document.write(i);
i++;
}
123

++インクリメント演算子と呼ばれる単項演算子で、作用する変数に 1 を直接加えます。

プログラムの実行の流れを順に追っていきましょう。まずはi < 3、つまり0 < 3が評価され、trueになります。trueは明らかに truthy なので、ブロック内の文が実行されます。

document.writeにより0が表示され、続けてインクリメント演算子によりiの値が0から1に増えます。

ブロック内の文の実行が終わったので、再度式を評価します。i < 31 < 3ですのでやはりtrueです。ブロックが実行されます。

以上をi = 3となるまで繰り返します。

for 文の基本構造

上記のwhile文の例はfor文を用いると以下のように書き直すことができます。

for (let i = 0; i < 3; i++) {
document.write(i);
}

非常にシンプルになりました。for文は、以下のような構造をとります。

for (初期化; 条件; 再設定) 文

while文で置き換えたとき、初期化の部分がwhile文より手前に、条件の部分がwhile文の条件式に、再設定の部分がwhile文の中のブロックの末尾に入ると考えられます。

課題

Fizz Buzz 問題と呼ばれる有名な問題があります。for文とif文を用いて実装してみましょう。

Fizz Buzz 問題とは、1 から 100 までの整数に対して、それぞれ以下の処理を実行するものです。

  • 3 の倍数ならFizzと表示
  • 5 の倍数ならBuzzと表示
  • 3 と 5 の公倍数ならFizzBuzzと表示
  • 以上のいずれにも当てはまらない場合はその数字を表示

出力は以下のようになります。

1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 ...