C言語 do-while文とwhile文の違いとは?

  • このエントリーをはてなブックマークに追加
Pocket

同じ処理を繰り返し実行させたい場合、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者がプログラムを読もうとしてくれます。しかし、きたないプログラムだと読もうという気になりません。

あなたもそうですよね。だから、こういう手法もあるということをお話したのです。

  • このエントリーをはてなブックマークに追加

コメントを残す

*