繰り返し文は、条件が真である限り、ある範囲の処理を繰り返し実行します。繰り返し文には、for文とwhile文があります。do-whileというのもありますが、ほぼ使うことは無いので今の時点では覚えなくて良いです。
for文
for文は繰り返す回数が決まっている(分かっている)場合に使用する場合が多いです。for文の書式は以下のとおりです。
for(初期化処理; 繰り返し条件; 後処理){
処理;
}
初期化処理:for文を実行するにあたり、最初に実行されます。大体の場合は繰り返し数をカウントするカウンタ変数を0に初期化します。
繰り返し条件:ここで記述する条件が真の場合のみ、for文の中括弧{}で括られた範囲の処理が実行されます。条件が偽(0)の場合はfor文内の処理は実行されません。
後処理:for文内の処理が実行し終わったあとに実行されます。大体の場合はここで、繰り返し数をカウントするカウンタ変数をインクリメントします。
実際に書いて動かしてみましょう。
#include <stdio.h>
int main(void)
{
int i;
for(i=0; i<5; i++){
printf("i = %d\n", i);
}
return 0;
}
i = 0
i = 1
i = 2
i = 3
i = 4
基本的にはこのような使い方をします。カウンタ変数(i)を初期化処理で0にして、条件式(i < 5)が真の場合にprintf関数を実行します。その後に後処理のi++によってiに1が足されます。次に条件式(i < 5)が実行され真なら…というふうに処理されてiが5になったときに条件が偽になり、for文内の処理が実行されなくなります。
while文
while文は繰り返し数が決まっていない(わからない)場合に使用する場合が多いです。while文の書式は以下のとおりです。
while(繰り返し条件){
処理;
}
for文と比べて初期化処理と後処理がありませんね。while文は繰り返し処理の中でこれらを記述するか別の要因で繰り返し処理を終了させます。
実際に書いて動かしてみましょう。
#include <stdio.h>
int main(void)
{
int i = 0;
while(i < 5){
printf("i = %d\n", i);
i++;
}
return 0;
}
i = 0
i = 1
i = 2
i = 3
i = 4
繰り返し処理を途中で抜ける(break文)
break文を実行することでfor文/while文から抜け出すことができます。
実際に書いて動かしてみましょう。
#include <stdio.h>
int main(void)
{
int i;
for(i=0; i<5; i++){
if(i == 2){
break;
}
printf("i = %d\n", i);
}
return 0;
}
i = 0
i = 1
繰り返し処理の中に、iが2のときにbreak文を実行するようにしました。その結果、break文の実行によってfor文を抜けるため、printf関数は2回しか実行されません。