入力と出力の関係・・
数学やプログラミングの分野で登場する関数(Function)という語は、元々は「函数(ファンスウ)」で、入力と出力の間にある「函(はこ)」、つまり入力と出力の関係を記述したものと言えます。数学における関数も、プログラミングにおける関数も、基本的な考え方は共通しています。
例えば、
私たちの身の回りには様々な現象がありますが、入力(原因)と出力(結果)の間にある仕組みの多くは ブラックボックスになっているので、その仕組みを解き明かしましょう・・というのが「関数」の関心ごとです。数学の場合は、それを数式モデルとして記述する、プログラミングの場合は、処理プロセスを効率よく記述する・・というのが「関数の記述」です。
関数は「ある入力に対して、一つの出力を定める対応関係」と定義されます。
入力 x、出力 y の関係は、2次元の xy座標上のグラフで曲線(直線を含む)として視覚的に表現することが可能で、同様に 入力 x, y 、出力 z の関係は、3次元の座標上に曲面(平面を含む)として視覚的に表現することが可能ですが、変数がそれ以上の数になると、視覚的表現はできなくなります。現実の世界で生じる現象には、複数の要因(入力 x1, x2, x3, ・・)があるので、視覚的には表せないものが多いのですが、関数式の記述に関しては、いくらでも拡張可能です。
受験勉強で扱う、一次関数、二次関数、三角関数、指数関数、対数関数などは、いずれもグラフとして可視化可能な範囲のものに限られている・・、つまり、現象の一部を扱っているにすぎません。「交わる点を求めよ」のような特殊な話は後回しにして、まずは関数というものを俯瞰で捉えることをおすすめします。
ソフトウエア開発の世界では プログラム ≒ 関数 です。あらゆるプログラムは「何らかの入力に対して、一定の処理を行なって、結果を出力する」という形で、記述されます。プログラミング言語には、あらかじめ用意されている組み込み関数(例:文字列の長さを返す関数、数値を丸める関数など)と、プログラマーが自分で定義するユーザー定義関数があります。
例えば、Pythonで2つの数を足し算する関数は以下のように定義できます。
def add(a, b): result = a + b return result # 関数の呼び出し sum_result = add(5, 3) print(sum_result) # 出力: 8
この例では、add という名前の関数が定義されていて、a と b という2つの引数を受け取り、それらを足した結果を return 文で返しています。