# プログラミングの基礎 3章 変数の定義 3.1 変数の必要性 ある会社の時給が850円だとしてAさんは週に合計25時間、Bさんは28時間、Cさんが31時間働いたとしたらバイト代は以下のように計算できる。 ``` (25*850)+(28*850)+(31*850) ;; - : int = 71400 ``` 時給が変わる可能性がある場合は時給の部分をくくり出せば、変更を一か所で済ませることができる。 ``` (25+28+31)*850 ;; - : int = 71400 ``` 3.2 変数定義の構文 ・変数定義の構文 →let 変数名 = 式 ``` let pi = 3.1415 ;; val pi : float = 3.1415 ``` piという名前の変数を定義してその値を3.1415という値にする。 piというfloat型の変数を定義しましたという返答がくる。 変数定義を使うと3.1の給与体系が複雑になったときに対応できるようになる。 ``` let jikyu = 850 val jikyu : int = 850 ``` これで時給が変動してもアルバイト代計算の主要な部分は変更しなくて済む。 ``` (25*jikyu)+(28*jikyu)+(31*jikyu) ;; - : int = 71400 ``` 4章 関数の定義 4.1 関数定義の必要性 3章では時給の変更には対応できるようになったが基本給というものが新たに加わったら変数だけでは不十分である。 以下のようにやると時給基本給が変動しても変数の宣言を書き換えるだけで対応できるようになる。 ``` let jikyu = 950 ;; val jikyu : int = 950 let kihonkyu = 100 ;; val kihonkyu : int = 100 ``` 合計金額の計算部分は以下のように書き換える必要がある。 ``` (kihonkyu+25*jikyu)+(kihonkyu+28*jikyu)+(kihonkyu+31*jikyu) ;; - : int = 80100 ``` 4.2 関数定義の構文 ・関数定義の構文 →let 関数名 引数 ・・・ = 式 f(x) = 3xという関数を定義すると以下のようになる。 ``` let f x = 3*x ;; val f : int -> int = <fun> ``` アルバイトの例は以下のように表すことができる。 ``` let kyuyo x = kihonkyu+x*jikyu ;; val kyuyo : int -> int = <fun> ``` 5章 条件分岐 5.1 条件分岐の必要性 アルバイトの例として週に30時間以上働いた人はより優遇した980円を使うように給与体系を変更するとしてまずは時給の表す変数を定義する。 ``` let yugu_jikyu = 980 ;; val yugu_jikyu : int =980 ``` そうしたら働いた時間が30時間未満だったらkihonkyu+x*jikyuで給与を計算して、30時間以上だったらkihonkyu+x*yugu_jikyuで給与を計算するように整理できる。 5.2 条件分岐の構文 場合分けを行うにはif文を使う。 ・if文の構文 →if 条件 than 式 else 式 if文のルールとして「条件」はbool型、二つの「式」は同じ型を持たなくてはならない。 ``` if true then 1 else 2 ;; - : int = 1 if false then 1 else 2 ;; - : int = 2 ``` 5.3 kyuyoの例 if文を使うと先の関数kyuyoを作成できる。 ``` (*優遇時給(円)*) let yugu_jikyu = 980 let kyuyo x = if x < 30 then kihonkyu+x*jikyu else kihonkyu+x*yugu_jikyu ```