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 < 3
は1 < 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 ...