どうも、コウイチです。
今回は、プログラミングにおける「関数」の、「引数」について見ていきます。
関数とは?(復習)
初めに関数の復習をしておきましょう。
前回までは、「関数」や「戻り値」についての基本的な概念をお伝えしました。
まだ読んでいなかった方はこちら↓
関数とは、トンネルのようなイメージで考えるとわかりやすいですね。
ある関数というトンネルには、何かの処理のまとまりが入っていて、それらの処理が終わると、処理結果としてある値が返される。
つまり、関数とは、ある処理のまとまりに名前を付け、その関数の実行命令が来たら実行し、結果を返す仕組みのこと
でした。
結果が返されたら、その結果を「戻り値(返り値)」と言いましたね。
前回も書きましたが、戻り値は、ないこともあります。
やりたいことによっては、関数の中で何かの処理がなされた後、結果が必要ないこともあるのです。
結果を返すように設計された関数では、何か返す必要がありますが、結果がいらないような場合は、結果を返さない関数を設計することもあるわけです。
これはまあ、頭の片隅に入れておいてください。
「引数(パラメータ)」とは
今回の記事では、引数とは何か、について、見ていきます。
ここまでは、引数がない場合の関数の説明をしてきたんですね。
もう一度イメージ図を出しますが、
これを見て、どうすれば関数がもっと便利なものになるでしょうか。
カンの良い方なら気づいたかもしれません。
この図、結果が出ていくだけですよね。入ってくるものがないのです。
分かりやすく、例を出しましょう。
前回の記事で使った例を再度使いますと
関数Aの中で何かごにょごにょと処理が行われると、15という結果が返されるというものでした。
が、毎回15という固定の値が返されますよね?
「わざわざ関数Aとか作っても、あんま意味なくね?」という違和感はここにあると思います。
確かに、関数Aの中で膨大な量の計算処理とかを行っている場合は、それらの処理をまとめて関数として名前を付けることは、プログラムがすっきりしますし良いことです。
しかし、何かが物足りないのです。
15という結果が出ていくだけだからですね。
それでは、出ていくだけではなくて、ある結果を作るための材料となる、入ってくるものを加えたらどうなるでしょうか。
それが次の図です。
引数というものを関数Bに入れると、戻り値という結果が返ってくる。
これが、関数の本来の姿です。
この「入ってくるもの」を「引数」といいます。
「引数」を「いんすう」と読むと恥ずかしい (´・ω・`)
「引数」って、なんて読みますか?
実は僕も昔、間違えてました。「引数」は、「ひきすう」と読みます。
読み方って、間違って慣れると修正が難しいですから、今のうちに修正しておきましょう^^;
一応、”いんすう” でも間違いではないらしい(?)が、”いんすう” と読む人には会ったことがないのでやめた方がよいでしょう笑
数学の因数は “いんすう” と読みますから、それと区別するためらしいですよ。
何かの数を倍にして返す関数B
それでは、これから新しく、関数Bを作ってみます。
入ってきた引数に対して何かの処理を行い、結果を戻り値として返す関数です。
関数B{
1、引数として入ってきた数 × 2 を計算する。
2、計算した結果を返す。
}
さてこれで、
- 1を入れたら2が出てくる。
- 2を入れたら4が出てくる。
- 100を入れたら200が出てくる。
そんな関数Bが出来上がりました。
関数って便利だと思いません?
自販機に100円入れてボタンを押したらオレンジジュースが出てくるみたいな感じで、オレンジジュースが飲みたい僕らは別に、自動販売機の内部構造がどうなっているかとか、知らなくても良いわけです。
英語を日本語に翻訳したいときは、翻訳をしてくれる関数さえあれば、英語を引数として渡すと、自動的に日本語に翻訳し、戻り値として翻訳結果を返してくれます。
英語を入れれば日本語が出てくる。英語が全く分からなくたって、関数の使い方さえ分かっていればいいわけです。
まとめ
引数と戻り値、この両方があってこそ、関数の威力を発揮していきます。
引数を使うと、関数をより再利用しやすくなるのもイメージできるかと思います。
関数という仕組みがなければ、同じような処理をいたるところに書いて、後からその処理を修正しなければならなくなった時にも、あちこちのプログラムを同じように修正することになります。
そうならないためにも、同じような処理は関数として一つ定義し、引数として渡す値を変えて色々なところから呼び出す(実行する)ことで、メンテナンス性の高いプログラムになることも、覚えておいてください。
ではまた。
コメント
コウイチさん初めまして!記事を読ませて頂き、大きく躓いていた関数に対して少し理解を深めることができた感じが致しました。フリーランスを目標に最近プログラミングの勉強を始めましたが、全くの未経験なので何が分からないのかすら分からないといった事が多々ありますが毎日頭をスパークさせながらパソコンに噛り付いています(笑)
私は元々文系なせいか、疑問に持つ必要もない個所に対しても何故?が浮かんでしまい、要領が悪い学習になってしまっているのではないかと少々不安になっています。
コウイチさんにもプログラミングを始めた当初は少なからず壁があったと思いますが、どのような学習方法を心掛けていましたでしょうか?突然こんな質問をして申し訳ないのですが、もし失礼でなければアドバイス頂けると幸いです。
スノーマンさん
こんにちは、初めまして!
記事を読んでいただきありがとうございます。
フリーランス目指されているのですね!
「何故?」と疑問を持つのは、プログラミングを理解する上でとても大事な事だと思いますし、僕も同じタイプです。
僕がプログラミングを始めたのは学生時代で、当時作りたかったホームページを作るために、プログラミングを学びました。
作りたいものが先にあって、
それを「どうすれば実現できるか?」
を考えて、プログラムを組んでいました。
なので僕は未だに、作りたいものや、作らなければならないものがない限り、プログラミングの勉強をしていません笑
それらの知識が必要になった段階で、勉強しているという感じです。
この英語の文章がどうしても読みたいから、辞書を片手になんとか読んでみる、というような。
こうしていくと、いつの間にか知識も経験もついていきました。
プログラミングを始めた最初のころは、理解にも時間がかかるし、なかなか上達が感じられないことがあるものです。
もどかしい気持ちになるかもしれません。
そういう時は、まずは簡単に作れそうで、作ってみたいもの(例えばJavaScriptで自分オリジナルの電卓を作ったり)から始めて、
是非、「プログラミングによって、作りたかったものが形になっていく感じ」の楽しさを味わってください。
いつの間にか、プログラミング初心者を卒業しているはずです。
とても勉強になりました!ありがとうございます!これからも頑張ってください。