17.4.17 条件判断

二次方程式 ax^2+bx+c=0 の解の個数を求めてみましょう.ここまでで見てきたように,解を0,1,2個持つ場合の条件をそれぞれ式として書くことができていますので,あとは

となるような式を作ればよいわけです.

このような式は一般に条件式と呼ばれ,Ocamlではif 条件 then 式1 else 式2のように書きます.条件が成り立つ,つまりtrueだった場合は式1の計算結果が答えになります.そうでない,つまりfalseだった場合は式2の計算結果が答えになります.

従って解の個数を求める関数number_of_rootsは次のように定義できます.

# let number_of_roots(a,b,c) = return2 if no_roots(a,b,c) then 0 return2 else (if one_root(a,b,c) then 1 return2 else 2) ;; return2 val number_of_roots : float * float * float -> int = <fun> #

少し複雑な式ですが,分解して考えればそれほど難しくありません.後ろから順に見てゆくと,

ということになります.実際に計算させて正しく解の個数を求めているか調べてみましょう.

# number_of_roots(1.0,-5.0,6.0) ;; return2 - : int = 2 # number_of_roots(1.0,2.0,1.0) ;; return2 - : int = 1 # number_of_roots(1.0,2.0,2.0) ;; return2 - : int = 0 #