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 x 10-6 を意味する。



Kiyohide Nomura 平成16年6月9日