>> 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言語入門トップに戻る
●更新履歴
2016/08/16 Java入門ページにページを幾つか追加
2016/04/08 Java入門ページ作成
2016/03/09 メニューレイアウト変更。ブラウザキャッシュのクリアをお願い致します。
2016/03/09 PDOトランザクション、自動コミットモードをオフ追加
2016/03/09 PDO 例外処理 try catch追加
2016/03/09 PDO update文実行追加
2016/03/09 PDO delete文実行追加
2016/03/09 PDO insert文実行追加
2016/03/09 PDO selectでデータを取得、fetchAll、queryメソッド追加
2016/03/09 PDO bindValueとbindParamの違い追加
2016/03/09 PDO prepare プリペアドステートメントの使い方追加
2016/03/04 ソースコードをクリップボードにコピーする機能を追加
2016/03/04 C言語、C++のページのソースコードを一部修正
2014/01/31 C言語関数一覧ページに11ページほど追加
2014/01/31 C言語関数一覧ページに30ページほど追加
2014/01/30 C言語関数一覧ページ作成中
2013/07/01 レイアウト変更に伴いブラウザキャッシュのクリアをお願いします。
2013/07/01 MySQL入門ページ作成
2013/07/01 PHP入門ページにSQLite学習項目追加
2013/06/25 ドメイン変更、レイアウトを一部変更
2013/03/14 レイアウトを一部変更
2012/08/13 C言語よくある課題・宿題ページ開設!
2012/08/13 シューティングゲーム作成第33章追加!
2012/08/11 ドメイン変更&サーバ移設完了
2012/04/21 シューティングゲームプログラミング第2,3章の内容を修正
2012/04/19 シューティングゲームプログラミング第2章の内容を修正
2012/04/03 Googleカスタム検索を設置!
2012/04/03 シューティングゲームプログラミング第32章追加!
2012/04/03 シューティングゲームプログラミング第31章追加!
2012/03/31 サイトをリニューアルしました!
2012/03/25 シューティングゲームプログラミング第30章追加!
2012/03/19 シューティングゲームプログラミング第29章追加!
2012/03/16 シューティングゲームプログラミング第28章追加!
2012/02/27 シューティングゲームプログラミング第27章追加!
2012/02/03 シューティングゲームプログラミング第26章追加!
2012/01/31 シューティングゲームプログラミング第25章追加!
2012/01/20 シューティングゲームプログラミング第23,24章追加!
2012/01/11 シューティングゲームプログラミング第22章追加!
2012/01/05 トップページ、ゲームプログラミング関連のトップページのデザインを変更
2012/01/04 シューティングゲームプログラミング第21章追加!
2012/01/01 シューティングゲームプログラミング第20章追加!
2011/12/25 シューティングゲームプログラミング第19章追加!
2011/12/22 シューティングゲームプログラミング第18章追加!
2011/12/18 シューティングゲームプログラミング第17章追加!
2011/12/17 シューティングゲームプログラミングページOPEN!
2011/11/21 ゲームプログラミングページOPEN!
2011/11/21 サイトデザインを大幅に変更
2011/11/17 TOPページのデザインを変更。相互リンクページに、複数サイト追加。
2011/11/06 WINAPI学習ページ(33~36章)追加
2011/11/05 WINAPI学習ページ(20~32章)追加
2011/10/27 WINAPI学習ページ(14~19章)追加
2011/10/21 WINAPI学習ページ(13章)追加
2011/10/21 サイトマップ、連絡ページ追加
2011/10/17 WINAPI学習ページ(6~11章)追加
2011/10/16 WINAPI学習ページ(1~5章)追加
2011/10/13 全体のレイアウト変更
2011/10/07 PHP学習ページ(8~11章)追加
2011/10/06 PHP学習ページ(1~7章)作成
2011/10/06 JavaScriptリファレンスページ作成
2011/10/05 C言語学習ページ発展編(10~14章)追加
2011/10/04 C言語学習ページ発展編(1~9章)追加。
2011/10/03 HTML/CSSリファレンスのページ追加。(個々の詳細ページは作成中)
2011/09/30 HTML学習ページ(8章)追加
2011/09/29 JavaScript学習ページ(12~17章)追加
2011/09/28 JavaScript学習ページ(1~11章)追加
2011/09/27 HTML学習ページ(4~7章)追加
2011/09/26 C言語学習ページ(27章)追加、C++学習ページ(17章)、HTML学習ページ(1~3章)追加
2011/09/25 C言語学習ページ(23~26章)を追加
2011/09/24 C++学習ページ(9~16章)追加
2011/09/23 C++学習ページ(3~8章)追加
2011/09/22 C言語の学習ページ(22章)とC++学習ページ(1~2章)追加
2011/09/21 C言語の学習ページ(15章~21章)を追加
2011/09/20 C言語の学習ページ(10章~14章)を追加
2011/09/19 サイト作成(随時更新予定)