welcome: please sign in

2010-02-19 02:48:40時点のリビジョン2

メッセージを消す
location: 関数の定義と利用

関数を作る

同じような問題が沢山ある場合を考えます。

面積を求める問題です。 A,B,C,Dの4つの問題があります。

横幅(底辺の長さ)が異なるだけで、他は同じ問題です。

Aの面積は次のようにして求めることができます。

1行目では、三平方の定理を使って三角形の高さを求めています。
2行目で三角形の面積を、3行目で四角形の面積を求め、
4行目でそれを合計して全体の面積を求めています。

この後に結果を表示する命令

を加えればプログラムができます。

次に、Bの問題を解こうとすると、プログラムに変更が必要です。 上のプログラムで 2 や 4 となっている箇所がそうです。

数を直接書かずに、いちど名前をつけてから使うようにすれば、修正は1箇所で済みます。


関数を考える

関数はなにか引数(ひきすう)を与えて呼び出すと、答となる値を返してくれるものです。 例えば、Math.sqrt は、数値を与えるとその平方根を返す関数でした。

上の問題では、横幅を与えて呼び出すと、面積を返してくれる関数があれば

js> menseki(4)

と入力することで答を得ることができます。

システムに最初から用意されている関数は sqrtやsinのような一般的なものだけです。 それ以外の関数は用意されていません。

でも、自分で関数を定義することができます。 必要な関数は自分でプログラムしてやればよいのです。


関数の定義

関数を定義するには次のように書きます。

function や ( ) { } はその通りに書きます。

menseki とある部分は関数名になります。あとでこの名前で呼び出して使います。 yoko とある部分は引数につけられる名前です。

その後ろに { があり、何行かの文が続き、 } で終わります。 { から } までの部分を関数の本体と呼びます。

... の部分には、答を計算するための代入文などを書きます。 この部分は何行になってもかまいません。

最後に、値を返すために return文を書きます。 kotaeの部分には返す値を書きます。

全体の構文は次のようになります。 本体部分は文をいくつか並べて大括弧で囲った形です。

return文の構文はこのようになります。


関数の動作

上の問題での面積を求める関数はこのように書けます。

本体部分は tab を使って右にずらして記述しています。 間違いを少なくするために、このように書くように心がけましょう。

本体部分は、次の図形の面積を求める計算になっています。 値の決まっていない yoko は関数の引数に対応しています。

このプログラムをエディタで入力し、ファイル名を sample.js として保存したとします。

を行うとこのプログラムが読み込まれます。 プログラムが(文法的に)正しく記述されているときには、loadに対する反応はありません。

プログラムに文法的な間違いが見つかったときだけ、エラーメッセージが表示されます。

文法的な誤りが無ければ、プログラムが読み込まれ、関数が定義されます。 関数が定義された後では、関数を使うことができます。

として関数 menseki が呼び出されると、

の順に行われその結果、横幅が4のときの面積が求まります。

一度loadを行って正しく定義が行われたあとでは、続けて何度も利用することができます。