サブルーチン
出典: フリー百科事典『ウィキペディア(Wikipedia)』
サブルーチン(subroutine) は、コンピュータープログラミングにおいて、意味や内容がまとまっている作業をひとつの手続きとしたものである。ソースコード上ではコードブロックを形作る。繰り返し利用されるルーチン作業をモジュールとしてまとめたもので、呼び出す側の「主」となるもの(メインルーチン)と対比して「サブルーチン」と呼ばれる。
プログラムのソース中で、繰り返し現れる作業をサブルーチン化することで、可読性や保守性を高く保つことができる。繰り返し現れる作業でなくても、意味的なまとまりを示すためにサブルーチン化することもある。また、キャッシュのような階層的メモリの設計を持つコンピュータ(現在のパソコンやワークステーションなどほぼすべて)では、よく使われるサブルーチンがキャッシュに格納されることで高速な動作を期待できる。
目次 |
[編集] 分類
サブルーチンを、結果として値を返すもののと処理だけを行い値を返さないものに分類することがある。その場合、前者を関数(かんすう)、後者を手続き(てつづき)と呼んで区別する。プログラミング言語においてはどちらかの呼び方のみを採るものが多いが、Pascalのように両者を区別するものもある。
[編集] 関数
関数が返す値は戻り値(もどりち)または返り値(かえりち)と呼ばれる。関数と呼ばれるのは、引数としてとりうる値の集合から、戻り値としてとりうる値の集合への写像のように捉えることができるためだが、次の点で数学の関数とは異なる。
しかし、純粋な関数型言語における関数は、状態や副作用などをもたず、数学の関数に近い性質を持つ。
[編集] 各種プログラミング言語におけるサブルーチン
- Excelでの関数は、主に、計算をしたり、データの検索や集計をしたり、表示を変換するものである。合計値を求めるSUM関数や、平均値を求めるAVERAGE関数など、100を超える関数が存在する。
- Cでは、メインルーチン、サブルーチン問わずすべての処理単位は関数を定義する形で記述される。すべての関数は戻り値の型を指定しなければならないため、戻り値が存在しない場合、戻り値がないことを表す特別な型であるvoid型が利用される。
- Pascalでは、関数を記述する場合はfunction、手続きの場合procedureという予約語が用いられる。
- 古典的なBASICでは、関数は言語仕様に組み込まれたものを利用するだけにとどまり、ユーザによる関数の追加、拡張はDEFFN命令などごく限られた範囲でしか行えない。
- Java等、オブジェクト指向プログラミング言語では、メソッド(特定のオブジェクトあるいはクラスに属するサブルーチン)という仕組みを用いる。
- Schemeでは関数ではなくて手続きと呼ばれる。入出力処理など、手続きが値を返すとは限らないからである。なおCommon Lispでは関数と呼ばれる。