条件分岐とは何か?
プログラミングにおける 条件分岐(conditional branching) とは、ある条件(「もし~ならば」)を評価し、それが真(True)か偽(False)かによって処理を切り替える仕組みです。
たとえば、「もし年齢が 20 歳以上なら成人と表示する、それ以外なら未成年と表示する」といった判断をプログラムに与えるために使われます。
この仕組みを使うことで、プログラムは「ただ順番に処理を実行する」だけでなく、入力値や環境に応じて異なる動作をするようになります。
条件分岐がプログラムで必要な理由
主な理由は以下の通りです。
- ユーザ入力に応じて異なる処理をするため
- エラーや例外を判定・分岐処理するため
- 状態に応じて振る舞いを変えるため(たとえば、ログイン済みなら表示、未ログインならログイン画面に飛ばす)
- データの検証やバリデーション処理を行うため
プログラムの「制御フロー(制御構造)」の一つとして、条件分岐は三大基本構造(順次実行・条件分岐・繰り返し処理)の一つとされています。
if 文(単純な条件分岐)の書き方と基本構造
最も基本的な構造は以下のようになります。
疑似コード:
if (条件) {
条件が真の場合に実行する処理
}
条件が偽(False)の場合は処理をスキップします。また、言語によっては else を使って「偽のときの処理」を書けます。
例:Python の if 文
age = 18
if age >= 20:
print("成人です")
この例では、age >= 20 が真なら「成人です」と表示され、偽なら何もしません。
else・else if/elif を使った複数条件分岐
より実用的には、偽の場合の処理や複数の条件を順にチェックするケースが多いです。
擬似コードの構造例:
if (条件1) {
条件1が真のときの処理
} else if (条件2) {
条件1が偽かつ条件2が真のときの処理
} else {
どの条件も満たさないときの処理(デフォルト処理)
}
言語別例:Python
age = 15
if age >= 20:
print("成人です")
elif age >= 13:
print("ティーンです")
else:
print("子どもです")
このように、複数の条件を順に評価していき、最初に真となる分岐で処理が行われます。
論理演算子(AND, OR, NOT)を使って複雑な条件を組み合わせる
単純な条件では足りない場合、複数条件を組み合わせて判断したいことがあります。そのときに使うのが論理演算子です。
- AND(かつ):すべての条件が真であるとき全体が真
- OR(または):いずれかの条件が真であるとき全体が真
- NOT(〜でない):条件を否定する
例えば、「年齢が 20 歳以上 かつ 会員であるなら割引適用」などを表すには、次のような書き方をします。
if age >= 20 and is_member:
print("割引適用")
このように、論理演算子を使うことで複雑な条件もシンプルに書けます。
比較演算子・式の例
条件式の中でよく使われる比較演算子には以下のようなものがあります。
| 比較演算子 | 意味 | 例 |
|---|---|---|
== | 等しい | x == y |
!= | 等しくない | x != y |
> | より大きい | x > y |
>= | 以上 | x >= y |
< | より小さい | x < y |
<= | 以下 | x <= y |
これらを組み合わせて、「10 より大きく 20 以下である」などの条件を表現できます。
実例:言語別サンプルコード
- Python
x = 75
if x >= 90:
print("A")
elif x >= 80:
print("B")
elif x >= 70:
print("C")
else:
print("D")
- JavaScript
let x = 75;
if (x >= 90) {
console.log("A");
} else if (x >= 80) {
console.log("B");
} else if (x >= 70) {
console.log("C");
} else {
console.log("D");
}
- C 言語
int x = 75;
if (x >= 90) {
printf("A\n");
} else if (x >= 80) {
printf("B\n");
} else if (x >= 70) {
printf("C\n");
} else {
printf("D\n");
}
これらは「点数 → 評価」という分岐処理の典型例です。
ネスト(入れ子)条件分岐・可読性の注意点
条件分岐の中にさらに条件分岐を書くと ネスト構造 になります。こうすると読みづらくなったりバグを誘発しやすくなります。
if condition1:
if condition2:
do_something()
else:
do_other()
else:
do_default()
ネストが深くなると可読性が下がるため、可能なら早期リターンを使ったり別関数に切り出したりして整理すると良いです。
例外・デフォルト処理を忘れないために
条件分岐を書くとき、「どの条件にも当てはまらなかった場合」はどうするかをあらかじめ設計しておきましょう。else(デフォルト)を必ず設ける習慣をつけると安全です。
条件分岐にまつわるよくあるミス
条件分岐と他の構造(ループとの組み合わせ、状態遷移)との関係
条件分岐はループと組み合わせて、より複雑な制御フローを実現できます。
たとえば、ループ中に特定条件で処理をスキップしたり停止したりする場合などです。
また、状態遷移(ステートマシン)設計においては、現在の状態と入力に応じて次の動作を選択する「分岐ロジック」が条件分岐として使われます。
まとめ
条件分岐 はプログラムを動的に制御するために不可欠な構造です。
if / else if / else、論理演算子、比較演算子を組み合わせて使います。
ネストを深くしすぎないよう工夫し、デフォルト処理を必ず設けましょう。
複数言語で同じ考え方が応用できます。
この考え方を理解しておくと、あらゆるプログラムで「入力に応じて振る舞いを変える」ロジックを柔軟に書けるようになります。


