C言語では、for文と同様に、同じ処理を繰り返す文があります。その文がwhile文です。
while文の書き方
while文の構文は次のようになります。
構文
while( 条件式 )
{
文 ;
}
while文では、条件式が真である間、下のブロックの文を繰り返し処理することができます。
サンプルプログラムを次に示します。
#include <stdio.h>
int main(void)
{
int number = 1;
while( number != 0 )
{
scanf("%d", &number);
printf("%dが入力されました。¥n", number);
}
printf("繰り返しを終了します。¥n");
return 0;
}
while文の条件式は、numberの値が0以外のときに、while文の下のブロックを実行します。numberの値が0のときはwhile文を終了します。
このため、最初にnumberの値を0以外に初期化しています。
while文の下のブロック内の処理は、キーボードからの入力を行い、入力した値と文字を表示するというものです。
処理が終わったら、また、while文の条件式の判定を行います。入力した値が0以外なら、また、while文のブロックを実行します。
入力した値が0になるまで繰り返すことになります。
0を入力すると、number != 0 の判定は、偽となり、while文を終了して、そのあとのprintf文が実行されてプログラムが終了します。
実行結果の一例を次に示します。
実行結果
1 ←入力したデータ
1が入力されました。
9 ←入力したデータ
9が入力されました。
0 ←入力したデータ
0が入力されました。
繰り返しを終了します。
このサンプルプログラムのwhile文の条件式は、number != 0 としましたが、この場合は、次のように記述することもできます。
while( number )
これは、if文のときに説明したことと同様に、値が0以外は真となり、0のときは偽となるため、変数のみの記述でも同じ結果になります。
while文は、for文の条件式だけにした場合と同じになります。
このため、while文を使用してもfor文と同じ使い方ができます。
for文
for( 初期化 ; 条件式 ; 変数更新 )
{
文 ;
}
for文の構文をwhile文に当てはめると次のようになります。
while文
初期化 ;
while( 条件式 )
{
文 ;
変数更新 ;
}
このようにfor文とwhile文は書き方が異なるのみで同じ繰り返し処理を行えます。
ただ、基本的には、回数が決まっている場合は、for文を使用し、回数が決まっていないものはwhile文を使うのが慣習となっています。
また、while文の変数更新の処理を記述し忘れると、条件式が偽にならなくなり、無限ループとなりますので、注意が必要です。
while文の使い方は以上になりますが、while文の条件式が偽にならない
while文の書き方を少し変えた繰り返し処理の文もありますので、そちらについても学びたいと思います。
do~while文の使い方
do~while文は、while文は、ほとんど同じ文になります。
do~while文の構文は次のようになります。
構文
do {
文 ;
} while( 条件式 ) ;
while文が下に記述されていますが、条件式の意味はwhile文と同じです。
while文の条件式の ( ) のあとに;が必要になりますので、注意する必要があります。
while文との違いは、条件式が後になることです。
while文は、先に条件式の判定を行っていましたが、do~while文は、最初は文を無条件で実行し、最後に条件式の判定を行います。
そして、条件式の判定で、真となった場合、doの下の文を実行します。
繰り返し文が必ず1回は実行されるのがdo~while文の特徴になります。
ただ、この特徴以外はwhile文と同じであるため、あまり使用されることはないかもしれません。
do~while文のサンプルプログラムを次に示します。
#include <stdio.h>
int main(void)
{
int number = 0;
do {
printf("1~9を入力してください。¥n");
scanf("%d", &number);
} while( ( number < 1 ) && ( number > 9 ) );
printf("%dが入力されました。¥n", number);
return 0;
}
実行結果の一例を次に示します。
実行結果
1~9を入力してください。
0 ←入力したデータ
1~9を入力してください。
10 ←入力したデータ
1~9を入力してください。
5 ←入力したデータ
5が入力されました。
1~9以外が入力された場合に繰り返し処理が行われます。
1~9のいずれかを入力した場合は、条件式が不成立となり、while文を終了します。
繰り返し処理については、以上になります。
次は、複数の値をまとめて扱う配列について学びます。