つきすけ の コーディング記

細かいところで嫌にならないように、小さいことでも解説していくブログ。たまに関係ないことも書く。

【第三回】(関数)0からプログラミングについて勉強する

だんだん嫌な言葉になってきた。
それでいて、今までの自分が回りくどいんじゃないかと思い始めた。
万人にわかりやすいなんて難しい。

忙しい人向け

※これでわかれば以下はすっ飛ばしてよし。

関数

y = ax + b 

を覚えているか?
一次関数だ。
先に a と b が決まっていると、

y = 3x + 3

みたいな式になるな。

数学における関数と意味は同じ。
「かかわる数、、、」
上記の場合、y を導くには、a と b (今回はどちらも3)が関わっている。
この式こそ関数。

「値を指定すれば、一つの答えを出すもの」
これが関数。

x = 2
3x + 3
# 答えは? 「9」

ただ、あえて関数という言葉を使うには意味がある。
上記の 3x + 3 も、x = 2 に限らずいろいろ使いまわせる。
つまりプログラミング上では、関数は定義して使いまわすもの、という意味合いがある。
この書き方は相当言語による。面倒だ。

【ある計算をする関数です】(x 待機中)
  3x + 3

# さっきの関数を呼び出す。

【ある計算をする関数】(3 をあげます)
#「9」という答えを出してくれる。

引数というもの

さきほど(x 待機中)という風に書いた。
こんな風に、待っていることに対する言葉が、引数。

この場合、【ある計算をする関数】は、数値を引数にとる。

という。
x は数値でなければならないから、こういう表現になる。
なんでこんな呼び方をするかというと、引数は増殖するから。
第一引数、第二引数、、、などと言って指定したりするから。

以上




※余力がある人は最後の章も覗いてみて欲しい。



のんびり進めたい人向け

ゆっくり行こう。

関数

嫌な言葉? それとも好き?
もし嫌いなら、これまでの感情と考えを全部忘れて、新たに覚えたい。
細かい定義をすっ飛ばして言うならば、関数は、
【使いまわせるプログラム】
のこと。

もし関数の概念をすでに知っているなら困惑するかもしれないのでスキップ。
これからの人は聞いてほしい。
よく教本で書かれている。
関数とは「プログラムを使いまわせるようにしたもの」
個人的にこの表現が良いのかはちょっとわからない。

にんじんを輪切りにしてくれ。
輪切の仕方はこうやるんだ。

と命令してみた。

で、今度は、

きゅうりを輪切りにしてくれ。
輪切りの仕方はこうやるんだ。

と言う。
※この際これらを輪切りというかは放っておいてくれ。

あなたは気づいたか?
輪切りの仕方を、二度も教えていることに!

と言うことで、輪切り関数を書いた。
輪切りの仕方はここに書いてある。

にんじんを輪切りにして。やり方はこの関数に書いてあるから。

きゅうり輪切りにして。やり方はこの関数に書いてあるから。

うん。これで伝わりやすい人と伝わりづらい人、どちらもいる気がしてならない。

ちょっと具体的に

やはりこの辺まで来ると、言語によりますーって話が増えてしまう。だから本当に根本的な話。

値段を教えてくれたら、10%引きした値を計算する関、
を作ったとします。

長いので短く命名します。
こうしましょう。

「10パー引き関数」

「10パー引き関数」を使って、500円の割引計算をしてください。
「10パー引き関数」を使って、800円の割引計算をしてください。

さて、ここで必要なのは?
関数を作ると言うこと!
10パー引き関数って呼んでいるが、まずはその中身が必要。

「10パー引き関数」とは
〇〇円与えられたら、
〇〇÷10 を、〇〇から引く

なお、これを「関数を定義する」というが、嫌悪感があるなら覚えなくて良い。

とりあえず、これが関数というもの。
伝わったかがとても不安。

引数とかいうもの

言い換えが思いつかなかった。関数には引数というものがつきものだ。
輪切りには指定の野菜がなければ始まらない。そういうことだ。

関数に輪切りをお願いしたところで、野菜を与えないことには何もしてくれない。
なので、野菜を与える前提を、一緒に教えておく。

「輪切関数さん。“野菜を指定するので”輪切りにして欲しい」

言い回しに語弊があると苦しいので、少し難しいがこのまま進むと、

二つの数字を足し算して欲しい時、二つの数字を教えないことには始まらない。なので、事前に関数の「数字二つ渡しまーす!」と言っておく。

残念ながらこの書き方もさまざまなのだが、超一般化したのがこれ。

関数の名前(値1、値2)
 値1と値2の足し算をしてください

余力がある人へ

abcという名前の関数を定義する。これは、三つの数字を掛け算してくれる関数である。
引数に数値を3つ取る。以下は関数の中身である。

abc(a, b, c)
a*b*c

わかった?
苦しい。



推敲前