繰り返し、ループ三兄弟の末の弟 do~while
さて、制御文の最後をしめくくるのはdo~whileです。末の弟は目立たない性格で? これは実際の組み込みプログラムでもほとんど使いません。しかし、場合によってはforやwhileには置き換えできない便利な繰り返し処理です。まずは文法から見てみましょう。
do~while文の文法は、以下のとおりです。
do{ 実行文1; 実行文2; : } while (条件);
while文とは条件判断の位置が違いますね。while文では、まず条件を判断します。最初から条件に一致しなければ、実行文は一度も実行されません。一方でdo~whileは、とりあえずまず実行文をやって、それから条件判断をします。「ごちゃごちゃ言わずに、まずはやってみて話はそれからさ!」という、目立たないけど実行タイプな弟です。
少しわざとらしい例を示します。似たような処理をwhile文とdo~while文で書いたのが以下です。
while( i < 5 ){ i = i + 1; }
do{ i = i + 1; } while (i < 5 );
これらは、変数iがどのような値で繰り返し処理に入るかで結果が異なります。iが0の場合、(a)(b)とも、繰り返しを抜けたときiの値は5です。
しかし、もともとiが5だったらどうしょう。(a)では、最初の条件判断ではじかれて繰り返し処理に入りませんから、iは5のまま通り過ぎます。一方(b)では、先にi = i + 1;が実行されますので、繰り返し処理を抜けたあとiは6になります。
do~whileはマジカルボックスのプログラムの中にも登場しますので、実例はそこで見てみてください。
