プログラミングに少し慣れてくると、関数(かんすう)とかサブルーチンっていう、ちょっとむずかしそうな言葉が出てきます。
スクラッチ(Scratch)では「ブロック定義」という機能がそれにあたります。
でも、はじめて聞くと
- えっ、なんでそんなことするの?
- ブロックを作らなくても動くのに?
と、思うかもしれません。
実は「関数」や「サブルーチン」は、プログラムをもっと分かりやすく、もっと使いやすくするための、とても便利な仕組みなんです。
これから、スクラッチを使いながら「関数やサブルーチンってなに?」「どうやって使うの?」を、いっしょに見ていきましょう。
関数・サブルーチンとは
関数やサブルーチンは、よく使う命令をまとめて名前をつけた、「何回でも使える部品」のようなものです。
たとえば、スクラッチでキャラクターを「動かす→回す→音を鳴らす」といった動きをよく使うとします。
そのたびに毎回同じブロックを並べるのは大変ですよね。
そこで、「ダンス」という名前のブロックを自分で作っておけば、
そのブロックをつなげる(呼び出す)だけで、中の動きをぜんぶまとめて実行してくれるようになります。
このように、何度も使う処理をひとまとめにしておくと、とても便利です。
引数と戻り値
関数の中には、引数(ひきすう)と戻り値(もどりち)という、少しむずかしい言葉も出てきます。
- 引数:入力するもの
→ 「ジャンプの高さ」や「回る角度」など、関数にわたす情報のことです。 - 戻り値:結果として返ってくるもの
→ たとえば、計算して答えを返すときなどに使います。
値が返ってこない命令のまとまりをサブルーチンと呼び、関数と区別されます。
たとえば、ツルの折り方を知っている人に「折り紙でツルを作って」とお願いするとします。
その人は折り紙を受け取り、ツルを折ってくれます。
このとき、
- ツルの折り方を知っている人 → 関数
- 「折り紙でツルを作って」という指示 → 関数の呼び出し
- 材料である折り紙 → 引数
- 完成したツル → 戻り値
にあたります。
そして、色や大きさのちがう折り紙をわたせば、ちがう色や大きさのツルができます。
関数も同じで、引数がちがうと結果(戻り値)も変わることがあります。
スクラッチのブロック定義の使い方
ここでは、スクラッチ(Scratch)のブロック定義の使い方を説明します。
ブロックを作る → 中身を作る → 呼び出す、という3つのステップで見ていきましょう。
ブロックを作る
1.ブロック定義のカテゴリにある「ブロックを作る」をクリック
2.必要な情報を入力し、「OK」をクリック
- ブロック名
ブロックの名前です。
何をするブロックなのか分かりやすい名前をつけましょう。
- 引数を追加
テキストまたは数値、真偽値のデータ型を追加できます。
今の処理に引数が必要だったら、追加しましょう。
- ラベルのテキストを追加
ブロックの名前のあとに、説明の文字列をつけられます。
例:スコアを(ブロック名) ○○(引数) だけふやす(ラベル)
これで、ブロックが何をするのかがもっと分かりやすくなります。
- 再描画せずに実行する
チェックを入れると、ブロックを実行している間の動く様子を表示せず、最後の結果だけすぐに表示します。そのぶん動きが速くなります。
キャラクターの動きを見せたいときは、チェックを外しておきましょう。
3.ブロックができました
ブロックの中身を作る
次に、ブロックの中でどんな動きをするかを作っていきます。
ふつうにプログラミングする時と同じように、定義ブロックの下に命令ブロックを組み合わせていきます。
引数を使う場合は、引数をドラッグアンドドロップで移動させます。
ブロックを呼び出す
中身を作ったら、いよいよそのブロックを使ってみましょう。
作ったオリジナルブロックは、ブロックカテゴリーに新しく追加されています。
あとは、そのブロックをコードエリアにドラッグしてつなげるだけです。
引数の場所には、使いたい値(数字や変数など)を入れましょう。
これで、一度作った動きをいろいろな場所で何回でも使えるようになります。
数字を入力すると、その段の九九を言うプログラムができました。
関数・サブルーチンを使うメリット
ネコとイヌのスプライトで、2つのプログラムを作りました。
どちらも大きさのちがう正方形を2つかくプログラムで、位置がちがうだけで やっていることは同じです。
プログラムの内容が分かりやすくなる
ネコとイヌのプログラム、どちらが見やすかったでしょうか?
イヌの方は、ひとつひとつの命令を追わないと、何をしているのか分かりづらいですね。
でも、ネコの方は「四角をかく」という名前のブロックを使っているので、
見ただけで「四角形を2つかくプログラムなんだな」と分かります。
あとで見直したときも、「このブロックは何をするのか」がひと目で分かるので、
整理された、読みやすいプログラムになります。
同じプログラムを何度も作らなくていい
関数やサブルーチンを使えば、同じ動きを何度も書く必要がありません。
そのぶん、プログラムがすっきりして見やすくなります。
さらに、修正もしやすいというメリットもあります。
たとえば、四角形ではなく六角形に変えたいとき、くり返しの回数と回す角度を変更する必要があります。
ネコのプログラムなら、ブロックの中を2か所だけ直せばOK。
でも、イヌのように同じ処理を何度も書いていると、4か所すべて直さなければなりません。
このように、ブロックをまとめて名前をつけておくことで、プログラムの見た目がスッキリし、まちがいやエラーも減らせます。
まとめ
関数やサブルーチンは、命令をまとめていつでも使えるようにしたものです。
よく使う命令をまとめて名前をつけておくことで、同じ動きを何度でもかんたんに呼び出せます。
関数やサブルーチンを使うと、プログラムがすっきり見やすくなり、修正も楽ちんです。
最初は少しむずかしく感じるかもしれませんが、「関数」を使いこなせるようになれば、プログラムがもっとかっこよく、きれいになりますよ。
少しずつで大丈夫。一歩ずつ、自分のペースで学んでいきましょう。











