
プログラミングをはじめると、変数、配列、制御構文、演算子、など聞きなれない言葉が続いて頭がパンク状態になりますよね。
それでも、プログラミングを続けていると不思議と言葉の意味の理解が進んでいくようになってきます。
そしてプログラムの流れを左右する制御構文を学び終えると、「関数」というなにやら数学を感じさせる言葉が出てきます。
ここは、言葉の表記に惑わされることなくどんどん理解を進めたいところです。
自分で数式を使えるようにならないといけないのかな?
というように思っていませんか?
プログラミングができる人は、
という声も聞こえてきます。
確かに、関数は中身を知らなくても使うことはできます。
初めからプログラミング言語が用意している関数は、使い方をマスターすればよいのです。
しかし、関数は自分でも定義することができます。
自分で関数が定義できるようになると、プログラミングをしているという実感がどんどん湧いてくるようになります。
いっしょに学んでいきましょう!
今回は、関数の便利さを見た目でわかるように、ビジュアル言語であるscratchを使って解説していきます。
まずは、関数の仕組みについて学びます。それから、使用するメリットを確認しておきます。
その次に、関数に機能を持たせ、機能を引き出すための引数についてみていきます。
そして最後に、関数の便利さを実感するために引数を使って複雑な図形を描いてみます。
この記事を読めば、
関数についての理解が図を追って段階的に理解できるようになります。
目次
関数とは?
関数は、複数の命令文を1つにまとめる仕組みです。
この表現が理解できるように、以下に関数ってなに?を説明していきます。
関数の仕組みを理解する
プログラムの関数は、訓練して身に付けた才能のつまった箱と考えると良いかもしれません。
たとえば、料理の才能がある人には、ジャガイモ、ニンジン、たまねぎ、お肉を渡したら美味しい料理を提供してくれることでしょう。
絵の才能がある芸術家に紙とペンを渡せば、すばらしいスケッチを書いてくれることでしょう。
同じ材料でも別の関数を用意したら、肉じゃがも作ることができるのかー
関数を使うメリット
関数は、複数行のプログラムの命令文で構成されています。
関数を活用するときに、毎回複数行の命令文を書くと面倒になります。
関数を何度も使うのであれば、自分で定義して再利用することを考えるべきです。
このように考えることで次のメリットが生まれます。
-
- 関数を定義し、1つにまとめるとコードが読みやすくなる
-
- プログラムを再利用するために部品化できる
-
- 関数をブロックとしてまとめるとメンテナンスしやすくなる
-
- コードが読みやすくなる結果、エラーが少なくなる
-
- 関数の中身がわからなくても、プログラムに簡単に利用できる
関数に使われる引数(ひきすう)とは?
ここからは、Scratchのブロックを使用して、関数はもちろんのこと引数についても理解していきます。
まず、Scratchで星を描いてみます。
星を描くプログラムは次のようになります。
1.緑のハタを押す(Scratchには緑のハタのボタンが用意されています)
2.ペンの色を選択し、ペンを下ろす
3.ペンを右側に150歩動かす(星の大きさを決める)
4.動かした後に進行方向を144度回す(星に必要な角度)
5.3と4の工程を5回繰り返す
6.ペンを上げる
以上で、星を描くことができます。
Scratchは言葉で処理を書き出すのと同じように、ブロックを並べるだけでプログラムを組むことができます。
関数を導入
星を描くプログラム(関数名を星とする)を関数として定義しました。
星という関数が1つのまとまったプログラムになりました。
上図のプログラムは、緑のハタを押したときに、星を3つ描くプログラムになります。
もし、星という関数を定義していなければ、何度も同じ命令文を書くことになります。
関数を定義することで、簡単に星を3つ描くことができます。
引数とは?仮引数と実引数
関数を定義して、便利になったけれど・・・
星の大きさって変えられないのかな?と思う人もいると思います。
今回は、星の大きさを変える場合に引数を使います。
引数とは、関数を定義する際に“ある材料を受け取る仕組み”です。
定義した星の関数に ”一辺の長さ” という仮りの引数を設定しました。これを仮引数といいます。
実際に関数を使う場合は、大きさの数値を入力します。これを実引数といいます。
プログラムでは、仮引数を “一辺の長さ” と設定
実引数は、それぞれ “150” と “100” と “50” に設定して星の関数を利用しています。
関数を利用した複雑な図形
最後に、関数を利用すると複雑な図形が簡単に描けることを紹介します。
次の図形は、繰り返しの回数を増やしただけで、ブロックの追加は行っていません。
かなり複雑な図形が描けます。しかし、プログラム自体は、3回の繰り返しと変数の大きさを変える2つのブロックのみを追加した図形。
別の処理に使われる関数の戻り値とは?
関数には、引数という仕組みのほかに「戻り値」という仕組みがあります。
関数で作られた戻り値を別の処理で使うことができます。
コードを書くプログラミング言語では多用する仕組みなので、ここでは概念を説明しておきます。
たとえば、カレーパンを作りたいと思ったら、
- パン生地を練る
- パンの具となるカレーを用意
- パンを焼く
という工程の順になります。
パン生地を練り、パンの具となるカレーは関数を用意してカレーという「戻り値」を得ます。
この得られた「戻り値」を、カレーパンで使う変数に置き換えます。
カレーパンで使う変数:戻り値(カレー)
カレーパンを作る工程で、「戻り値」であるカレーを使います。
このように、「戻り値」は別の処理で利用することができる仕組みになります。

まとめ
今回はScratchというビジュアル言語で、関数と引数について理解を深めました。
プログラミングの実用書は、難しい言葉で書かれていてなかなか理解が進まない場合があります。
そんなときは、Scratchなどのビジュアル言語の本を確認すると理解を助けてくれることが多々あります。
Scratchは小学生や中学生が学ぶものと自分で決めつけず、使えるものは積極的に使っていきましょう。