C++スコーラ

while文

最終更新:

cschola

- view
管理者のみ編集可
みなさんこんにちは、今回はループというものについて説明します。
ループとは同じことを繰り返すことです。
しかし、プログラム上でループを作った場合は、何回か繰り返したところで終わるようにします。
そうしないと「無限ループ」に陥ってしまいエラーとなります。

while文

C言語でループを作る命令は2つあります。
for文 と while文 です。先に while から説明します。
まずは使ってみましょう。
int i = 0;  // ループ数

while(i < 10){ // iが10よりも小さい間はループ
	
	printf("%d\n",i); // iがいくつなのか表示

i++; // iに1ずつ足していく
}
while と書いた次の ( ) にループの続く条件を書きます。
上の例では (i < 10) と書いてあります。
ループの回数をカウントする変数の名前は基本的に i とすることになっています。
while文 はこの ( ) の中の条件が満たされているあいだループします。

i++; は i に 1をプラスする意味を持ち、インクリメントと呼びます。
i = i + 1; を省略した書き方です。

多重ループ

while文 の中に while文 を作ることもできます。
ループの中にループを作ると2重ループ、さらにその中にループを作れば3重ループとなります。
int i = 0;  // ループ1のループ数
int j = 0;  // ループ2のループ数

while(i < 10){  // ループ1
	j = 0;  // ループ2のループ数を初期化

	while(j < 10){  // ループ2
		printf("%d",j);  // ループ2のループ数を表示
		j++;
	}

	printf("\n");  // 改行

	i++;
}
2重ループの変数は j を、3重ループの変数は k を使うのが一般的です。

while文で2重ループする場合、必ずループに入る前にループ数を初期化してください。 
初期化しないと2ループ目以降の挙動がおかしくなります。
これを忘れることが多いので気をつけましょう。

do while文

do while文 というものを紹介します。 
一応使い方を説明しますが、あまり使うことはないので「こんなものもあるんだな~」程度で構いません。
do while文 は最低でも1回は処理をしてから、繰り返すかどうか判断します。
int num = 0;  // 入力された数値を入れる

int i = 0;  // ループ数

do{
	printf("%d回繰り返しました。\n",i);

	printf("数値を入力してください。\n0を入力すると終了です。\n");

	scanf_s("%d",&num);

	i++;

}while(num != 0);  // 0が入力されたら終了
上の例の場合、普通の while文 だと何も表示せずに終了します。

break

while文 は break を使うことで強制的に終了させることもできます。
int i = 0;
int num = 0;

printf("0を入力すると終了です。\n");

while(true){ //無限ループ
	printf("%d回ループしました。\n数値を入力してください。\n",i);
	
	scanf_s("%d",&num);  // 数値入力  

	// 0が入力されたら
	if(num == 0){
		break;  // ループを抜ける
	}

	i++;
}
上の例では (true) と書いてあります。 この場合 break がないと無限ループになってしまいます。

continue

ループを先頭に戻す命令として continue があります。
continue を使うとそこから下の処理を飛ばしてループの先頭に戻ります。

int num = 0;  // 入力された数値をいれる

printf("1から10の数値を入力してください。\n");

scanf_s("%d",&num);

int i = 0;  // ループ数
while(i < 10){
        i++;
	// もしループ数と入力された数値が同じなら
	if(i == num){
		continue;  // 以降の処理を飛ばす
	}
	printf("%d回ループしました。\n",i);
}

練習問題

ユーザーが数値の入力を繰り返し、-1が入力されたらそれまでの合計を表示して終了するプログラムを作れ。
目安箱バナー