「繰り返し while文 for文」の編集履歴(バックアップ)一覧はこちら
「繰り返し while文 for文」(2017/08/21 (月) 13:20:28) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
**10.繰り返し while文 for文
同じようなことを繰り返させるのに,同じようなことをひたすら書き続けるのは大変ですね.
例えば1から10までの数字を表示させることを考えます.
馬鹿正直に1行づつ書くと、下のプログラムのようになります.
#include <stdio.h>
int main(void)
{
printf("1\n\r");
printf("2\n\r");
printf("3\n\r");
printf("4\n\r");
printf("5\n\r");
printf("6\n\r");
printf("7\n\r");
printf("8\n\r");
printf("9\n\r");
printf("10\n\r");
return 0;
}
今回は10までの数字でしたが、10000までの数字を1つずつ表示するとなったらどうすればよいでしょうか。
こうした単純な繰り返しこそコンピュータの得意技です.繰り返しの制御構文にwhile文,for文などがあります.
while文について
繰り返し行う構文の一つです.
書式
while文で記述
(繰り返し開始時に行う処理)
while(条件式)
{
繰り返したい処理
・
・
・
1周するごとに実行する文
}
while文は条件式が真のとき、{ }内の処理を繰り返します。
1から10000までの数字を表示させるプログラムをwhile文で記述します.
#include <stdio.h>
int main(void)
{
int x = 1;
while(x < 10001)
{
printf("%d\n\r", x);
x++;
}
return 0;
}
動きを1行ずつ追っていきます.
まず,ループ用変数としてiが用意します.
次の行でwhile()に当たります.ループ条件は1<10001なので真です.{}内に進みます.
printf()で1を表示します.
i++でループ回数を1増やし,iは2になります.
}にあたったらwhile()に戻ります.
2<10001なので{}内に進みます.
3,4,...9999回も同様です.
10000回目 printf()で10000を表示します.
i++でiは10001になります.
100001 < 100001は偽です.{}を飛ばします.
return 0にあたり,プログラムを終了します.
これをいちいち1~10000までprintfを書くよりはるかに楽に記述できています.
また,繰り返し回数が変数にできるところも大きな利点です.
for文について
while文同様繰り返しを記述できる構文です.
while文への書き換えも可能ですが,どちらで記述した方が簡潔かは場合によりけりです.適切な使い分けをしましょう.
書式
for(繰り返し開始時に行う式(初期化式); 条件式; 1周するごとに実行する式(更新式))
{
繰り返したい処理
・
・
・
}
1から10000まで出力するプログラムを書いてみます.
#include <stdio.h>
int main(void)
{
int i;
for(i = 0; i < 10000; i++)
{
printf("%d", i+1);
}
return 0;
}
最初for文に入ったとき,for文の最初の文が実行され,iに0が代入されます.
次に真ん中の継続条件判定が行われ,これが真であるとき{}の中が実行され続けます.
最初iは0であり,0<10000は真なので実行されます.
そして{}内に入りi+1,即ち1を出力します.
}に当たったらfor文の最後i++が実行され,iが1増えて1になります.
その次にfor文の継続条件判定を行います.1<10000は真なので実行されます.
2,3,4,...9999回目も同様です.
10000回出力後, i++の結果iが10000になると継続条件判定10000<10000が偽になるのでfor文から抜けます.
その下のreturn 0でプログラムが終了します.
簡潔にまとめるとこんな感じです.
int i; (繰り返しカウント用変数.)
for(i = 0; i < (繰り返したい回数); i++)
{
繰り返したい処理
・
・
・
}
このようにして全く等価なfor文とwhile文を書き換えられます.
for文で記述
for(初期化式; 条件式; 更新式)
{
繰り返したい処理
・
・
・
}
while文で記述
(初期化式)
while(条件式)
{
繰り返したい処理
・
・
・
更新式
}
例題1 : 1つの正数nを入力し, 1+2+3+…nを計算し出力する(for文で)
#include <stdio.h>
int main(void)
{
int i, n, answer = 0;
printf("正整数を入力してください:"); scanf("%d", &n);
for(i = 0; i < n; i++)
{
anwser += i+1;
}
printf("1から%dまでの総和は%dです", n, answer);
return 0;
}
例題2 : 例題1をwhile文で
#include <stdio.h>
int main(void)
{
int i = 0, n, answer = 0;
printf("正整数を入力してください:"); scanf("%d", &n);
while(i < n)
{
answer += i+1;
i++;
}
printf("1から%dまでの総和は%dです", n, answer);
return 0;
}
演習1 : 九九の表を出力する.
演習2 : 1つの正数nを入力し,素数かどうか判定する.
**10.繰り返し while文 for文
同じようなことを繰り返させるのに,同じようなことをひたすら書き続けるのは大変ですね.
例えば1から10までの数字を表示させることを考えます.
馬鹿正直に1行づつ書くと、下のプログラムのようになります.
#include <stdio.h>
int main(void)
{
printf("1\n\r");
printf("2\n\r");
printf("3\n\r");
printf("4\n\r");
printf("5\n\r");
printf("6\n\r");
printf("7\n\r");
printf("8\n\r");
printf("9\n\r");
printf("10\n\r");
return 0;
}
今回は10までの数字でしたが、10000までの数字を1つずつ表示するとなったらどうすればよいでしょうか。
こうした単純な繰り返しこそコンピュータの得意技です.繰り返しの制御構文にwhile文,for文などがあります.
while文について
繰り返し行う構文の一つです.
書式
while文で記述
(繰り返し開始時に行う処理)
while(条件式)
{
繰り返したい処理
・
・
・
1周するごとに実行する文
}
while文は条件式が真のとき、{ }内の処理を繰り返します。
1から10000までの数字を表示させるプログラムをwhile文で記述します.
#include <stdio.h>
int main(void)
{
int x = 1;
while(x < 10001)
{
printf("%d\n\r", x);
x++;
}
return 0;
}
動きを1行ずつ追っていきます.
まず,ループ用変数としてiが用意します.
次の行でwhile()に当たります.ループ条件は1<10001なので真です.{}内に進みます.
printf()で1を表示します.
i++でループ回数を1増やし,iは2になります.
}にあたったらwhile()に戻ります.
2<10001なので{}内に進みます.
3,4,...9999回も同様です.
10000回目 printf()で10000を表示します.
i++でiは10001になります.
100001 < 100001は偽です.{}を飛ばします.
return 0にあたり,プログラムを終了します.
これをいちいち1~10000までprintfを書くよりはるかに楽に記述できています.
また,繰り返し回数が変数にできるところも大きな利点です.
for文について
while文同様繰り返しを記述できる構文です.
while文への書き換えも可能ですが,どちらで記述した方が簡潔かは場合によりけりです.適切な使い分けをしましょう.
書式
for(繰り返し開始時に行う式(初期化式); 条件式; 1周するごとに実行する式(更新式))
{
繰り返したい処理
・
・
・
}
1から10000まで出力するプログラムを書いてみます.
#include <stdio.h>
int main(void)
{
int i;
for(i = 0; i < 10000; i++)
{
printf("%d\n\r", i+1);
}
return 0;
}
最初for文に入ったとき,for文の最初の文が実行され,iに0が代入されます.
次に真ん中の継続条件判定が行われ,これが真であるとき{}の中が実行され続けます.
最初iは0であり,0<10000は真なので実行されます.
そして{}内に入りi+1,即ち1を出力します.
}に当たったらfor文の最後i++が実行され,iが1増えて1になります.
その次にfor文の継続条件判定を行います.1<10000は真なので実行されます.
2,3,4,...9999回目も同様です.
10000回出力後, i++の結果iが10000になると継続条件判定10000<10000が偽になるのでfor文から抜けます.
その下のreturn 0でプログラムが終了します.
簡潔にまとめるとこんな感じです.
int i; (繰り返しカウント用変数.)
for(i = 0; i < (繰り返したい回数); i++)
{
繰り返したい処理
・
・
・
}
このようにして全く等価なfor文とwhile文を書き換えられます.
for文で記述
for(初期化式; 条件式; 更新式)
{
繰り返したい処理
・
・
・
}
while文で記述
(初期化式)
while(条件式)
{
繰り返したい処理
・
・
・
更新式
}
例題1 : 1つの正数nを入力し, 1+2+3+…nを計算し出力する(for文で)
#include <stdio.h>
int main(void)
{
int i, n, answer = 0;
printf("正整数を入力してください:"); scanf("%d", &n);
for(i = 0; i < n; i++)
{
answer += i+1;
}
printf("1から%dまでの総和は%dです\n\r", n, answer);
return 0;
}
例題2 : 例題1をwhile文で
#include <stdio.h>
int main(void)
{
int i = 0, n, answer = 0;
printf("正整数を入力してください:"); scanf("%d", &n);
while(i < n)
{
answer += i+1;
i++;
}
printf("1から%dまでの総和は%dです\n\r", n, answer);
return 0;
}
演習1 : 九九の表を出力する.
演習2 : 1つの正数nを入力し,素数かどうか判定する.