はじめに
この記事はプログラミング超初心者向けに小学生にでもわかるように詳細は省いて、あえて正確性を持たせずに書いてあります。
そのため、大学前期のプログラミング入門授業が最近終わり、関数があんまりわからなかったって人にはぴったりな内容かと思いますが、詳しい方が読むと、ムムッ?と思う部分もあるかもしれません。ご容赦ください。
関数を学ぶうえで一番理解が難しい部分は返り値のところだと思いますので、返り値の部分は特に気合を入れて読んでもらえると。
最後の部分でpythonコードが書かれていますが、少しでも他の言語をかじったことが有る人なら絶対に読めるので見てみてください。一部python特有の記述で「def」という記述がありますが、「def」とは関数を定義していることを表しています。
関数って何?引数?戻り値????
皆さん。一旦関数から離れてお昼ごはんについて考えましょう。
皆さんは今日のお昼ごはん何を食べましたか?
私は、冷凍パスタを食べました。
あれって手軽で便利なのにめちゃめちゃ美味しいんですよね。
冷凍されたパスタを取り出し、電子レンジに入れて温めスタート。
温め終わったら、一度ちゃんと温まっているかチェックして、ちゃんと温まっていたらレンジから取り出して、お皿に盛り付けて完成。(あれってまだ凍っていることありません?)
今の流れが、関数を扱う上での一連の流れです。
詳しく見て行きましょう。以下の図を見てください。
電子レンジと関数を照らし合わせると以下の通りになります。
- 冷凍されたパスタ=引数
- 電子レンジ=関数
- 温められたパスタ=返り値
- 温まっているか確認するだけの部分=print文
関数
関数というのは、よく以下のような説明がされます。
「関数とは、決められた処理を行う命令のこと。」
この決められた処理というのは、入力に関わらず、毎回決まった処理をすることを言います。
今回の電子レンジの例であれば、入力が冷凍パスタであろうが、冷凍シュウマイであろうが、前日の残り物であろうが、温めるという処理を必ず行っています。
他にも洗濯機であれば洗濯物が服であろうが、タオルであろうが、洗うという決められた処理を行う関数といえるわけです。
このように、ロボットのように何が起きても同じ処理を繰り返すものを関数といいます。
引数
引数とは、関数への入力のことを言います。
電子レンジは中に冷凍パスタを入れて使います。
この冷凍パスタのことを引数と呼びます。
プログラミングに慣れていないと、入力と言いたくなりますが、頑張って引数と呼ぶことに慣れましょう。
返り値
返り値とは、関数の出力のことを言います。
今回の場合は、温められて電子レンジから取り出されたパスタのことを言います。
通常return文を使うことで取り出します。
return文を使わない場合、取り出しがされないため、温められたまま電子レンジの中に放置されることになってしまいます。
プログラミングに慣れていないと、print文との違いがわからなくなってしまいがちですが、print文は取り出しているわけではありません。
きちんと温まったかどうかを確認しているだけで、電子レンジから取り出しているわけではないので、食べれるわけではないのです。
ですので、関数から取り出して利用したいと思った時は、return文を使いましょう。
使わなくても、見るだけで良ければprint文を使いましょう。
実践的な利用方法
ここで、もう少しプログラミング風に考えていきます。
例えば毎回入力された数字に10を足すという処理を行う関数があるとします。
その関数は5が入力されれば15を出力するし、121が入力されれば131を出力します。
このとき5や121のことを引数と呼び、15や131のことを返り値とよびreturnを使うことで取り出します。
先程の電子レンジの例と照らし合わせるとこんな感じです。
実例をpythonコードで見ていきます。
def plus10(hikisuu):
kaeriti = hikisuu + 10
return kaeriti
a = plus10(5)
b = plus10(121)
#aには15が入ります。
#bには131が入ります。
plus10という関数が5や121を引数として動かされています。
その返り値がaやbという変数に格納されています。
ここで、aやbという変数の役割について説明をしていなかったので、電子レンジの例で見ていきましょう。
皆さん電子レンジから冷凍パスタを取り出したら、そのパスタをお皿に盛り付けますよね?
このaやbはつまりお皿なわけです。
関数の返り値で計算結果を出力したとしても、関数の外の変数(お皿)に格納しなければ使えないわけです。
まとめ
プログラミングを始めたばかりだと、関数は非常に扱いにくく感じるかもしれません。
そのため関数なんか使わなくてもいいやと思うかもしれませんが、関数に慣れるととても便利なものであると気づきます。
今回例で使った、電子レンジや洗濯機も、最初それらを作るのが困難な時代では、温めるという行為を行うだけで鍋にいれて火にかけていましたし、洗濯であれば手洗いでしたが、電子レンジや洗濯機が作れるようになってからは、もうそれらが無い生活なんてありえませんよね。
関数もそれと同じなので、この記事でイメージを持つことができましたら、あとはひたすら関数を使う練習をしてみてください。