next up previous contents index
: 章末の問題 : Risa/Asir 入門 : デバッガ   目次   索引

関数の定義

Risa/Asir ではいくつかの処理を関数としてひとまとめにすることが できる. 関数は

      def  関数名() {
         関数の中でやる処理
      }

なる形式で定義する. これは関数名にその手続きを登録しているだけで実際の実行を させるには以下のように入力する必要がある.

関数名();

たとえば $b$, $c$ に数をセットすると2 次方程式 $ x^2 + b x + c = 0 $ の解の近似値を求めるプログラムは次のようにして関数として まとめるとよい. なおプログラム中で $b$, $c$ は変数 B, C に対応している. @i は虚数単位 $\sqrt{-1} = i $ である.

def quad() {
  B = 1.0; C=3.0;
  D = B^2-4*C;
  if (D >= 0) {
     DQ = deval(D^(1/2));
     print([ -B/2+DQ/2, -B/2-DQ/2]);
  }else {
     DQ = deval((-D)^(1/2));
     print([ -B/2+@i*DQ/2, -B/2-@i*DQ/2]);
  }
}
quad();

上のプログラムで 変数 B, C の値をいちいち変更するのは面倒である. そのような時には B, C を関数の引数とするとよい.

def quad2(B,C) {
  D = B^2-4*C;
  if (D >= 0) {
     DQ = deval(D^(1/2));
     print([ -B/2+DQ/2, -B/2-DQ/2]);
  }else {
     DQ = deval((-D)^(1/2));
     print([ -B/2+@i*DQ/2, -B/2-@i*DQ/2]);
  }
}
quad2(1.0,3.0);
quad2(2.0,5.0);
quad2(3.0,1.2);

B, C を関数 quad2 の引数 (argument) とよぶ. たとえば, quad2(1.0,3.0); を実行すると, 変数 B に 1.0, 変数 C に 3.0 が代入されて, 関数 quad2 が実行される. 上の例の場合には $b=1.0$, $c=3.0$ および $b=2.0$, $c=5.0$ および $b=3.0$, $c=1.2$ の 3通りの 2 次方程式を解いていることになる.

プログラミングにはいろいろと格言があるが, その一つは,

困難は分割せよ.

である. 関数をもちいることにより, 処理をさまざまなグループに分解して 見通しよく処理することが可能となる. 関数については, 第 8 章でくわしく説明する.



Nobuki Takayama 平成15年9月12日