while文を使った繰り返し
今までのプログラムは書かれた文が1回だけ実行されるものでした。しかし実際は同じ処理を繰り返したいという場合が多くあります。順次実行、繰り返し、条件分岐はプログラムの三大制御構造と呼ばれています。どのプログラミング言語にもこの三大構造が含まれていて、すべてのプログラムはこの三大構造でできています。C言語で同じ処理を繰り返すプログラムを書く方法の一つにwhile文があります。
while (条件式){
文1;
文2;
...
}
while文では、まず条件式を評価して真のとき文1; 文2; …を実行します。そのあと、もう一度条件式を評価します。真のときはまた文を実行します。これを条件式が偽になるまで繰り返します。条件式が真の間(while)、文を繰り返します。
#include <stdio.h>
int main(void){
int a=1;
while (a){
puts("0を入力すると終了します。");
scanf("%d",&a);
}
return 0;
}
実行結果
0を入力すると終了します。
2
0を入力すると終了します。
-1
0を入力すると終了します。
0
while文を使うときの注意点
while文は条件式を判断して繰り返すかどうかが決まります。ということは、条件式が偽の時は一度も繰り返されません。
#include <stdio.h>
int main(void){
int a=0;
while (a){
puts("0を入力すると終了します。");
scanf("%d",&a);
}
return 0;
}
実行結果
a=0なので条件式が偽となり、何も表示されません。
無限ループ
while文は条件式が常に真の時は無限ループします。
#include <stdio.h>
int main(void){
int a;
while (1){
scanf("%d",&a);
}
return 0;
}
実行結果
0
155
85
6854
... (永遠に続きます)
このプログラムは永遠にscanfを呼び出し続けるもので、一度実行するとプログラム自身で終了することができなくなります。これを防ぐために、break文が存在します。switch文でbreak;とするとswitch文を抜け出すという意味でしたが、while文でbreak;とするとwhile文を抜け出すことができます。
#include <stdio.h>
int main(void){
int a;
while (1){
scanf("%d",&a);
if (a==0) break;
}
return 0;
}
実行結果
64
448
5
0
while文の条件式を設定してもループを抜け出すことができますが、break文を使うとループ処理の途中で抜けることができますし、ループの出口を複数作ることもできます。
まとめ
while文を使用すると、条件式が真の間処理の繰り返し(ループ)ができる。
条件式っが偽になるか、break文を使用するとwhileループから抜け出すことができる。
コメント