C言語には、同じ処理を繰り返すための構文が3種類あります。
これまで、for文、while文 を説明しましたので、
ここでは、3つ目の do~while文 の基本的な使い方を解説します。
do~while文の仕組み
while文は、最初に条件を判定してから処理を実行します。
そのため、条件が初めから偽(false)の場合は、一度も処理を行いませんでした。
今回説明する、do~while文は、条件の判定を後から行う構文です。
このため、while文と違い、最初に繰り返しの処理を行ってから条件を判定するため、必ず1回は処理が実行されるという特徴があります。
do~while文の構文は次の通りです。
do {
文1;
} while( 条件 );繰り返しが行われるのは、doからwhile までのブロック内に記述された処理です。
プログラムはまずdo の中の文を1回実行し、その後で条件を判定します。
条件が真(true)であれば、再び、ブロックの処理を実行します。
この流れを、条件が偽(false)になるまで繰り返します。
while文との違いとして、最後のwhileの後にセミコロンを付ける必要があります。
具体例
次のプログラムは、「入力した値が1~5の範囲の範囲外の間は、再び入力を求める」という例です。
すなわち、1~5を入力すれば繰り返しを抜けます。
#include <stdio.h>
int main(void)
{
int number;
do {
printf("1~5の整数を入力してください:");
scanf("%d", &number);
} while(number < 1 || number > 5);
printf("入力された値は %d です。\n", number);
return 0;
}条件が「1~5の範囲にあるか」を判定しています。
条件が偽(範囲外)の間は、再び入力を求めます。do~while のおかげで、少なくとも1回は入力が求められることがわかります。
まとめ
do~while文は、条件の判定を後から行う繰り返し構文- while文とは違い、必ず1回は処理が実行されるのが特徴
whileのあとには セミコロン(;)を忘れずに付ける- 条件が真の間、ブロックの処理が繰り返し実行される