二次方程式 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) = 
  if no_roots(a,b,c) then 0 
  else (if one_root(a,b,c) then 1 
        else 2) ;; 
val number_of_roots : float * float * float -> int = <fun>
#
少し複雑な式ですが,分解して考えればそれほど難しくありません.後ろから順に見てゆくと,
ということになります.実際に計算させて正しく解の個数を求めているか調べてみましょう.
# number_of_roots(1.0,-5.0,6.0) ;; 
- : int = 2
# number_of_roots(1.0,2.0,1.0) ;; 
- : int = 1
# number_of_roots(1.0,2.0,2.0) ;; 
- : int = 0
#
| 17.4.16 条件の組み合わせ | 
     | 
    17.4.17 条件判断 | 
     | 
  17.4.18 判断までの定義のまとめ | 
| 
     2009年度版に向けて現在作業中です.
  このページに関してお気づきの点がありましたら
  コメント投稿システムまでお願いします.
   
     | 
  Wed, 06 Jul 2005 13:00:08 JST (1486d) | |||