
[Q & A] 関数の定義?引数?呼び出し? 呪文みたいなもの?
投稿日: 2017年12月25日
コードモンキーサポートデスクに寄せられたユーザーからのご質問およびコードモンキーサポートデスクからの回答を紹介しております。
今回寄せられたご質問は、関数の定義とその使い方について。
関数って何?定義?呼び出し?わかりません。。。
いつもコードモンキーをご利用いただきありがとうございます。
いただいたご質問につき回答いたします。
関数というのは、プログラミングにおけるとても大切な道具です。何行にも及ぶ複雑なコードも、そのコードを関数として定義しておけば、あとはわずか1行のコードで関数を呼び出すだけで、その複雑なコードを何回でも実行できるようになります。そういう意味で、関数というのは呪文のようなもの、と思ってもよいかもしれません。つまり、「関数を定義する」とは「呪文が唱えられたときに何が起きるかを決める」ことで、「関数を呼び出す」とは「呪文を唱える」こと、関数とはそういうものだと考えるとわかりやすい方もいらっしゃるかもしれません。
関数を理解するための例として、チャレンジNo.95で”iku”というオリジナルの関数を定義して、それを実行(呼び出し)してみましょう。
チャレンジNo.95は、上の画像のように、複数のマッチを集めてマッチの山(pile)に持っていくステージになっています。
まずは、”iku”という関数を使わずにコードを書いてみると、たとえば以下のようなコードですべてのマッチを集めることができます。
#"iku"という関数(呪文)を使わないコード for m in matches until near m turnTo m step 1 grab() until near pile turnTo pile step 1 drop()
次に、”iku”という関数を定義してそれを呼び出すというコードでマッチを集めてみましょう。以下のように書くことができます。(星2つになりますが今回はきにしないでください)
# ここで"iku"という関数を定義 # "iku"という関数が呼び出されたときに # 実行される内容をここで決める iku = (yobidashinotokinishiteisaretabasyo) -> until near yobidashinotokinishiteisaretabasyo turnTo yobidashinotokinishiteisaretabasyo step 1 #ここまでが関数の定義 #この内容がikuが呼び出された時に実行される # マッチを集めるためのコード for m in matches iku m # m(マッチ)を行きたい場所として指定して関数ikuを呼び出し grab() iku pile # pileを行きたい場所として指定して関数ikuを呼び出し drop()
上のコードで、”iku”という関数を以下のように定義しました。
iku = (yobidashinotokinishiteisaretabasyo) -> until near yobidashinotokinishiteisaretabasyo turnTo yobidashinotokinishiteisaretabasyo step 1
つまり、”iku”という関数が呼び出されたときには、指定された場所(yobidashinotokinishiteisaretabasyo)に近づくまで “turnTo yobidashinotokinishiteisaretabasyo”と”step 1″を繰り返す関数として定義しました。(ちなみに、この”yobidashinotokinishiteisaretabasyo”を引数(ひきすう)と呼びます。関数と同じく、引数にも自分の好きな名前をつけられます。コードの冒険チャレンジNo.78など参照)
ここで関数”iku”定義したことによって、あとは行きたい場所を引数として指定して”iku xxxxx(行きたい場所)”というコードで呼び出しを行えば、ここで定義したコードが実行されることになります。以下のように。
for m in matches iku m # m(マッチ)を行きたい場所として指定して関数ikuを呼び出し grab() iku pile # pileを行きたい場所として指定して関数ikuを呼び出し drop()
以上が、関数の定義とその呼び出しの説明となります。
今回は例として”iku”という関数を作成してみましたが、いかがでしたでしょうか?最初に、関数とは呪文のようなもので、関数の定義とは、呪文が唱えられたときに起きることを決めること、関数の呼び出しとは、呪文を呼び出すこと、という考え方を紹介しましたが、ご納得いただけましたでしょうか?
また不明点などありましたらお気軽にお問い合わせください。
引き続きコードモンキーをお楽しみくださいませ。
コードモンキーサポート