「関数 (プログラミング)」の版間の差分

削除された内容 追加された内容
m サブルーチン との統合提案
 
1行目:
{{記事統合|#REDIRECT [[サブルーチン|サブルーチン}}]]
 
'''関数'''(かんすう)とは[[サブルーチン]]の一種で、特にある値を[[引数]]として受け取り、その結果たる値を返す性質をもつものを指す。このとき返される値を'''戻り値'''(もどりち)や'''返り値'''(かえりち)のように呼ぶ。
 
引数としてとりうる値の集合から、戻り値としてとりうる値の集合への[[写像]]のように捉えることができるため関数と呼ばれるが、次の点で数学の[[関数 (数学)|関数]]とは異なる。
 
* 引数が同じでも状況に応じて戻り値が異なる(状態を持つ)
* 関数の処理の実行によってシステムに変化が発生する(副作用を持つ)
* 戻り値が存在しない場合がある
 
== 各種[[プログラミング言語]]における関数 ==
* [[Microsoft Excel|Excel]]での関数は、主に、計算をしたり、データの検索や集計をしたり、表示を変換したりする。合計値を求めるSUM関数や、平均値を求めるAVERAGE関数など、100を超える関数が存在する。
* [[C言語|C]]では、メインルーチン、サブルーチン問わずすべての処理単位は関数を定義する形で記述される。すべての関数は戻り値の[[データ型|型]]を指定しなければならないため、戻り値が存在しない場合、戻り値がないことを表す特別な型であるvoid型が利用される。
* [[Pascal]]では、戻り値が存在するサブルーチンだけを関数と呼び、戻り値が存在しないものは手続きと呼ぶ。関数を記述する場合はfunction、手続きの場合procedureという[[予約語]]が用いられる。
* 古典的な[[BASIC]]では、関数は言語仕様に組み込まれたものを利用するだけにとどまり、ユーザによる関数の追加、拡張はDEFFN命令などごく限られた範囲でしか行えない。
* [[Java言語]]等、[[オブジェクト指向プログラミング|オブジェクト指向プログラミング言語]]では関数の仕組みを拡張し、[[メソッド]](特定のオブジェクトあるいは[[クラス (コンピュータ)|クラス]]に属する関数)という仕組みを用いる。
* [[Scheme]]では関数ではなくて手続きと呼ばれる。[[入出力|IO]]処理など、手続きが値を返すとは限らないからである。なお[[Common Lisp]]では関数と呼ばれる。
* 純粋な[[関数型言語]]における関数は、状態や[[副作用 (プログラム)|副作用]]などをもたず、数学の[[関数 (数学)|関数]]に近い性質を持つ。
 
[[Category:プログラミング|かんすう]]
[[Category:プログラミング言語の構文|かんすう]]
 
[[bs:Podrutina]]
[[cs:Funkce (programování)]]
[[da:Funktion (programmering)]]
[[de:Funktion (Programmierung)]]
[[en:Subroutine]]
[[es:Subrutina]]
[[et:Funktsioon (programmeerimine)]]
[[fa:زیرروال]]
[[fi:Aliohjelma]]
[[fr:Fonction (informatique)]]
[[he:פונקציה (תכנות)]]
[[is:Undirforrit]]
[[it:Funzione (informatica)]]
[[nl:Subprogramma]]
[[pl:Podprogram]]
[[pt:Subrotina]]
[[ru:Функция (программирование)]]
[[sv:Subrutin]]
[[uk:Підпрограма]]
[[vi:Chương trình con]]
[[zh:子程序]]