javascriptのwhile文について
whileには「~中に」や、「〜の間に」といった意味があり、
「待っている間雑誌を読む」「I’m reading a magazine while I wait.」なんて
感じで使います。
プログラムでは、ある条件を満たしている場合のみ実行する処理になります。
日本語で書くと、「条件に一致している(真)場合は処理を繰り返してください。」といったところです。
二度寝をしてしまう人間の本能をwhileで書くと下記のようになるはず。
1 2 3 |
while(今は6時前ですか?){ 寝る! } |
while文の条件が「今の時刻が6時前」の場合は 眠る処理を続けます。 では、実際にwhile文を使ったプログラムを書いてみましょう。
作るプログラムの内容は下記の通りです。
1+2+3+4+…という計算を実施した場合、計算結果が100以下となる
もので最大の計算結果と、最後に足した数を求めるプログラムを
while文で書いてみましょう。
プログラムは下記のようになります。
注目するところはwhile文の括弧の中、計算結果answerの結果が100以下の間は加算を繰り返し実施します。
1 2 3 4 5 6 7 |
var answer = 0; //計算結果を格納する変数 var i = 0; //加算する数(1,2,3と増やしていく) while(answer <= 100){ //計算結果が100いかの場合に繰り返す処理 answer += ++i; //iに+1して加算していく(1,2,3,4) } console.log('answerは'+(answer - i)); console.log('iは:'+i); |
理解できましたか?
以前学んだfor文でも同様なプログラムが書けます。
for文とwhile文の違いは、forが繰り返し回数が決まっている場合に
よく使われるのに対し、whileは繰り返し回数が決まってない場合に
よく利用されます。
do while文
do while文は必ず一回は処理を実行して繰り返し処理を
実施する構文です。
町でエンジンがかからない車やバイクを見たことがあると思います。
あれです。あれをdo whileで書くとこんな感じになります。
1 2 3 |
do{ エンジンをかける; }while(エンジンがかかっていない?) |
最初にまずはdoの中にある、エンジンをかける処理が実行されます。
その後、while文の条件式を判断します。この時、エンジンが動いていない場合はdoの括弧内のエンジンをかける動作を再度実施します。
最初エンジンをかける処理を必ず実施するのがポイントですね。
実際にプログラムで書いてみます。
1 2 3 4 5 6 7 8 9 |
do{ var value = Math.random(); //0〜1までのランダムな数字をvalueに格納 console.log(value); //valueの中身の表示 if(value > 0.5){ //valueが0.5以上の場合 console.log("エンジンがかかりました"); }else{ //valueが0.5以下の場合 console.log("エンジンがかかりません") } }while(value < 0.5) //valueが0.5以下(エンジンがかからない場合繰り返す) |
今回ランダムな値を出すためMath.random()という関数を利用しています。
この関数は0以上1未満の値をランダムで返します。
Chromeの開発者コンソールから何度か実行してみて動作を確認してみてください。
演習
FizzBuzz問題でFizzが20回出た場合に処理を終了するようにしてください。
(Fizz Buzz)もFizzのカウントに含む
FizzBuzz問題
- 3で割り切れる場合は「Fizz」と表示
- 5で割り切れる場合は「Buzz」
- 3または5で割り切れる場合は「Fizz Buzz」
宿題
- Math.random()関数は0以上1未満のランダムな数値を出力しますが、
1~3までのランダムな数値にするにはどうしてたら良いでしょうか。