削除された内容 追加された内容
Melan (会話 | 投稿記録)
関数 (プログラミング) 2007年2月6日 07:19 (UTC) を統合
1行目:
[[プログラミング (コンピュータ)|プログラミング]]における'''サブルーチン''' (subroutine)は、意味や内容がまとまっている作業をひとつの手続きとしたもの([[ブロック (プログラミング)|ブロック]])。繰り返し利用される([[ルーチン|ルーチン作業]])[[モジュール]]などを、副次的なルーチンとしてまとめて、呼び出す側の「主」([[エントリーポイント|メインルーチン]])となるものと対比して"サブルーチン"と呼ばれる。
{{記事統合|関数 (プログラミング)|サブルーチン}}
 
[[プログラミング (コンピュータ)|プログラミング]]における'''サブルーチン''' は、意味や内容がまとまっている作業をひとつの手続きとしたもの([[ブロック (プログラミング)|ブロック]])。繰り返し利用される([[ルーチン|ルーチン作業]])[[モジュール]]などを、副次的なルーチンとしてまとめて、呼び出す側の「主」([[エントリーポイント|メインルーチン]])となるものと対比して"サブルーチン"と呼ばれる。
 
多くの[[プログラミング言語]]では、[[関数 (プログラミング)|関数]]や[[手続き]]としてこれを実現している。プログラムの[[ソースコード|ソース]]の中で、繰り返し現れる作業をサブルーチン化することで、可読性や保守性を高く保つことができる。繰り返し現れる作業でなくても、意味的なまとまりを示すためにサブルーチン化することもある。また、[[キャッシュメモリ|キャッシュ]]のような階層的メモリの設計を持つ[[コンピュータ]](現在の[[パーソナルコンピュータ|パソコン]]や[[ワークステーション]]などほぼすべて)では、よく使われるサブルーチンがキャッシュに格納されることで高速な動作を期待できる。
29 ⟶ 27行目:
[[fi:Aliohjelma]]
[[zh:子程序]]
 
----
 
'''関数'''(かんすう)とは[[サブルーチン]]の一種で、特にある値を[[引数]]として受け取り、その結果たる値を返す性質をもつものを指す。このとき返される値を'''戻り値'''(もどりち)や'''返り値'''(かえりち)のように呼ぶ。
 
引数としてとりうる値の集合から、戻り値としてとりうる値の集合への[[写像]]のように捉えることができるため関数と呼ばれるが、次の点で数学の[[関数 (数学)|関数]]とは異なる。
 
* 引数が同じでも状況に応じて戻り値が異なる(状態を持つ)
* 関数の処理の実行によってシステムに変化が発生する(副作用を持つ)
* 戻り値が存在しない場合がある
 
== 各種[[プログラミング言語]]における関数 ==
* [[Microsoft Excel|Excel]]での関数は、主に、計算をしたり、データの検索や集計をしたり、表示を変換したりする。合計値を求めるSUM関数や、平均値を求めるAVERAGE関数など、100を超える関数が存在する。
* [[C言語|C]]では、メインルーチン、サブルーチン問わずすべての処理単位は関数を定義する形で記述される。すべての関数は戻り値の[[データ型|型]]を指定しなければならないため、戻り値が存在しない場合、戻り値がないことを表す特別な型であるvoid型が利用される。
* [[Pascal]]では、戻り値が存在するサブルーチンだけを関数と呼び、戻り値が存在しないものは手続きと呼ぶ。関数を記述する場合はfunction、手続きの場合procedureという[[予約語]]が用いられる。
* 古典的な[[BASIC]]では、関数は言語仕様に組み込まれたものを利用するだけにとどまり、ユーザによる関数の追加、拡張はDEFFN命令などごく限られた範囲でしか行えない。
* [[Java言語]]等、[[オブジェクト指向プログラミング|オブジェクト指向プログラミング言語]]では関数の仕組みを拡張し、[[メソッド]](特定のオブジェクトあるいは[[クラス (コンピュータ)|クラス]]に属する関数)という仕組みを用いる。
* [[Scheme]]では関数ではなくて手続きと呼ばれる。[[入出力|IO]]処理など、手続きが値を返すとは限らないからである。なお[[Common Lisp]]では関数と呼ばれる。
* 純粋な[[関数型言語]]における関数は、状態や[[副作用 (プログラム)|副作用]]などをもたず、数学の[[関数 (数学)|関数]]に近い性質を持つ。
 
[[Category:プログラミング|かんすう]]
[[Category:プログラミング言語の構文|かんすう]]