今回やること
こんにちは!
今回はプログラムの効率を爆増させる「関数」について解説します!
関数を使いこなせると、コーディングの量の削減や、プログラミングの真髄にも近づくことができます!
では早速参りましょう1
※関数の書き方は言語で差異があります。今回はProcessingでの解説になります。
今回のポイント
今回のポイントは以下の4つです!
- 引数
- 戻り値 (返り値)
- 関数の作り方
- 関数の使い方
関数は奥が深いです!
まずは基礎から固めていきましょう!
関数とは?
関数とは?
関数と言われたらまず、中学や高校の数学でいう、一次関数や二次関数、三角関数などを思い浮かべる人がいると思います。
関数 f(x)は、xの値が1つに決まると、f(x)の値も1つに決まる。といったような関係でした。
プログラミングにおける関数も、上記と似たようなはたらきをします。
ある値を入れると、その値に応じた結果が返ってくるイメージです。
ある値をどのように処理するかは、プログラマーが自由に決めることができます。
また、プログラミング言語としてあらかじめ用意されている関数も多々あります。
関数を使うと何がいいの?
関数は何度も繰り返し使うことができます。
関数は決まった処理をする処理群なので、言い換えると、
「決まった処理を何度も繰り返し実行できる」ということです。
これが関数を使う最大のメリットです。
具体的な使い方は後述します!
関数は今までにも使っていた
実はすでに関数はバリバリ無意識に使っていました。
以下はプログラミングの初心者解説のpart3で扱ったコードの一部です。
//* ドラ○もんの描写
TAKEのIT風万記 */
//画面サイズ
size(500,500);
//顔パーツ
ellipse(250,250,300,300);
ellipse(250,275,250,250);
今まで何気なく使っていた、size()や、ellipse()などがまさに関数です。
size()は画面のサイズを変える。といった処理をする関数
ellipse()は円を描く。といった処理をする関数です。
line()や、print() なども全て関数です。
「関数」と新たに聞くと難しそうに感じますが、実は今まで関数を沢山使っていました。
関数は、特定の処理をしてくれるんだなぁというイメージを持っておけばOKです!
引数と戻り値の概要
引数
関数を使う上で、必要になってくるのが「引数」という考え方です。
引数とは、数学のf(x)でいうxにあたります。
つまり、引数とは、関数に渡す値のことです。
そして、関数の引数の個数制限はありません。(0〜)
なので、沢山の引数を渡して、複雑な処理を関数にしてもらう。
といった使い方もできます。
後ほど具体例を見てみましょう!
戻り値
戻り値とは、関数の結果として戻ってくる値のことです。
関数に引数を渡すと、返ってくる値とも言えます。
例えば、f(x)= x+y にx = 2, y = 3 という引数を渡すと、
関数の結果として 5 が戻ってきますね。
このような戻ってきた関数の処理の結果を戻り値と言います。
そして、関数の戻り値は基本的に0か1つです。
※複数の戻り値に対応している言語もある(python等)
なお、戻り値が0個の関数とは、
結果を返さず処理して終わり。という関数のことです。
また、戻り値や返り値、といった呼び方がありますが、戻り値の方が通例です。
引数と戻り値のイメージ
改めて整理します。
メインプログラムから関数に値を渡すのが引数
関数から戻ってくる結果が戻り値です。
関数の作り方
基本形
関数の基本的な形は以下の形です。
戻り値の型 関数名(引数1の型 引数1, 引数2の型 引数2, ...){
//任意の処理
return 戻り値
}
具体的な関数だと以下のようなものです。
戻り値の型: int
関数名:sum
引数1:a
引数2:b
引数3:c
処理:a+b+c
その他の関数の形
引数なし
引数なしで関数を作ることもできます。
戻り値の型 関数名(){
//任意の処理
return 戻り値
}
引数を無しにする場合は少なく、この関数もあまり意味のない関数になっています。
戻り値なし
戻り値を使わない場合は、戻り値の型を「void」にします。
void 関数名(引数1の型 引数1, 引数2の型 引数2, ...){
//任意の処理
}
voidとする場合はreturn文を入れたり、戻り値があるかのように扱うとエラーになります。
実は void setup(){} の部分も関数です。
これはProcessingが用意した、プログラム開始時に、draw関数よりも前に一度だけ実行される。という関数です。
今ならvoidや()の意味などもわかりますね。
関数の使い方
関数の呼び出し
関数を使って処理を実行させることを、関数を呼び出す。と言ったりします。
関数を呼び出すには、以下のようにします。
//戻り値あり。引数あり
戻り値 = 関数名(引数1, 引数2, ...);
//戻り値あり。引数なし
戻り値 = 関数名();
//戻り値なし。引数あり
関数名(引数1, ...);
//戻り値なし。引数なし
関数名()
具体的には、以下のようにします。
戻り値での例と同じものです。
左側:3行目、戻り値あり、引数ありの関数呼び出し
右側:4行目、戻り値なし、引数ありの関数呼び出し
節々に現れるprintln()や、ellipse()なども関数呼び出しの形をしています。
関数を使う最大のメリット
ここまで、関数の作り方や使い方を解説しました。
しかし、ここまでの説明だけでは関数を使いこなせるようにはなりません。
関数を使う最大のメリットは、「同じような処理を何度も繰り返し実行できる」ことでした。
以下に関数を使わない場合と、関数を使った場合のコードを提示します。
どちらも結果は同じです。
基準点から一定の間隔で円を4つ描く。
という処理を4回行っています。
関数を使わない場合、同じような処理を繰り返し実行するときは、どのようにしても煩雑になってしまいます。
対して関数を使った場合、すっきりした見た目になり、処理も柔軟に追加したりできそうです。
このように、同じ処理を繰り返し行いたい場合は、関数を使うことで
コード量の削減や、コード自体の可読性も上がります!
まとめ
今回はプログラミングの真髄でもある「関数」について説明しました。
無意識に使っていた関数を理解できたことで、今自分が何についてプログラムを書いているのか。や、
幅広いコーディングができるようになりました。
今回のポイントのまとめです!
お疲れ様でした!
これで少し規模の大きいプログラムも書けるようになりましたね!
Take it easy!
お疲れ様でした!