選択の補足

例年,「else」について理解の怪しい人が多いようなので, 補足説明しておきます.

ソースコードについての小さな違い(elseの有無)によって, 処理順序・実行結果については大きく異なる場合があります.
フローチャートソースコードと説明
// 選択の連接(else なし,if-if)

if (条件a) {
	処理A
}
if (条件b) {
	処理B
}

// 処理 A と B のどちらか一方,または両方が実行され得る.
// 条件 a と b の両方が成立の場合,処理 A と B の両方が実行される.
// 両方が不成立の場合,どちらも実行されない.
// 多肢選択(elseあり,if-else-if)

if (条件a) {
	処理A
} else if (条件b) {
	処理B
}

// 処理 A と B のどちらか一方だけが実行される.
// 条件 a と b の両方が成立の場合,処理 A だけが実行され,B は実行されない.
// (条件 a が成立していたら,条件 b は無視される.)
// 両方が不成立の場合,どちらも実行されない.
これって実は,次のようなコードの省略形ですよ. フローチャートと見比べてください.
if (条件a) {
	処理A
} else {
	if (条件b) {
		処理B
	}
}

elseあり」の場合, フローチャート的には,多段階に枝分かれして横方向へ広がって行くイメージです. 複数の枝から最初に条件が成立した1本だけを選び,その枝の処理だけを実行します. 選ばれなかった他の枝は実行されません.

ソースコード的には,else のブロック { } を横方向ではなく, 縦方向(上から下)へ並べて書くことになっているので, 誤解が多いのかも知れません. 脳内にフローチャートを描いて考えましょう.

一方,「elseなし」の場合,枝分かれは1段階だけに収まり, 複数の条件のすべてを連続的に判断しながら, 選ばれた複数の枝の処理を進めます.