第8講: 関数とは●●●である。(PythonShellちゃん再登場!)

数学講座〜f(x) feat. 函館の女〜で学んだ通り、関数は、ある値を加工して返してくるハコです。
いわば、材料を加工して食品を作る「シェフ」のようなもんです。
次回も話しますが、シェフはうまく使えないと、嫌われます

***

こんにちは。
家にフライパンがない、黒田道哉です。

御存知の通り、
日本は憲法第9条第1項で「戦争の放棄」、
第2項で、「戦力を保持しない」を宣言しています。

 

黒田道哉は、

「自炊の放棄」と
「調理器具を保持しない」を宣言しています。笑

前回、プログラミングを学ぶときは

・記法
・変数
・関数
・構文

を意識して勉強しましょう、とお伝えしました。
最も重要なのは関数でしたね。

 

ちょっと復習:割り算の仕方3パターン

割り算の計算は3種類ありましたね。

・ 17/4
・ 17//4
・ 17%4

は違います、と。

 

 

復習です。
それぞれの違いを覚えていますか?

・ 17/4は、割り切れるまで計算。
・ 17//4は、余りを出す計算の「商」を、
・ 17%4は、余りを出す計算の「余り」を、答えてくれます。

 

あ、ちなみに。
余りって何に使うねん?って思うかもしれませんね。

たとえば、じゃんけんゲームで使ったりします。

コンピュータとジャンケンする時、コンピュータの出す手はどうやって決めるのか?

流石にずっと同じ手じゃダメですし、

違う手でも順番通りだとバレますね。

じゃあどうするか?

適当なランダムの数値(もしくは、ゲーム実施時刻の「秒」とか)を取得して、それを3で割ります。

その余りが…
0→グー
1→チョキ
2→パー

というようにできます。

サザエさんのジャンケンもこういう感じで決めてるんちゃいますかね?笑

以上、
余りだけに…「余」談でした。(これ言いたいだけ〜!)

 

 

 

…気を取り直して。

 

割り算計算のマークは3つしかご紹介しませんでしたが、
割り算の仕方は、実は…もう1つあるんですよ。

 

ただ、計算ではなくて関数なんで、ちょっとご紹介しませんでした。

ではまずは
「プログラミングでいう関数って何?」って話からしましょう。
数学的な話は、お話しした通りです。

 

Q.関数ってなに? A.シェフみたいなもん

関数はシェフと同じです。
シェフを呼んで、材料を渡せば、料理を出してくれます。

 

関数も同じです。

関数を呼んで、材料となるデータ「引数(ひきすう)を渡せば、結果データ「返り値(かえりち)を出してくれます。
※関数を使うことを「関数を呼ぶ」と言います

 

関数を呼んで、
引数(ひきすう)を渡せば、
返り値(かえりち)を出してくれます。

この一文は、音読していただく価値があるので、
今ちょっと、すごく小さい声でも良いので音読していただけますか?

せーのっ

 

 

(関数を呼んで、引数を渡せば、返り値を出してくれます)

 

 

ありがとうございます。笑

そんなやつが関数です。

なんか、これぞプログラムって感じですよね。

 

 

もっと具体的に!

関数は、名前とカッコからできています。

divmod()

みたいな感じです。

それぞれの関数の名前のことを、「関数名」と言います。(そのまま!)

 

関数を本やなんかで表記するときは、
「print関数」とか、「divmod関数」とか、はたまた、
「print()」とか、「divmod()」等と表記します。

 

この関数、カッコのなかには、関数に渡す材料データ変数を入れます。

…材料を入れるんですが!

ここが注意です!

何に注意するかというと、

渡す材料の

個数 (引数の個数)
タイプ (引数の)

に気をつける必要があります。
これは関数ごとに決まっています。

関数ごとに決まっていると言うことは、
その都度、説明書(ドキュメント)を見たり、ググったり、本で勉強したりして使うことになります。

よく使うものは、覚えておくと良いですね。
自然に覚えちゃうのが理想です。

「個数」とか「タイプ」に気をつけるってどゆこと?

「個数」と「タイプ」の注意点も、シェフでたとえてみましょう。

たとえば、オムライスには、

  • ご飯

が必要ですよね。(もっと色々あると思うけど、たとえなんでご容赦ください笑)

なのに

「ご飯しか渡さない!」とか、
「卵だけで作って!」となると、

オムライスができません。

関数も同じで、必要な引数・材料を、必要な個数、渡してあげてください。

 

また、
オムライスは中華料理のシェフに頼んでもダメなわけです。
オムライスが欲しい!といいながら、
中華料理のシェフに、卵とご飯なんか渡したら…

 

天津飯が返ってきますよ。

 

 

…。

 

 

画像5
(滑った!笑)


何が言いたいかって、
シェフに合ったタイプ(型)の引数を渡してあげてくださいってことが言いたいです。

プログラムの場合、
数値を欲しがってるのに、文字列を渡したりしちゃダメですよ、ってことです。

 

こんな風に、渡すものが足りない or 渡すものの種類が違うとなると、
どちらの場合も、プログラムの場合は、動きません。
エラーが返ってきます。

気をつけてくださいね。

 

わかった!使ってみたい!

じゃあ早速、さっき出てきたdivmod()を試してみたいと思います。

divmod()って何するシェフ?ってことなんですけど、

これは、

「あまりのある割り算をして、商と余りをセットで返してくれるシェフ」

です。

※divというのは、devided(割られる)の略で、modというのはmodulo(〜で割る)の略です。高校数学の整数問題で使うmodと同じですね。

 

割り算をするってことは、少なくとも2つの数値が必要なわけですよね?
●÷▲でいう●と▲です。
割る数と、割られる数です。

なので、divmod()の引数は2つあります。

こういう場合は

divmod(●,▲)

というようなカタチで使います。

 

そして、Pythonちゃんからの返事は

(商, 余り)

という風に無愛想に返ってきます。

5余り2なら、(5,2)ですね。

 

では、やってみましょう。
以前で手に入れたChromeブラウザのPythonShellちゃんを開いて、レッツコーディング!

 

適当にdivmod()してみてください!
例えばこんな感じ!

よいですね。

帰ってきた結果の、()の左側が商で、右側が余りということもわかりますね。

 

では、あなたも、いろいろ遊んでみてください。

例えば、割り切れちゃうときってどうなるんやろ?とか、
マイナスの数字入れたらどうなるんやろ?とか、
意地悪なことを考えながら。

(これもちゃんと、バグのないコードを書くのに必要な思考です)

 

飽きたら、シェフに変なものを渡してみましょう。
英単語とか。w

 

まだきちんと説明していない概念があるので、
エラー文の意味はわからないかもしれませんが、そこは気にしなくて大丈夫です。

大事なのは、シェフに変なもの渡したら動かないよってことです。

以上、関数についてでした。

復習です。

Q.関数って何?
A.シェフです。材料を渡せば、完成品を返してくれます。

 

Q.どうやって使うの?
A.名前、カッコ、カッコの中に必要な材料(調べる必要あり)をつっこみます。

divmod(8,3)というように使います。返事は(2,2)です。

 

Q.なぜそんなのが要るの?
A.お!良い質問ですね!次回、しましょう。

第9講: ぶっちゃけ、関数を使えないと...嫌われます。
車輪の再発明(しゃりんのさいはつめい、英: reinventing the wheel)は、車輪を題材にした慣用句であり、世界中で使われている。 「 広く受け入れられ確立されている技術や解決法を知らずに(または意図的に無視して)、同様のもの...

 

 

おまけ1:エンジニアになるための基本用語集

【ソース】
ソースコードの略。
プログラムのこと。

一般的には、情報源のこと。

 

【スパゲッティコード】

コードを理解しようと読んでいると、いつのまにかあっちへ行ったりこっちへ行ったりしてしまうコード。

 

【ハードとソフト】

物理(ハード)と情報(ソフト)のこと。

ゲームでも言いますね。
ゲームキューブがハードで、大乱闘スマッシュブラザーズがソフト。

イメージ的には、
すぐに変更できないものがハードで、いつでも変更可能なものがソフト。

 

 

 

次の講座へ

第9講: ぶっちゃけ、関数を使えないと...嫌われます。
車輪の再発明(しゃりんのさいはつめい、英: reinventing the wheel)は、車輪を題材にした慣用句であり、世界中で使われている。 「 広く受け入れられ確立されている技術や解決法を知らずに(または意図的に無視して)、同様のもの...