Nested IF 構文

ある条件が真か偽の場合だけでなく、その条件が成り立つ時、さらに別の条件が 成り立つかどうか多重の条件分岐をしたい時がある。例えば、2次方程式で最初 の係数が$a=0$では1次方程式の問題に帰着し、$a \neq 0$では判別式の正負に応 じて処理の仕方を変えたい時である。この時には、else if 文を使う。


if $(a)$ then $b1$ else if $(a2)$ then $b2$ else $b3$ end if

[説明] 条件$a1$ が正しければ実行文(のグループ) $b1$ を行う。条件 $a1$ が正しくない時でしかも条件 $a2$ が成り立つ時は実行文(のグループ) $b2$ を行う。条件 $a1$,$a2$ が両方とも成立しない場合は実行文(のグループ) $b3$ を行う。end if 文は if 構文の終りを示している。

例:

      if (abs(d) <= 1.0e-6) then
         write(*,*) "juukon"
      else if (d < 0.0) then
         write(*,*) "d negative"
      else
         write(*,*) sqrt(d),-sqrt(d)
      end if

注意:実数型の場合、機械精度の限界のため d == 0.0 といった判定は無意味で ある。従って d の絶対値が十分小さい時、0 とみなして代用する(これは2つの 実数型変数が等しいという判定でも必要な配慮である)。また、ここで 1.0e-6 は $1.0 \times 10^{-6}$ を意味する。



Kiyohide Nomura 平成16年6月9日