変数や関数を定義する

 

さて、ここで問題です。次の式を計算した結果はいくつになるでしょうか。

 

1.        2.0 *. 10.0 *. 3.141592653589793

2.        10.0 *. 10.0 *. 3.141592653589793

3.        20.0 *. 20.0 *. 3.141592653589793

 

計算自体は簡単ですが、同じ数3.141592653589793を何度も入力するのは、いかにも非生産的です。こういうときは、その数を表す変数を定義するのがプログラミングの常套手段です。そうすれば、たとえば円周率として用いる数を後から変えたくなっても、一回の変更でOKとなり、プログラムの保守が簡単になります。OCamlでは

 

# let pi = 3.141592653589793 ;;

val pi : float = 3.14159265358979312

 

のように、「let 変数の名前 = 式」という構文で変数を定義することができます。定義した変数は、式の中で普通に使用することができます。

 

# 2.0 *. 10.0 *. pi ;;

- : float = 62.8318530717958623

# 10.0 *. 10.0 *. pi ;;

- : float = 314.159265358979326

# 20.0 *. 20.0 *. pi ;;

- : float = 1256.6370614359173

 

しかし「10.0 *. 10.0 *. pi」と「20.0 *. 20.0 *. pi」のあたりは、まだ同じような計算をしていて無駄な感じがします。こういうときは、浮動小数r引数(ひきすう)とし、r *. r *. pi返値(かえりち)とする関数を定義するのが鉄則です。OCamlでは、やはりlet構文を使用して関数を定義することができます。

 

# let area_of_circle r = r *. r *. pi ;;

val area_of_circle : float -> float = <fun>

# area_of_circle 10.0 ;;

- : float = 314.159265358979326

# area_of_circle 20.0 ;;

- : float = 1256.6370614359173

 

関数area_of_circleの型はfloat -> floatになります。これは「浮動小数を受け取って浮動小数を返す関数」という意味です。

 

次へ進む