繰り返し文
制御文には、大きくわけて、繰り返し文、条件文の2つがあります。
ここでは、繰り返し文であるwhile文、do while文、for文の構造と使い方について書いていきたいと思います。
条件文については、こちらにまとめていますので、併せてご覧ください。
while文
while文は、上図のような構造をしていて、終了条件が1(真)の間、ブロック内の処理を繰り返すというものです。
while文は、最初に終了条件の評価がなされます。終了条件が真のとき、ブロック内の処理が実行されます。ブロック内の処理が終わった時点で、再度、終了条件を評価し、条件が真の間、ブロック内の処理を繰り返します。
終了条件が0(偽)となった時点で、ブロック外のプログラムに処理を進めます。
終了条件は、処理を実行する前に評価されるので、はじめから条件が偽の場合は、ブロック内処理を一度も実行することなくプログラムが進みます。
#include <stdio.h>
main()
{
int i = 10;
while(i--){
printf("%d\n",i);
}
printf("end\n");
}
C:\prog>test
9
8
7
6
5
4
3
2
1
0
end
do while文
while文と同様に繰り返し処理を行う制御文として、do while文があります。
while文との違いは、終了条件の評価をブロック内処理実行後に行うことです。
従って、ブロック内の処理は、終了条件によらず必ず1回は実行されることになります。
この点以外の処理の流れは、while文と同じです。
#include <stdio.h>
main()
{
int i = 10;
do{
printf("%d\n",i);
}while(i--);
printf("end\n");
}
C:\prog>test
10
9
8
7
6
5
4
3
2
1
0
end
for文
for文もwhile文、do while文と同様に繰り返し処理を行う制御文です。
for文は、終了条件の判断に使う変数の初期化と更新が終了条件の評価とセットになっているのでプログラム行数を減らして見やすい繰り返し文を作ることができます。
処理順序としては、まず、初期値の処理が実行され、次に終了条件が評価されます。終了条件が真の場合、ブロック内の処理が実行され、最後にステップの更新が実行されます。通常、ステップ更新には、終了条件の判断をする変数をインクリメント(+1)するかデクリメント(ー1)するなどの加減算を行います。ステップ更新後、再度、終了条件の評価が行われ、評価が真の間は、ブロック内処理、ステップ更新、終了条件評価の繰り返しを行います。
#include <stdio.h>
main()
{
int i;
for(i=0;i<10;i++){
printf("%d\n",i);
}
printf("end\n");
}
C:\prog>test
0
1
2
3
4
5
6
7
8
9
end
初期値がはじめから終了条件を満たさない場合は、ブロック内の処理は一度も実行されません。
#include <stdio.h>
main()
{
int i;
for(i=1;i<1;i++){
printf("%d\n",i);
}
printf("end\n");
}
C:\prog>test
end
コメント