C言語では、for文と同じように、指定した文を繰り返す構文があります。そのひとつがwhile文です。
ここでは、while文 の基本的な使い方について解説します。
while文の仕組み
while文の構文は次の通りです。
while( 条件 ) {
文1;
}while文では、条件が成立している間(真の間)ブロック内の処理(文1)を繰り返します。
処理の流れは次の通りです。
- 条件を判定する
- 条件が真であれば、ブロック内の処理を実行する
- ブロックの最後まで実行すると、再び先頭に戻って条件を判定する
- 条件が偽になるまで、この繰り返しが続く
while文は最初に条件を判定してから処理を実行するため、条件が初めから偽の場合は、一度も繰り返しを行いません。
また、条件を変化させる処理を忘れると、ずっと繰り返し続く無限ループになるので注意しましょう。
具体例
次のプログラムは、「0 が入力されるまで整数の入力を繰り返す」例です。
#include <stdio.h>
int main(void)
{
int number = 1;
while(number != 0) {
printf("整数を入力してください。(0:終了)\n");
scanf("%d", &number);
}
printf("繰り返しを終了しました。\n");
return 0;
}このプログラムでは、変数 number が0でない限り、while 文の中で整数の入力を繰り返します。
処理の流れは次のようになります。
- 初期値として、変数
numberに1を代入しておく - 条件
number != 0が真のため、ブロック内の処理を実行する - 整数を入力し、再び条件を判定する
- 入力した値が
0でなければ、再度入力を求める 0を入力すると条件が偽となり、while文を抜ける- 最後に「繰り返しを終了しました。」と表示して処理が終了する
まとめ
- while文は、「条件が成立している間」ブロック内の処理を繰り返す構文である
- while文は、最初に条件を判定してから処理を実行する
- 条件が真(成立)である限り、ブロック内の処理を繰り返す
- 条件が偽になると、繰り返しを終了する
- 条件を変化させる処理を忘れると、無限ループになるので注意
また、for文との違いですが、
for文は、繰り返す回数が予め決まっているときに使います。
一方、while文は、繰り返し回数が決まっていないときに使います。