繰り返し処理を行う場合は、for文もしくはwhile文を使うことが多いです。ですが、while文には実は親戚とも言える別の書き方が存在します。
それがdo-while文です。do-while文は基本的にはwhileと同じ処理をしますが、一部分だけ違う部分があります。今回は、初心者の方向けにdo-while文についてわかりやすく解説していきます。
do-while文の解説
do-while文の概要
do-while文は基本的にはwhileと同じ処理をする文でありますが、書き方と処理の流れが異なります。
do-while文は前にdoを記述し、肝心のwhileは最後に持ってきます。
do-while文は繰り返し処理は少なくとも、一回は必ず行われることを意味します。
どういうことかというと、while文はif文のように先頭で条件式を判定し、ループ処理を実行するかしないかを決めています。それに対して、do-while文は一度、ループ処理に入りあとから条件式を判定しています。
do-whileは繰り返しの後にループを続けるか続けないかの判断をし、プログラムは基本的に上から下へと順番に処理をされますので、必ず処理が1回行われるというわけです。これによって、do-while文とwhile文に違いが生まれるのです。
do-whileの使い方
do-while文の概要を学んだところで、早速使い方を学んでいきましょう。次のサンプルを見てみてください。
let number = 10;
do{
console.log(`${number}`);
number += 1;
}while(number <= 20);
$ node dowhile.js
10
11
12
13
14
15
16
17
18
19
20
while文と同じく、変数の初期化などはループの外で行います。
このサンプルではこのような挙動になりますが、whileと同じ結果が得られるかと思います。先に数字が表示され、そのあとに加算を行い、条件式の判定に移っていきます。
では、次の例を見ていきましょう。
let rondom;
do{
rondom = Math.floor(Math.random()*10)+1;
console.log(`${rondom}`);
}while(rondom != 10 && rondom != 5);
$ node dowhile.js
//実行例1
7
3
4
9
10
//実行例2
6
6
2
4
4
10
このサンプルを実行すると、このような挙動になります。
Math.floor(Math.random())は乱数を生成する関数になります。よく使われることが多いので覚えておくといいかもしれません。このサンプルに場合だと1から10までの範囲で整数をランダムで初期化しています。
while文は回数に関係なく、条件式がtrueの間のみループ処理を行います。do-while文やwhileはこの点が便利なポイントで、こういった自分でループをする条件を決めるときに使うのが理想的です。
また、このサンプルでは変数に値を代入せず、ループ処理の中でその都度初期化しています。このように変数をループ内で初期化したいときにdo-while文は便利です。なぜなら、条件式はループの最後なので必ず一度は処理が実行してくれるからです。
実行すると、毎回結果が変わってくるのも確認してみてください。
whileとdo-whileの違いを確認
では、while文とdo-while文の挙動の違いを理解していきましょう。
次のサンプルを見て、実行してみてください。
let money = 100000;
while(money >= 1000000){
console.log(`お金は${money}だけあります。`);
money += 100000;
}
$ node while.js
let money = 100000;
do{
console.log(`お金は${money}だけあります。`);
money += 100000;
}while(money >= 1000000);
$ node dowhile.js
お金は100000だけあります。
この二つのサンプルを実行してみると、このようになるはずです。この二つのサンプルの違いはwhile文を使っているか、do-while文を使っているかだけの違いです。
どちらもwhileの条件式はfalseであるので、ループ処理は実行されません。しかし、do-while文は1度だけ出力されています。
これがwhile文とdo-while文の違いです。falseだとしても、ループの後で判定されますから最低1回はじっこうされるというわけです。
まとめ
では今回のまとめです。今回は次のようなことを学びました。
今回はここまでとなります。お疲れ様でした。
参考文献
にほんブログ村