第5回
制御構造と変数(1) if~条件判断と分岐の基本

ifの書式

ifによる条件判定と分岐の構造は大きく3つに分類できます。基本的な書式は共通していますが、それぞれ書き方が異なります。

ifの書式(1)

まず、基本は単純な判定と分岐の構造です。以下のような書式です。
if (<条件式>)
  <処理>

<条件式>には、一般に比較演算子を使った比較式を記述し、その結果が正しければ<処理>が実行されます。条件式の結果が正しくないときには<処理>は実行されず、その次に記述されたソースコードが実行されます。

<処理>が複数の行となる場合は、以下のように複数の行を{ }で囲みます。
if (<条件式>) {
  <処理>
}
図1:最もシンプルな条件判定と分岐~ifの書式(1)
図1:最もシンプルな条件判定と分岐~ifの書式(1)


ifの書式(2)

上の書式(1)では、『ある条件が成立しているときにだけ、特定の処理を行わせる』構造が作れます。ここで実現したい処理は、
変数numの値が1桁の整数なら
	→計算して結果を表示
そうでなければ
	→メッセージを表示
という形で、条件が成立していない場合にも特定の処理を実行しなければなりません。そのような場合には、以下の書式を用います。
if (<条件式>) {
  <処理1>
} else {
  <処理2>
}
図2:条件式の判定結果によって2つに分岐する構造~ifの書式(2)
図2:条件式の判定結果によって2つに分岐する構造~ifの書式(2)

ifの書式(3)

上の書式(2)の場合、<条件式>が正しければ<処理1>が実行され、正しくなければelse以降に記述された<処理2>が実行されます。

さらに、次のようにelse ifを使い、何段階にも条件を判定することも可能です。
if (<条件式1>) {
  <処理1> ------------- <条件式1>が正しいとき実行
}
else if (<条件式2>) {
  <処理2> ------------- <条件式1>は正しくなく
}                       <条件式2>が正しいとき実行
    :
else if (<条件式n>) {
  <処理n>
}
else {
  <処理m> ------------- すべての条件式が正しくないときに実行
}

if~else構造の書き方

if~elseの構造を、本文では以下のような形で記述しました。
if (...) {
  :
} else {
  :
}
この他に、以下のような書き方があります。
if (...) {
  :
}
else {
  :
}
どちらの書き方が正しい……という決まりはありません。どちらの書き方でも正しくコンパイルされて正しく動作します。要は、ソースの読みやすさの問題です。

前者の書き方は、ifやelseに続く処理が短い場合、ifとelseの組み合わせがよく分かります。しかし、処理が長くなるとソースコードにelseが埋もれてしまい、特に入れ子構造でいくつもif~elseの組が重なっている場合には、どのifがどのelseと対応しているのか分かりにくくなります。

後者の書き方は、ifやelseに続く処理が複数行にわたる場合、うまく字下げを行えば複雑な入れ子構造でもifとelseの関係が判別しやすくなります。