if文

■if文

if文は制御文のひとつで、条件によって処理を分けたい場合に使用します。
条件には比較演算子や論理演算子を使用した条件式を指定します。
書式がいくつかありますので、イメージ図と一緒に解説をしたいと思います。
※具体例にてprintf関数を使用しています。printf関数は文字列を画面に表示する関数です。
 例えばprintf("Hello World");という文があった場合は画面にHello Worldと出力されます。

●書式その1(真の場合のみ特定の処理を行いたい)
	C_0028

	書式例:
		if (条件式) {
			// 条件式の結果が真のならここの処理を行う
		}

	具体例:
		int month = 1;
		int day = 1;

		printf("今日は%d月%d日です\n", month, day);
		if (month == 1 && day == 1) {
			printf("Happy New Year!!!");
		}

		実行結果
			今日は1月1日です。
			Happy New Year!!!

	もし変数のmonthかdayの値が1以外だったら Happy New Year!!!の文字は表示されません。
	このように書式その1の方法はif文の条件が一致した場合のみ特定の処理を行うことができます。

●書式その2(真と偽で処理を分ける)
	C_0029
	書式例:
		if (条件式) {
			// 条件式の結果が真の場合はこっちを通る
		} else {
			// 条件式の結果が偽の場合はこっちを通る
		}

	具体例:
		int month = 11;

		// monthが1以上かつ12以下なら真、それ以外は偽
		if (month >= 1 && month <= 12) {
			printf("%d月です\n", month);
		} else {
			printf("そんな月はありません\n");
		}

		実行結果:
			11月です

	もし、monthに1~12以外の値を代入した場合は条件にあてはまりませんので、
	「そんな月はありません」と表示されます。
	書式その2の方法は条件にあてはまった場合と条件にあてはまらなかった場合の
	2パターンの処理を行うことができます。
●書式その3(条件が複数ある場合)
C_0030
書式例:
	if (条件1) {
		// 処理1
	} else if (条件2) {
		// 処理2
	} else if (条件3) {
		// 処理3
	} else if (条件4) {
		// 処理4
	} else {
		// 処理5
	}
具体例:
	int money = 3000;

	printf("ソーシャルゲーム課金診断\n");
	if  (money <= 1000) {
		printf("健全です");
	} else if (money <= 5000) {
		printf("これ以上増やさないように気をつけましょう");
	} else if (money <= 50000) {
		printf("最低限の衣食住の金額は確保しましょう");
	} else {
		printf("廃課金者です。ありがとう!!");
	}
	具体例実行結果:
		ソーシャルゲーム課金診断
		これ以上増やさないように気をつけましょう

	もし、moneyが50000以下の場合は「最低限の衣食住~」
	50000より上の場合「廃課金者です。~」が表示されます。
	イメージ図で書いてあるように「if ~ else if ~ else」は
	上から条件判定を順番に行っていきます。
	その中で一致した条件があればその条件に対応した処理を行います。
	その際に他の「if ~ else if ~ else」の処理は行われないので気をつけてください。

■ブロック

if文やその他の制御文は条件の中で行う処理であるということを明示するために
処理の部分を「{」と「}」で囲みます。
この「{」と「}」で囲まれたまとまりをブロックといいます。
ブロックの中のソースは見やすくするためにif文の位置からさらにタブ一つ文字を下げます。

	ブロック例:
		if (条件){ // ブロック始端
			// 処理
		} // ブロック終端

■入れ子

入れ子とは制御文の中にさらに制御文を追加することです。
入れ子はネストとも呼ばれています。

	入れ子書式例:
		if (条件) {
			// この条件文が入れ子
			if (条件) {
			}
		}

	入れ子具体例:
		int score = 100;

		if (score > 80) {
			if (score == 100) {
				printf("RankS\n");
			} else {
				printf("RankA\n");
			}
		}
		実行結果:
			RankS

●入れ子の注意点
	入れ子を追加することでソースの可読性が落ちたり、処理が複雑になりやすいので
	入れ子を増やさないようなソースを書くことを心がけたほうがいいと思います。