プログラミングの勉強をする中で関数という仕組みを理解すると効率よくプログラムをつくることができます。今回はその関数について記載したいと思います。
関数とは
一般的にいう関数
さて一般的に関数というと数学で勉強したこんなやつです。
数学の関数とは一定のルールがあって、入力値を入れるとそのルールに従った結果値が出るものですね。関数とはその名の通りなのですが、小学校では関数なんて言葉出てこないですよね。数式と言ってかろうじて伝わるかどうか・・・
このブログは子供向けのプログラミングなので、パパママからみたら当たり前の話なんですが、”関数”って言葉を小学生に伝えてもなんのことになっちゃいますよね。そのため次ではプログラミングにおける関数を具体例を挙げて説明してみたいと思います。
プログラミングにおける関数
プログラミングにおける関数も考え方は同じです。何か値を入力すると答えが帰ってきます。
この入力する値を引数、出てくる値を戻り値といいます。
数学の関数とプログラミングの関数で異なる点といえば
プログラミングにおける関数の場合は、数値だけではなく、文字などの別のものも入れることができます。例えば、ひらがなの「あいうえお」とを入れたら「アイウエオ」と返す関数。奇数を判定するものなら、奇数をいたら真(True)、偶数なら偽(False)を返すものもあったりします。
プログラミング関数の具体例
さて、プログラミングの関数について言葉だけでは難しいので具体例を書いてみます。
これはCord.orgにいい例がありました。Cord.orgについて書いた記事にも同じ内容を書いていますが、ここでも再掲します。
これは、三角形と四角形と六角形を書くプログラムなので実行すると以下のような図形を描くというものです。
しかし、毎回、三角形、四角形、六角形を書くのは大変ですよね。逆に三角形を2個、六角形を1個書いたり、全部四角形でそれが100個かけという場合はとても大変なことになりますよね。
そこで、このプログラムでは図形を書く部分が関数になっています。例えば三角形の関数(araw a triangle)の中身はこのようになっています。ここでLengthが引数。描画される結果が戻り値に該当するものとなります。
これが実践的なプログラム言語など、例えばPythonなどでは、この三角形関数がtriangle( )などとなり、引数100をいれるとtriangle(100)で、一辺が100pixelの三角形が描画される感じになります。
どうでしょう、何となくプログラムにおける関数のイメージがつかめたでしょうか、前にも書きましたがCord.orgはホント良質なコンテンツがそろっています。ドリル型で1つ1つステップアップできる教材なのでほんとおすすめですよ、
いいプログラム言語は関数がそろっている
車輪の再発明
プログラミングの世界では、すでに世の中にあるものを、また再び一から使うのは「車輪の再発明」と言われ愚かな行為とバカにされます。
コンピュータができたのがだいたい第二次世界大戦頃なのでプログラミングというものも、誕生してからもう50~60年以上は経っていることになるでしょうか、その間に先人達は多数の関数を作ってくれています。先人が作った関数は積極的に使い、効率的にプログラムを組んでいこうということです。
でも、勉強のためにはもう一度、車輪をつくってみるのもありですけどね、大学などのプログラミングの授業は、ほんと勉強のためと車輪(基礎的なプログラム)をつくらされます(笑)
プログラミング言語の選択基準の1つは関数にあり
どのプログラム言語を選ぶかという話題をこのブログ内でも何回か書いていると思うのですが、いいプログラム言語は数多くの関数(正確にいうと、関数が多数集まったライブラリ)が揃っているということになります。
例えば、人工知能開発用で最近流行ってきているPythonという言語なのですが、これは記述がシンプルでわかりやすい特徴に合わせ、多くのAI研究者がこの言語を使っていたことで数学や統計分析に特化した関数が数多く作られており、それをまとめたライブラリが多数存在しているということです。
後からプログラムを書く人は、このライブラリを使うことで自ら関数を書かなくても、値を入れてやるだけで、望む結果が帰ってきます。同様に歴史が古くなってきているJavaなども同様に数多くの関数・プラグインがあり開発スピードが向上しています。
まとめ
さて今回は関数について記載しました。これでみなさんはプログラミングの基本である処理(順次・繰返・分岐)、データ構造(変数・配列)、演算子に加え関数までを勉強できました。次回は、二次元配列について書いてみましょうかね。乞うご期待。
コメント