思考錯誤

すべてはどうでもよくなる

「プログラミングの基礎」読みほぐし③

今日は朝から活動しました。
残業しなくなってから、めっきり寝起きが良くなりました。
夏の暑さのせいで寝苦しい夜はありますがね。

さて、始めましょうか。

第三章 関数の定義

目次

  • 4.1 関数定義の必要性
  • 4.2 関数定義の構文
  • 4.3 関数の型
  • 4.4 型推論と型チェック
  • 4.5 関数の実行方法
  • 4.6 関数定義に対するデザインレシピ

4.1 関数定義の必要性

今回一番重要な「考え方」について。

前回例に出したアルバイトの給与計算をもう一度使ってみます。

# let jikyu = 900 ;;

# (25 * jikyu) + (28 * jikyu) + (31 * jikyu)

この例では、時給を変数にすることで共通化できています。
が、まだ共通化できそうな部分がありますよね。

(□ * jikyu)の部分です。
これは、「働いた時間からその人の給与を計算するには、その時間に変数 jikyu の値を掛ける」という情報なのです。

こういった情報のことを、数学では関数と表現します。

働いた時間を x とおき、x から給与を計算する関数 f 次のように定義できます。

f(x) = x・jikyu

さきほどのプログラムで関数を f を使用すると次のようになります。

f(25) + f(28) + f(31)

こうすると関数 f の計算式を複数回記述する必要はなくなります。
また、給与体系が変わった(例えば旅行積立金が引かれるようになった・・・とかね)としても f の定義を変更すれば済むと。

4.2 関数定義の構文

おそらく、いま巷で使われているプログラミング言語で、関数がサポートされていないプログラミング言語は無いのではないでしょうか。
もちろん、Ocaml でも他のプログラミング言語と同じように関数を定義することができます。

構文を見ていきましょう。

例えば、f (x) = 3x という関数を定義してみましょう。 次のように書きます。

# let f x = 3 * x ;;

Ocaml は数学と違い、引数に () を使用しません。
関数を使用するには次のように書きます。

# f 30
// => int = 90

これで f(30)を計算したこととなります。

引数は、スペースを間に挟むことによって複数指定できます。
例えば、x を y 乗 する関数は次のように書きます。

# let g x y = (x * x) * y ;;

# g 2 4 // => int = 16 // 2を4乗する
おさらい
  • 引数とはパラメタのことで、f (n) のnがそれにあたる
  • 関数名は変数名と同様、小文字で始まらなくてはならない

続きます

なんか小学生に戻って算数を勉強しているみたいです。
いや、中学校の数学か?バカなのでよくわかりません。

プログラミングの基礎 (Computer Science Library)

プログラミングの基礎 (Computer Science Library)