超初心者に解説するプログラミング用語!「パラメータ」と「引数」の違いも”炊飯器”で簡単理解! ー 『JavaScriptでやる1分間プログラミング』メモ
「関数=炊飯器」が分かればすぐ頭に入ります!
前回は「関数」や「変数」についてメモ解説しました。
変数は単なる「データの入れ物」、関数は「処理や機能の入れ物」。お米で例えるなら変数は「米びつ」(ただ米を入れておくだけの入れ物)なのに対して、関数は「炊飯器」(米を入れると炊いてくれる)ということでした。
文字列の頭文字を大文字にする関数の例
関数に関連してよく混乱する用語は「引数(ひきすう)」と「パラメータ」です。今回はこれを詳しく解説します。前回と同様、「炊飯器」をイメージすればすぐに理解できます。
では炊飯器を関数で表現してみよう!
「関数は炊飯器だ!」というなら、実際に関数で書いてみます。
function Suihan () {
//・・・米を炊くコード・・・
}
そう、このSuihan(炊飯)という関数でコメが炊けるとイメージしてください。でもこれで本当にご飯が炊ける?そもそもご飯を炊くときは「お米」と「水」を入れますよね。関数にもそれを入れないといけません。そこで、関数名、Suihanの後の括弧の中に炊飯器に入れる材料を指定します。
function Suihan (kome、water) {
//・・・米を炊くコード・・・
}
でもちょっと考えてください。炊飯器では「五目御飯」とかもできますよね。その時は米だけでなく人参やゴボウなどの材料と、水以外にも醤油やみりんも入れます。komeやwaterのような固定した変数にしてしまうと混ぜご飯とかパエリヤなどができなくなります。そこで、白いご飯も五目御飯も炊けるようにするにはこうします。
function Suihan (solid, liquid) {
//・・・米を炊くコード・・・
}
solid(ソリッド)は「固形材料」、liquid(リキッド)は「液体材料」とします。こうすると、
【白いご飯の時】
● solid = kome
● liquid = water
【五目御飯の時】
● solid = kome, ninjin, gobo, etc.
● liquid = water, shoyu, milin, etc.
具体的なコードだとこうなります。
//白いご飯を炊くとき
let kokei_zairyo = "kome"
let ekitai_zairyo = "water"
let SHIRO = Suihan (kokei_zairyo, ekitai_zairyo)
//五目御飯を炊くとき
let kokei_zairyo = "kome, ninjin, gobo, konnyaku"
let ekitai_zairyo = "water, shoyu, mirin, sake"
let GOMOKUN = Suihan (kokei_zairyo, ekitai_zairyo)
//炊飯をする関数の定義
function Suihan (solid, liquid) {
//・・・米を炊くコード・・・
}
Suihan関数をこうやってどんなタイプの材料でも入れられるようにデザインする(これを”汎用化”と言います)と、白米、五目御飯、チャーハン、パエリヤ、チャーシューなど、いろんな料理に使いまわすことができます。実際の炊飯器もいろんなものが調理できるので、それと全く同じです!
パラメータとは
さて、このSuihan関数で、関数の中に入れるものとしてsolidとliquidという変数を用意しましたが、これが「パラメータ」と呼ばれるものです。関数の定義で関数に渡すものがある場合、それをパラメータとして指定します。
引数とは
それに対して、関数を呼び出す時にkokei_zairyo(固形材料)とekitai_zairyo(液体材料)という変数を作って、そこに米とか醤油とかを指定しましたよね。そしてこれらをSuihan関数に渡しました。これが引数(英語でargument:アーギュメント)と言います。
別な言葉で言うと、パラメータは関数で「指定してやるもの」であるのに対し、引数は関数に「渡してやるもの」と考えてください。次の二つの説明方法を見ると違いがわかると思います。
「Suihan関数にはsolidとliquidという2つのパラメータがある」
「白いご飯を作るには、kokei_zairyoに"kome"を入れ、それを引数としてSuihan関数に渡してやる」
この二つの違いが分からないと大変なことになるかというとそうではありません。「関数にぶち込むもの」という点では同じようなものです。ただ、用語上では区別され、コードを説明する時にも使い分けるので、追々慣れてくればよいでしょう。
パラメータのない関数ってどんな意味があるの?
関数は何かを実行したり処理したりする入れ物ですが、何も引数として渡してやらなくても何かをやるということはあります。例えばこんな関数。
function showCurrentTime () {
・・・今の時間を取得する・・・
}
これはshowCurrentTime(今の時間を表示する)という処理をする関数。現時間を表示するなら別に何か指定してやることはないですよね。関数の中で画面上でどう表示するかを指定してやればよいだけです。
もちろん、表示方法がいくつかあって、それを選択できるようにするには次のようにパラメータを指定してやらないといけません。
function showCurrentTime (DisplayLocation) {
・・・今の時間を取得する・・・
}
DisplayLocation(表示の場所)というパラメータに、"OnScreen"(画面上)、"Console"(コンソール)、"Alert"(ポップアップメッセージ)など、いくつかの選択肢を指定してやればよいのです。
料理がらみでパラメータのない処理というのはなかなかないようです。常に材料や時間、量など何かを指定してやるのが普通です。まあ、あえて言えば「ごちそうさまと言う」関数でしょうか。
function sayGochisouSama () {
・・・ごちそうさまと言う処理・・・
}
これならただ言うだけなのでパラメータは要らないと思います。
この記事が気に入ったらサポートをしてみませんか?