プログラミングに出てくる「関数」って何かな?
こんな疑問にお答えします。
というわけで、本記事の内容は次のとおりです。
- 【本質】プログラミングの「関数」をわかりやすく解説【概念を理解】
結論から言うと、関数とは「入力すると何かしらの処理をして出力してくれるもの」です。
関数がわかっているとわかりやすいプログラムを書けるようになりますし、あらゆるプログラムで使われるほど基本的なことなので関数を理解することは必須です。
そんな関数をエンジニアの私がわかりやすく解説するので最後までご覧くださいm(_ _)m
【本質】プログラミングの「関数」をわかりやすく解説【概念を理解】
繰り返しですが、関数とは「入力すると何かしらの処理をして出力してくれるもの」です。
関数とは?
図にするとこんなイメージで、入力するとなにかしらの処理がされてその結果を出力します。入力はいくつでも構いませんが、(基本的に)出力は1つです。
ここで注意点ですが、プログラミングに登場する関数というのはこの関数の一部ということです。
どういうこと?と思われた方のために他の関数を紹介します。
色々な関数
プログラミングに登場する関数以外の関数には次のようなものがあります。
二次関数や三角関数は数学に登場しますね。伝達関数は制御工学に登場するものです。ExcelのSUM関数は見たことある方も多いのではないでしょうか?
上記は全て〇〇関数と書いてあります。つまり、関数の一部ということです。
「まだピンとこないよ~」という方のために二次関数を例に関数の一部であることを解説しますね。
二次関数とは例えば次のようなものです。
これは入力がxで出力がyという意味なんです。図にするとこんな感じです。
例えば、x = 2の場合を計算してみましょう。x = 2にするというのはこの関数に2を入力するということなんです。そして「何かしらの処理」というのが3x2+2x+1を計算するということです。そしてその計算結果が出力、つまりyのことです。
こんな感じで、先程挙げた例も、プログラミングの関数も全部関数の一部なんです。
これを理解しておくとプログラミングの関数も理解しやすいですよ。
次はいよいよプログラミングの関数について解説しますね。
プログラミングの関数
プログラミングの関数は使用するプログラミング言語によって書き方が変わりますが、考え方は同じです。なので、プログラミング言語を使わずに共通する考え方を解説します。
プログラミングの関数では入力のことを引数、出力のことを戻り値といいます。
(厳密には他にも入力と出力はありますが、わかりやすさ重視のため割愛します。)
そして、プログラミングの関数における「何かしらの処理」は自分で好きなように作れます。
そして、関数はプログラムの中で何度でも呼び出すことができます。
例えば、二次関数を計算する必要がある箇所全てに二次関数の計算式を書くのは面倒ですが、その計算関数を1回作っておけば、それを何度も呼び出すことで手間を省けます。
関数の用途
「じゃあ、プログラミングの関数ってどんなときに使うの?」と思われるかもなので、用途を紹介すると、基本的には次の3つです。
- 長い処理を分割するため
- 役割分担を明確にするため
- 処理を再利用するため
1つずつ解説しますね。
長い処理を分割するため
プログラムが長いとどこに何の処理があるのかわからなくなってしまいます。なので、機能別に処理を分けてわかりやすくします。その一つ一つが関数です。
また、この分け方は基本的に関数1つで1つの機能にします。
役割分担を明確にするため
「この関数はこの処理だけをするよ」と決めておけば、大人数で開発するときに役割分担がしやすいです。
事前に「この関数はこの処理だけをして、それはBさんが開発担当です」とすれば役割分担が簡単ですからね。
あとから、「得点計算の処理はAさんが作ると思ってたから私は作ってないよ」という失敗をなくせます。
処理を再利用するため
繰り返しですが、一度、機能を関数化しておけば、何度でも再利用することができます。
よく使う処理を関数化しておけば、毎回その処理を書かなくてもいいので便利です。
関数を使いこなそう!
以上をおさらいすると次のとおりです。
- 関数とは「入力すると何かしらの処理をして出力してくれるもの」
- 関数には色々な関数がある(二次関数、三角関数、伝達関数など)
- プログラミングの関数は関数の一部
- プログラミングの関数の用途は主に3つ
・長い処理を分割するため
・役割分担を明確にするため
・処理を再利用するため
上記の通りです。
プログラミング言語によって関数の書き方は変わりますが、本質はこれまで説明したとおりです。これがわかっているとどんなプログラミング言語にも対応できるかなと。
ぜひ、関数を使いこなしてプログラミングしてみてください(^_^)/~