
繰り返し処理。僕自身がfor以外をあまりつかわないので復習というかお勉強かもですが、whileやdo~whileについて書いていきたいと思います。
while文の書き方
whileの書き方の例をあげてみましょう。
var i = 0;
while(i<10){
繰り返し処理したい内容
i++;
}
流れとしてはfor文と変わらないと思います。
- iという入れ物に0を入れる
- iが10以下の場合は繰り返し処理をする
- その繰り返し処理をする際にはiに1を加算する
という感じですね。ちなみに
var i = 10;
とした場合には繰り返したい内容を処理することなくスルーします。この点がポイントになります。
whileで1から10までの整数を合計を出してみる?
前回と同じ問題ですので、基本的な部分はカットしちゃいますね。
1+2+3+4+5+6+7+8+9+10
- 1~10の数字は入れ物「a」に
- 合計した計算結果は入れ物「x」にvar a = 1;
var x = 0;
繰り返し処理はwhile。
while(i<10){
i++;
}
問題文も表示。と式の表示もどうようにやっていきましょう。
- 問題文は「問:1から10までの整数を合計は?」var q = “問:1から10までの整数を合計は?”;
var br = ”
“ - 「1+2+3+4+…+8+9+10=」という文字を表示させたいvar s = “”;
s += a + “+”;
s += ” = ” + x;
ここまでをまとめてコードにすると
var q = "問:1から10までの整数を合計は?";
var br = "<br>"
var s = "";
var a = 1;
var x = 0;
var i = 0;
while(i<10){
x += a;
s += a + "+";
a++;
i++;
}
var out = document.getElementById('ele');
s += " = " + x;
out.innerHTML = q + br;
out.innerHTML += s;

バッチリですね!
ちなみに、先ほどあったように、iの数字を10にしてみると…

繰り返し部分がスルーされているので、「= 0」という表示になってしまいましたね。
もうひとつの繰り返し処理、do~while
同じように、もうひとつの繰り返し処理についても確認してみましょう。書き方は
var i = 0;
do{
繰り返し処理したい内容
i++;
}while(i<10)
こちらはすこし流れが違ってきます。流れというか順番というべきでしょうか。
- iという入れ物に0を入れる
- 処理をする際にiに1を加算する
- iが10以下の場合は繰り返し処理をする
繰り返し処理の部分が前になり、10以下の場合の判定が後になります。これがポイント。この場合、判定が後になるので、iの中身が10以上でも、1度は処理をすることになります。
do~whileで1から10までの整数を合計を出してみる?
同じように1から10までの計算をしてみます。といっても、中身はほぼ同じなので、コードを書いてみちゃいましょう。
var q = "問:1から10までの整数を合計は?";
var br = "<br>"
var s = "";
var a = 1;
var x = 0;
var i = 0;
do{
x += a;
s += a + "+";
a++;
i++
}while(i<10)
var out = document.getElementById('ele');
s += " = " + x;
out.innerHTML = q + br;
out.innerHTML += s;

結果は問題なし。さて、ここでi=10にしてみましょう。すると…

「1+ = 1」という表示になりました。つまり、繰り返し処理の部分を1回実行していることになります。これがdo~whileの特徴です。
まとめ
今回はwhileとdo~whileによる繰り返し処理でした。処理の仕方を覚えてしまえば、for文同様に手軽に繰り返し処理ができるようになると思います。また、do~whileの特徴を使うことで「どんな場合でも一度は処理する」みたいな場合に活用できたりします。ぜひ、覚えておきましょう(自分自身にもいいきかせつつ)。最後に今回のコードを載せておきますので、コピペしてためしてみてくださいね!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>JavaScript</title>
<link rel="stylesheet" href="">
</head>
<body>
<div id="ele"></div>
<script>
var q = "問:1から10までの整数を合計は?";
var br = "<br>"
var s = "";
var a = 1;
var x = 0;
var i = 0;
// while(i<10){
// x += a;
// s += a + "+";
// a++;
// i++;
// }
do{
x += a;
s += a + "+";
a++;
i++
}while(i<10)
var out = document.getElementById('ele');
s += " = " + x;
out.innerHTML = q + br;
out.innerHTML += s;
</script>
</body>
</html>