改めて前回の内容をおさらいをしておくと、
- while文は、プログラムに「繰り返し処理」命令をする記述の1つである。
- while文を作る際は、while演算子を記述し、その後()内にループ継続を判定する条件を記述する
- ()内にループ継続を判定する条件を記述した後は、{}内に、繰り返しておこなう処理内容を記述する。
- ループを終了させる条件記述がなかったり、記述が適切でなかった場合、ループが終了せずに無限ループになってしまう可能性があるため記述には注意
ということをお伝えしました。
今回は do-while文 についてお話ししたいと思います。
do-while文とは?
「繰り返し処理」命令をする記述の1つです。
名前を見てもらえば、わかる通り while文 の派生形といった方が良いかもしれません。
while文との違いを確認しつつ、使い方を見ていきましょう。
while文とdo-while文の違い
do-while文の記述構成は以下のようになっています↓
do
{
//ループ中に行う処理を記述
}
while(ループ継続の条件)
doキーワードを最初に書くことによって、
これからdo-while文を使用する、という宣言になります。
その後、
{}の中にループ中に行う処理を記述をしていきます。これはwhile文と同じですね。
while(ループ継続の条件)
while文は(ループ継続の条件)が最初に来ているのに対し、do-while文は最後に来ています。
これが何を意味するかというと、do-while文は、
記述した、ループ中に行う処理を最低1回は必ず実行する
ということです。
void OnStart()
{
//ループカウント用の整数型変数「counter」を用意
int counter=1;
//do-while文を使うという宣言
do
{
//ログ出力
Print(counter);//1,2,3,4,5が出力される
counter++;
}while (counter<=5);
}
while文をdo-while文に変更した以外は、前回の記事後半で扱ったサンプルコードと同じです。
でも、もしこれが変数「counter」の値が6だとするとどうでしょう?
while文の場合、
void OnStart()
{
//ループカウント用の整数型変数「counter」を用意
int counter=6;
//counterが5以下である間はループする。
while (counter<=5)
{
//ログ出力
Print(counter);//処理が行われないのでログが出力されない。
counter++;
}
}
//+------------------------------------------------------------------+
コメントアウトしている部分に書いているように、ループ継続の条件である
(counter<=5)を満たしていないので、{}内の処理は一度も実行されず、チャートにプログラムを挿入してもログ出力されません。
一方、do-while文の方はどうかというと・・・
void OnStart()
{
//ループカウント用の整数型変数「counter」を用意
int counter=6;
//do-while文を使うという宣言
do
{
//ログ出力
Print(counter);//一度だけdo{}内の処理が実行されるので、6が出力される
counter++;
}while (counter<=5);
}
(counter<=5)というループ継続の条件は同じですが、
do-while文は条件判定を最後に行うので、一度だけdo{}内の処理を行います。
結果 「6」が出力される、という流れです。
動画にしてみましたので、ご覧ください。↓最初にチャートに挿入しているのがwhile文、次にチャートに挿入しているのがdo-while文です。
do-while文を使う時の注意点 -無限ループについて-
while文の時にも書いたことですが、do-while文に関しても、
ループを終了させる条件記述がなかったり、記述が適切でなかった場合、ループが終了せずに無限ループになってしまう可能性があります。
void OnStart()
{
bool loopCondition=true;
int counter=0;
//do-while文を使うという宣言
do
{
//ログ出力
Print(counter);
counter++;
}while (loopCondition==true);
}
ループ継続の条件が(loopCondition==true)であるにも関わらず、{}内にloopConditionをfalseにする記述がないので無限ループになってしまいます。↓
もし、ループ継続の条件を(loopCondition==true)のような無限ループに設定する場合、この後
if文や、第41回「breakとcontinue」で解説予定のbreak演算子を用いて、{}内に特定条件を満たしたら、ループを抜ける記述をする必要があります。
break演算子については第37回「switch文」でも、軽く触れましたが、条件演算(if文、else文、switch文)や繰り返し構文(while文、do-while文、for文)で使われる{}内の処理を、途中で離脱する為に使われるものです。
詳しい事は第41回で解説予定なので、現時点であまりよくわからなくても大丈夫です。
ループさせる回数が決まっていなかったり、ループ継続の条件に真偽値を指定したい場合は、while文やdo-while文を使ってもいいのですが、ループさせる回数が決まっていたり、より細かい設定と処理を行いたい場合は、次回取り上げる予定のfor文を使うとよいと思います。
まとめ
今回は do-while文 について解説しました。
今回の記事では以下のことを学びました
- while文と同様に、ループを終了させる条件記述が{}内になかったり、記述が適切でなかった場合、ループが終了せずに無限ループになってしまう可能性があるので記述には注意する。
今回は以上になります。
最後までお読みいただきありがとうございました<m(__)m>
コメント