同じ処理を繰り返し実行させたい場合、while文やfor文をつかうことがほとんどです。
do-while文というものもあるので、簡単に解説したいと思います。
do-while文の記述の仕方
まず、do-while文の記述の仕方を解説します。
do { 繰り返しさせたい処理 } while(条件);
このように記述します。
通常のwhile文はwhileを先頭に記述するのに対し、do-whileはwhileを最後に記述するという点が異なります。
do-while文はwhile文と何が違うのか?
do-while文はwhile文と何が違うかというと、while文は全く実行されない可能性があるのに対して、do-while文は必ず、1回は処理を実行するという点です。
なぜそうなるかというと、do-while文は処理を実行した後に、while文を抜けるかどうかの条件判定を行うためです。
記述の仕方を見てもらえばわかると思いますが、プログラムは必ず上から順に実行されます。
do-while文は条件判定をするwhileが繰り返し文の最後に記述されるため、繰り返しの文が必ず1回は実行されることになります。
通常のwhile文は繰り返しの処理の前に条件判定が実行されるため、繰り返しの処理を1回も実行されない可能性がありますね。
これ以外に違いはありません。
以下のようなプログラムがあったとしたら、違いが出ます。
short i, j; i = 0; do { i++; } while(i < 0); j = 0; while (j < 0) { j++; } printf("i = %d, j = %d\n", i, j);
このとき、「i = 1, j = 0」と表示されることはわかりますね?
どちらも、負の値だったら、インクリメントし、0以上になったら、繰り返しを抜けるというものです。
do-while文で記述されたプログラムの場合、iは1つ必ずインクリメントされます。そのあと、0未満かどうかを判定しているので、繰り返し処理を抜けたときのiの値は1になるわけです。
一方、while文で記述されたプログラムの場合、jはすでに0以上の状態ですので、繰り返し処理が1回も実行されずに、printf文へ実行が移るため、jは0となるのです。
do-while文の使い道は?
do-while文の使い道ですが、while文との違いが繰り返し処理を必ず1回は実行されること以外は同じですので、ほとんど使うことはないでしょう。
なぜなら、while文で、do-while文を実現できてしまうからです。
もうおわかりですね。
do-while文をwhille文で実現するには、繰り返し文をwhile文を実行する前に、実行するように同じ処理を記述すればいいのです。
ただし、全く同じ処理を2回書くことになるので、プログラムが不必要に長くなって、読みにくくなるようなら、do-while文をつかったほうがいいでしょう。
そうでなければ、while文で十分でしょう。また、while文の条件によっては、while文の条件で調整して、必ず1度は実行するようにしてしまえばいいのです。
そういうわけで、do-while文を使うことは、ほとんどないということが、おわかりいただけたと思います。
まとめ
do-while文とwhile文の違いの解説と、do-while文の使い方を解説しました。
繰り返し処理を必ず1回は実行するという点だけが異なると言うことでした。
それは、while文で記述できてしまうので、do-while文が使われることが、ほとんどないということでしたね。
では、なぜお話ししたかというと、C言語のプログラマーとして、最低限知っておかないといけない文法だからです。
知らなくたって、プログラムは書けます。書けますが、場面によっては、きれいなプログラムが書けないかもしれません。きれいなプログラムがいいのかと言われると、きたないプログラムよりはいいです。
きれいなプログラムだと、第3者がプログラムを読もうとしてくれます。しかし、きたないプログラムだと読もうという気になりません。
あなたもそうですよね。だから、こういう手法もあるということをお話したのです。