サブルーチン
サブルーチンの最新ニュースをまとめて検索!
サブルーチン(英: subroutine)は、コンピュータプログラミングにおいて、プログラム中で意味や内容がまとまっている作業をひとつの手続きとしたものである。ソースコード上ではコードブロックを形作る。繰り返し利用されるルーチン作業をモジュールとしてまとめたもので、呼び出す側の「主」となるもの(メインルーチン)と対比して「サブルーチン」と呼ばれる。サブプログラム (subprogram) とも呼ぶ。
プログラムのソース中で、繰り返し現れる作業をサブルーチン化することで、可読性や保守性を高く保つことができる。繰り返し現れる作業でなくても、意味的なまとまりを示すためにサブルーチン化することもある。また、キャッシュのような階層的メモリの設計を持つコンピュータ(現在のパソコンやワークステーションなどほぼすべて)では、よく使われるサブルーチンがキャッシュに格納されることで高速な動作を期待できる。
目次 |
[編集] 分類
サブルーチンを、結果として値を返すものと処理だけを行い値を返さないものに分類することがある。その場合、前者を関数(かんすう)、後者を手続き(てつづき)と呼んで区別する。プログラミング言語の仕様としてCのようにどちらかの呼び方のみを採るものと、Pascalのように両者を区別するものがある。
[編集] 関数
関数(function)が返す値は戻り値(もどりち)または返り値(かえりち)と呼ばれる。functionが関数と訳されるのは、単に機能の実装を行うだけでなく、引数としてとりうる値の集合から、戻り値としてとりうる値の集合への写像のように捉えることができるためである。したがって、ほとんどの命令型プログラミング言語では次の点において数学の関数とは異なる。
ただし、純粋な関数型言語における関数は、状態や副作用などをもたず、数学の関数に近い性質を持つ。
[編集] 各種プログラミング言語におけるサブルーチン
- Excelでの関数は、主に、計算をしたり、データの検索や集計をしたり、表示を変換するものである。合計値を求めるSUM関数や、平均値を求めるAVERAGE関数など、100を超える関数が存在する。
- Cでは、メインルーチン、サブルーチン問わずすべての処理単位は関数を定義する形で記述される。すべての関数は戻り値の型を指定しなければならないため、戻り値が存在しない場合、戻り値がないことを表す特別な型であるvoid型が利用される。
- Pascalでは、関数を記述する場合はfunction、手続きの場合procedureという予約語が用いられる。
- 古典的なBASICでは、サブルーチンを作成したい場合は、ユーザが「この行からこの行まではサブルーチンとする」と決めてプログラムを作成した。BASIC 言語のシステムは、GOSUB 命令を見つけると、GOSUB 命令で指定された行からサブルーチンが始まると解釈して、サブルーチンの最初の行へ制御を移す。この際、システムはサブルーチンを呼び出した GOSUB 命令の位置を記憶しておく。サブルーチンを実行中に RETURN 命令を見つけるとサブルーチンが終了したと解釈して、制御は先ほど記憶しておいた呼び出し元の GOSUB 命令の位置まで戻る。その後、制御は呼び出し元の GOSUB 命令の次の行に書かれた命令へと移る。このようにしてサブルーチンの呼び出しを実行していた。ユーザによる関数の追加、拡張という形でサブルーチンを作成することもできたが、DEFFN命令などごく限られた範囲でしか行えなえなかった。
- Java等、オブジェクト指向プログラミング言語では、メソッド(特定のオブジェクトあるいはクラスに属するサブルーチン)という仕組みを用いる。
- Schemeでは関数ではなくて手続きと呼ばれる。入出力処理など、手続きが値を返すとは限らないからである。なおCommon Lispでは関数と呼ばれる。
- Fortranではサブルーチンはsubroutine、値を返す(即ち式の項になれる)サブプログラムを「関数(function)」として区別している。通常は副作用を持つが、Fotran 90以降ではPURE属性を与えることで副作用を持たないことを明示できる。
[編集] 関連項目
最終更新 2009年6月28日 (日) 22:32 (日時は個人設定で未設定ならばUTC)。
【サブルーチン】変更履歴

