コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

「サブルーチン」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
Melan (会話 | 投稿記録)
関数 (プログラミング) 2007年2月6日 07:19 (UTC) を統合
1行目: 1行目:
[[プログラミング (コンピュータ)|プログラミング]]における'''サブルーチン'''(subroutine)は、意味や内容がまとまっている作業をひとつの手続きとしたもの([[ブロック (プログラミング)|ブロック]])。繰り返し利用される([[ルーチン|ルーチン作業]])[[モジュール]]などを、副次的なルーチンとしてまとめて、呼び出す側の「主」([[エントリーポイント|メインルーチン]])となるものと対比して"サブルーチン"と呼ばれる。
{{記事統合|関数 (プログラミング)|サブルーチン}}

[[プログラミング (コンピュータ)|プログラミング]]における'''サブルーチン''' は、意味や内容がまとまっている作業をひとつの手続きとしたもの([[ブロック (プログラミング)|ブロック]])。繰り返し利用される([[ルーチン|ルーチン作業]])[[モジュール]]などを、副次的なルーチンとしてまとめて、呼び出す側の「主」([[エントリーポイント|メインルーチン]])となるものと対比して"サブルーチン"と呼ばれる。


多くの[[プログラミング言語]]では、[[関数 (プログラミング)|関数]]や[[手続き]]としてこれを実現している。プログラムの[[ソースコード|ソース]]の中で、繰り返し現れる作業をサブルーチン化することで、可読性や保守性を高く保つことができる。繰り返し現れる作業でなくても、意味的なまとまりを示すためにサブルーチン化することもある。また、[[キャッシュメモリ|キャッシュ]]のような階層的メモリの設計を持つ[[コンピュータ]](現在の[[パーソナルコンピュータ|パソコン]]や[[ワークステーション]]などほぼすべて)では、よく使われるサブルーチンがキャッシュに格納されることで高速な動作を期待できる。
多くの[[プログラミング言語]]では、[[関数 (プログラミング)|関数]]や[[手続き]]としてこれを実現している。プログラムの[[ソースコード|ソース]]の中で、繰り返し現れる作業をサブルーチン化することで、可読性や保守性を高く保つことができる。繰り返し現れる作業でなくても、意味的なまとまりを示すためにサブルーチン化することもある。また、[[キャッシュメモリ|キャッシュ]]のような階層的メモリの設計を持つ[[コンピュータ]](現在の[[パーソナルコンピュータ|パソコン]]や[[ワークステーション]]などほぼすべて)では、よく使われるサブルーチンがキャッシュに格納されることで高速な動作を期待できる。
29行目: 27行目:
[[fi:Aliohjelma]]
[[fi:Aliohjelma]]
[[zh:子程序]]
[[zh:子程序]]

----

'''関数'''(かんすう)とは[[サブルーチン]]の一種で、特にある値を[[引数]]として受け取り、その結果たる値を返す性質をもつものを指す。このとき返される値を'''戻り値'''(もどりち)や'''返り値'''(かえりち)のように呼ぶ。

引数としてとりうる値の集合から、戻り値としてとりうる値の集合への[[写像]]のように捉えることができるため関数と呼ばれるが、次の点で数学の[[関数 (数学)|関数]]とは異なる。

* 引数が同じでも状況に応じて戻り値が異なる(状態を持つ)
* 関数の処理の実行によってシステムに変化が発生する(副作用を持つ)
* 戻り値が存在しない場合がある

== 各種[[プログラミング言語]]における関数 ==
* [[Microsoft Excel|Excel]]での関数は、主に、計算をしたり、データの検索や集計をしたり、表示を変換したりする。合計値を求めるSUM関数や、平均値を求めるAVERAGE関数など、100を超える関数が存在する。
* [[C言語|C]]では、メインルーチン、サブルーチン問わずすべての処理単位は関数を定義する形で記述される。すべての関数は戻り値の[[データ型|型]]を指定しなければならないため、戻り値が存在しない場合、戻り値がないことを表す特別な型であるvoid型が利用される。
* [[Pascal]]では、戻り値が存在するサブルーチンだけを関数と呼び、戻り値が存在しないものは手続きと呼ぶ。関数を記述する場合はfunction、手続きの場合procedureという[[予約語]]が用いられる。
* 古典的な[[BASIC]]では、関数は言語仕様に組み込まれたものを利用するだけにとどまり、ユーザによる関数の追加、拡張はDEFFN命令などごく限られた範囲でしか行えない。
* [[Java言語]]等、[[オブジェクト指向プログラミング|オブジェクト指向プログラミング言語]]では関数の仕組みを拡張し、[[メソッド]](特定のオブジェクトあるいは[[クラス (コンピュータ)|クラス]]に属する関数)という仕組みを用いる。
* [[Scheme]]では関数ではなくて手続きと呼ばれる。[[入出力|IO]]処理など、手続きが値を返すとは限らないからである。なお[[Common Lisp]]では関数と呼ばれる。
* 純粋な[[関数型言語]]における関数は、状態や[[副作用 (プログラム)|副作用]]などをもたず、数学の[[関数 (数学)|関数]]に近い性質を持つ。

[[Category:プログラミング|かんすう]]
[[Category:プログラミング言語の構文|かんすう]]

2007年2月16日 (金) 02:08時点における版

プログラミングにおけるサブルーチン(subroutine)は、意味や内容がまとまっている作業をひとつの手続きとしたもの(ブロック)。繰り返し利用される(ルーチン作業モジュールなどを、副次的なルーチンとしてまとめて、呼び出す側の「主」(メインルーチン)となるものと対比して"サブルーチン"と呼ばれる。

多くのプログラミング言語では、関数手続きとしてこれを実現している。プログラムのソースの中で、繰り返し現れる作業をサブルーチン化することで、可読性や保守性を高く保つことができる。繰り返し現れる作業でなくても、意味的なまとまりを示すためにサブルーチン化することもある。また、キャッシュのような階層的メモリの設計を持つコンピュータ(現在のパソコンワークステーションなどほぼすべて)では、よく使われるサブルーチンがキャッシュに格納されることで高速な動作を期待できる。

関連項目


関数(かんすう)とはサブルーチンの一種で、特にある値を引数として受け取り、その結果たる値を返す性質をもつものを指す。このとき返される値を戻り値(もどりち)や返り値(かえりち)のように呼ぶ。

引数としてとりうる値の集合から、戻り値としてとりうる値の集合への写像のように捉えることができるため関数と呼ばれるが、次の点で数学の関数とは異なる。

  • 引数が同じでも状況に応じて戻り値が異なる(状態を持つ)
  • 関数の処理の実行によってシステムに変化が発生する(副作用を持つ)
  • 戻り値が存在しない場合がある

各種プログラミング言語における関数

  • Excelでの関数は、主に、計算をしたり、データの検索や集計をしたり、表示を変換したりする。合計値を求めるSUM関数や、平均値を求めるAVERAGE関数など、100を超える関数が存在する。
  • Cでは、メインルーチン、サブルーチン問わずすべての処理単位は関数を定義する形で記述される。すべての関数は戻り値のを指定しなければならないため、戻り値が存在しない場合、戻り値がないことを表す特別な型であるvoid型が利用される。
  • Pascalでは、戻り値が存在するサブルーチンだけを関数と呼び、戻り値が存在しないものは手続きと呼ぶ。関数を記述する場合はfunction、手続きの場合procedureという予約語が用いられる。
  • 古典的なBASICでは、関数は言語仕様に組み込まれたものを利用するだけにとどまり、ユーザによる関数の追加、拡張はDEFFN命令などごく限られた範囲でしか行えない。
  • Java言語等、オブジェクト指向プログラミング言語では関数の仕組みを拡張し、メソッド(特定のオブジェクトあるいはクラスに属する関数)という仕組みを用いる。
  • Schemeでは関数ではなくて手続きと呼ばれる。IO処理など、手続きが値を返すとは限らないからである。なおCommon Lispでは関数と呼ばれる。
  • 純粋な関数型言語における関数は、状態や副作用などをもたず、数学の関数に近い性質を持つ。