C言語

繰り返し文(do~while文)

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 のあとには セミコロン(;)を忘れずに付ける
  • 条件が真の間、ブロックの処理が繰り返し実行される

-C言語