>> C言語入門トップに戻る

for文について

今回はfor文について説明します。
プログラミングをしているとどうしても繰り返しの処理が必要になってきます。
ですが、同じ処理を何十行も書いていてはコードが見にくいし、面倒です。
そういう時の為に、繰り返し処理を行うfor,while文があります。
下記のコードを見てください。

#include <stdio.h>

int main(void){
	
	for(int i=0;i<10;i++){
		printf("%d\n",i);
	}

	return 0;

}


これを実行するとこうなります。

どうですか?
コードはたったこれだけなのに、0から9までの数字が表示できています。
すごいですよね?
ではコードの解説を行います。
まず、for文の書き方ですが、

for(ループ変数の初期値設定;ループ条件;ループ変数の計算){
ループ処理;
}

となっています。

for文というのは、ループ変数というものがあり、
そのループ変数の値が、指定したループ条件を満たしている間だけ、
処理が実行されるという仕組みになっています。

まず、ループ変数の初期値設定から説明します。
その場所には、
int i=0と書かれていますが、
これはint型のiと言う変数を宣言して初期値に0を設定している、という意味です。
この変数はfor文の{}で区切られた中だけで有効です。
これはスコープと言って{}の中で宣言した変数は、
その{}の中だけでしかアクセスできないという仕組みになっています。
このスコープについては後ほど、別の講座で詳しく説明するつもりです。
これで初期値の設定は出来ました。

次に、ループ条件ですが、
これは、文字通りループしている間の条件を決めるところです。
たとえば、上記のループ条件は、
i<10
となっているので、
iの値が10より小さい間は処理し続けるという意味になります。
もし、iの値が10になった場合、
10より小さいという条件からは外れる(偽になる)ので、forループ処理が終わって、
次の行のプログラムの実行に移ります。

最後に、ループ変数の計算、ですが、
これは、ループ毎に変数をどう計算するかを設定するものです。
今回は、
i++
となっています。
i++というのは見たことないと思いますが、これは、
iに1を足すという意味です。
i--というのもあり、これは、iから一を引くという意味です。
つまり、ループ毎にiに1を足しますよ、という意味になるわけです。

以上で、各項目の説明は終わりました。
一旦forループの処理の流れをまとめましょう。

●初期値設定 i=0;

●条件判定 i<10 0<10で、条件にマッチ(真)なので、処理続行

●{}内の処理実行

●ループ変数計算処理 i++ この時点でi=1になる。

●条件判定 i<10 1<10で、条件にマッチ(真)なので、処理続行




●ループ変数計算処理 i++ i=10になる

●条件判定 i<10 10<10で、条件にアンマッチ(偽)なので、この時点で処理終了。

これを見てわかるとおり、
初期値設定は最初の一回しか行われません。
その次に、条件判定が行われ、その後{}内の処理が実行され、その後にループ変数の計算処理が、行われます。
ループ変数の計算処理が最後に行われていることをよく覚えておいて下さい。
今回のコードを実行すると、
9までしか表示されてませんよね?
今説明したとおり、ループ変数の計算処理は最後に行われます。
つまり、9の数字を表示した後で、ループ変数の値が10になります。
その後、条件処理が行われて、条件にアンマッチするのでその時点で処理が終了となり、
9までしか表示されないということになるわけです。
わかりましたでしょうか?

また、ループを途中で抜けたい場合は、break文を使います。
下記のコードを見てください。

for(int a=0;a<5;++a){
~処理~
if(a==2){
break;
}
}

こうかけば、aが2になったときにループを抜けることができます。


for文の説明は以上です。
while文の説明は次回にします。
>> 【while文について】に進む
>> C言語入門トップに戻る