サブルーチンの効果 Edit

サブルーチンを使う事で断片的なプログラムを書くことができる。
効果

  • 同じような処理をサブルーチンにすることで、プログラムが短くなる。
  • プログラムをブロックごとに見通すことでバグの発見に役立つ
  • 汎用化されたサブルーチンは、他のプログラムで再利用できる。

サブルーチンの種類
手続き型 と 関数型 の2種類がある。
 手続き型  返り値がない
 関数型   返り値がある

何か値を返す処理には、関数型を使う。

手続き型サブルーチン Edit

 手続き型サブルーチン(Procedure)は以下のように書きます。
PROCEDURE サブルーチン名(パラメータ変数変数の型;パラメータ変数変数の型
...)
VAR
  変数宣言;
BEGIN
  文;
END;

例 指定した回数の警告音を鳴らすサブルーチン
PROCEDURE DoBeep(count:INTEGER);
VAR
  i:INTEGER;
BEGIN
  FOR i:=1 TO count DO
    Sysbeep;
END;

サブルーチンの呼び出し方] Edit

メインプログラムの中でこのサブルーチンを呼び出す時は、
サブルーチン名とパラメータを書きます。
サブルーチン名(パラメータ);


DoBeep(3);
サブルーチンの名前が間違っていたり、パラメータの数や変数の型が合っていないとエラーになります。
悪い例
 DuBeep(3); サブルーチンの名前が違う
 DoBeep(2,4); パラメータの数が多い
 DoBeep('Hellp'); 変数の型が違う

[ローカル変数とパラメータのないサブルーチンEdit

サブプログラム内の変数を使わないときは、変数宣言を省略できる。
また、パラメータが無い場合も省略できます。

例 変数とパラメータを使わないサブルーチン

PROCEDURE DoBeep;
BEGIN
   SysBeep;
END;

[複数のパラメータを持つサブルーチンEdit

パラメータの数が複数ある場合は、セミコロン(;)で区切った後に連続して書きます。

PROCEDURE Compare(value1:REAL;value2:REAL);
BEGIN
   IF value1=value2 THEN
     SysBeep
END;

変数の型が同じ場合に限り、カンマ(,)で区切ってひとくくりにできる。

PROCEDURE Compare(value1,value2:REAL);
BEGIN
   IF value1=value2 THEN
     SysBeep
END;

[値を返すパラメータ] Edit

パラメータで渡した変数の値をサブルーチン内で変更し、戻させる為には
パラメータの前に 「VAR」を書きます。

(サブルーチン1)
PROCEDURE Sub(value:REAL);
BEGIN
  value:=100;
END;

(サブルーチン2)
PROCEDURE Sub(VAR value:REAL);
BEGIN
  value:=100;
END;

このサブルーチン1と2の違いは、パラメータ「value」をVAR宣言してるかどうかだけです。
実際にメインプログラムでサブルーチンを呼び出すと、以下のような結果になります。

(サブルーチン1の場合)
BEGIN
  x:=0;
  Sub(x);
END;

このプログラムを実行すると、xの値は0のままです。
VAR宣言していないので、サブルーチン内でパラメータ変数を変更しても、呼び出し側(メインプログラム)の変数は変わりません。

(サブルーチン2の場合)
BEGIN
  x:=0;
  Sub(x);
END;

このプログラムを実行すると、xの値は100に変わります。
VAR宣言しているので、呼び出し側(メインプログラム)の変数が変わります。


リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS