C++スコーラ

for文

最終更新:

cschola

- view
管理者のみ編集可

for文

for文 は while文 と同じようにループを作ります。
for文の形は次のようになります

for( 変数の宣言と初期化; ループ条件; ループカウント)

while と for の使い分けは、「ループの回数がわかっているときは for文」 
「ループの回数がわからないときは while文」 です。
使いながら覚えましょう。

for(int i = 0; i < 10; i++){
	printf("%d\n",i); // iがいくつなのか表示
}
while文 に比べてとてもコンパクトにまとまっています。
for と書いた次の ( ) の中にいろいろと入っています。

まず int i = 0; の部分ですが、ここはループに使う変数の初期化です。
i < 10; の部分がループの条件です。 今回は i が10より少ないあいだはループします。
i++ の部分は毎回行われるループ用変数の変化です。

なお、ここで作られた変数はforループの中でしか使えません。
for(int i = 0; i < 10; i++){
	printf("%d\n",i); // iがいくつなのか表示
}

printf("%d\n",i); // ループの外でiを表示【error!】

ループの外でも使う場合は下のようにループに入る前に宣言しておきましょう。
int i = 0;
for(i = 0; i < 10; i++){
	printf("%d\n",i); // iがいくつなのか表示	(1~9を表示)
}

printf("%d\n",i); // ループの外でiを表示【正常に動作】(10を表示)

インクリメント

i++ のほかに 「++i」 「i--」 「--i」 などがあり、それぞれに違いがあります。
次のプログラムの例はあまりいい書き方ではありません。よいこはマネしないでね。
例1
for(int i = 0; i <= 10;) {
	printf("%d\n",i++);
}
例2
for(int i = 0; i <= 10;){
	printf("%d\n",++i);
}
例3
for(int i = 10; i >= 0;){
	printf("%d\n",i--);
}
例4
for(int i = 10; i >= 0;){
	printf("%d\n",--i);
}
実行すると違いが分かると思います。
++ や -- が前についている場合はその式の最初に計算され、後ろについている場合は最後に計算されます。
++ をインクリメント -- をデクリメントなどと呼びます。

forの2重ループ

for文 も2重ループ、3重ループにすることができます。
for(int i = 0; i < 10; i++){  // ループ1
	for(int j = 0; j < 10; j++){  // ループ2
		printf("%d",j);  // ループ2のループ数を表示
	}
}

break

for文でも break を使えます
int num = 0;

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

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

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

continue

continue もfor文で使えます

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

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

scanf_s("%d",&num);

for(int i = 1; i <= 10; i++){
	// もしループ数と入力された数値が同じなら
	if(i == num){
		continue;  // 以降の処理を飛ばす
	}

	printf("%d回ループしました。\n",i);
}

練習問題

for文を使って1から5までの合計を計算して表示するプログラムを作りなさい。
目安箱バナー