for文 - (2016/08/09 (火) 10:10:46) の最新版との変更点
追加された行は緑色になります。
削除された行は赤色になります。
for文 は while文 と同じようにループを作ります。
for文の形は次のようになります。
変数の宣言;
for( 変数の初期化; ループ条件; ループカウント)
while と for の使い分けは、「ループの回数がわかっているときは for文」
「ループの回数がわからないときは while文」 です。
使いながら覚えましょう。
int i;
for(i = 0; i < 10; i++)
{
printf("%d\n",i); // iがいくつなのか表示
}
while文 に比べてとてもコンパクトにまとまっています。
for と書いた次の ( ) の中にいろいろと入っています。
まず i = 0; の部分ですが、ここはループに使う変数の初期化です。
i < 10; の部分がループの条件です。 今回は i が10より少ないあいだはループします。
i++ の部分は毎回行われるループ用変数の変化です。
i++ のほかに 「++i」 「i--」 「--i」 などがあり、それぞれに違いがあります。
次のプログラムの例はあまりいい書き方ではありません。よいこはマネしないでね。
**例1
int i;
for(i = 0; i <= 10;)
{
printf("%d\n",i++);
}
**例2
int i;
for(i = 0; i <= 10;)
{
printf("%d\n",++i);
}
**例3
int i;
for(i = 10; i >= 0;)
{
printf("%d\n",i--);
}
**例4
int i;
for(i = 10; i >= 0;)
{
printf("%d\n",--i);
}
実行すると違いが分かると思います。
++ や -- が前についている場合はその式の最初に計算され、後ろについている場合は最後に計算されます。
++ をインクリメント -- をデクリメントなどと呼びます。
for文 も2重ループ、3重ループにすることができます。
while文 は break を使うことで強制的に終了させることもできます。
int i = 0;
int num = 0;
printf("0以外を入力すると終了です。\n");
while(true) //無限ループ
{
printf("%d回ループしました。\n数値を入力してください。\n",i);
scanf("%d",&num);
if(num != 0)
{
break;
}
i++;
}
上の例では (true) と書いてあります。 この場合 break がないと無限ループになってしまいます。
break は for文 にも使うことができます。
ループを先頭に戻す命令として continue があります。
int num = 0;
printf("1から10の数値を入力してください。\n");
scanf("%d",&num);
int i;
for(i = 0; i < 10; i++)
{
if(i == num)
{
continue;
}
printf("%d回ループしました。\n",i);
}
continue も for文 while文 どちらでも使うことができます。
continue を使うとそこから下の処理を飛ばしてループの先頭に戻ります。
※練習問題
練習問題は次の回のページにまとめてあります。
**for文
for文 は while文 と同じようにループを作ります。
for文の形は次のようになります
&bold(){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までの合計を計算して表示するプログラムを作りなさい。
表示オプション
横に並べて表示:
変化行の前後のみ表示: