全く同じ処理、あるいは似たような処理をある一定回数繰り返すことが、 プログラミングではよくあります。 繰り返し処理には、ここで学習するfor文、while文が あります。両方の使い方、およびfor文とwhile文の書き換えを修得してください。
for文の基本構造は以下の通りです。
for (初期値; 条件式; 増減式) { 条件式が満足されるときに実行される命令 (命令は複数行あっても可能) }
これだけでは想像しにくいですので、1から5までの数字を表示 させるプログラムの例を下記に示します。
for (i=1; i<=5; i++) { printf("i = %d\n", i); }
上記の「i++」は、「i += 1」「i = i + 1」と同じ意味になりますので、注意し ましょう。それでは、実行結果を下記に示します。
(実行結果) % ./a.out i = 1 i = 2 i = 3 i = 4 i = 5
for文における処理の流れは以下のようになります。
下記には、基本的なfor文を列挙しました。
1から100までの総和の計算
int i, sum=0; for (i = 1; i <= 100; i++) { sum += i; }
同一の文字列を10回繰り返して表示
int i; for (i = 0; i < 10; i++) { printf("私の名前は環境花子です。\n"); }
繰り返し処理を実現する別の方法には、while文もあります。 while文の基本構造は以下の通りです。
while (条件式) { 条件式が満足されるときに実行される命令 (命令は複数行あっても可能) }
for文に比べて、初期値、増減式がないですので、 どこかに自分自身で記述しないと行けません。 for文の時と同様に、1から5までの数字を表示 させるプログラムの例を下記に示します。実行結果は、for文の結果と 同じになります。
i=1; while (i<=5) { printf("i = %d\n", i); i++; }
違いがわかったでしょうか? 初期値の設定をwhile文の前に、増減式をwhile文の 実行文の一つとして記述しています。下記にfor文でのプログラムを 再掲しますが、for文とwhile文の書き換えができるようになってください。
for (i=1; i<=5; i++) { printf("i = %d\n", i); }
for文でもwhile文でも繰り返し処理ができますが、ある条件を満たせば繰り返し 処理を中止したい時があります。例えば、下記の例のように、1から 順番に足していって、総和が1000を越えるときの数字を知りたいとします。 その場合には、breakを使って、繰り返し処理から抜け出し ます。
1からの総和が1000を越えるときの調査
int i, sum=0; for (i = 1; ; i++) { sum += i; printf("i = %d, sum = %d\n", i, sum); if (sum > 1000) { break; } }
int i, sum=0; i = 1; while (1) { sum += i; printf("i = %d, sum = %d\n", i, sum); if (sum > 1000) { break; } i++; }
% ./a.out (中略) i = 38, sum = 741 i = 39, sum = 780 i = 40, sum = 820 i = 41, sum = 861 i = 42, sum = 903 i = 43, sum = 946 i = 44, sum = 990 i = 45, sum = 1035