情報を入れておくタンス『配列』

以前、「情報を入れておく箱」である『変数』について説明しました。
今回は、「情報を入れておくタンス」のような『配列』を説明します。

このタンスには、好きな数だけの「引き出し」を作成することができます。そして、その引き出しひとつひとつに情報を格納することができます。
変数と同様、配列にも名前をつけて使います。

つまり、変数(情報を入れておく箱)がたくさん集まって、管理しやすくなったものが配列(情報を入れておくタンス)というイメージです。
似た様な複数の情報を扱う場合、複数の変数を用意するよりも、ひとつの配列で管理した方が情報が整理されます。

配列の情報を参照する時は、「タンスの○番目の引き出しの情報」という指定をします。
この「○番目」にあたる部分を『インデックス』とか『添え字』と呼び、いわばタンスの引き出しの位置を指します。

では、どういう時に配列を使えばよいのか。
「20人のクラス全員の名前を扱う」というケースを事例に、同じシーンで変数を使った場合と配列を使った場合で何が異なるのか比べてみましょう。

変数を使った場合

1つの変数には1つの情報しか格納できませんので、20人全員の名前を覚えておくためには20個の変数が必要になります。

変数にはそれぞれ名前をつけますので、「生徒1」「生徒2」「生徒3」…というように「生徒20」までの変数を作れば、20人分の名前の情報を格納できますね。

20人の名前を次々と入力して変数に格納していくプログラムを、Scratchで作ってみましょう。
以下の様なスクリプトになります。


これでは、人数が50人・100人に増えた時、変数を作るのもスクリプトに追加するのもとても面倒です。

配列を使った場合

同じものを配列を使って作ってみましょう。配列は、Scratchでは「リスト」という名前で提供されています。

『データ』カテゴリの「リストを作る」ボタンをクリックし、『生徒』という名前のリストを作成します。
また、「生徒◯の名前は?」というセリフの数字の部分を表示するため、『カウント』という名前の変数を作成します。

そして、スクリプトは以下の通り。


どうでしょうか?変数の時と比べて、すごく短いスクリプトで済みました。

生徒の人数分20回の繰り返しの中で、「聞いて待つ」ブロックで入力した「答え」をリストに1つずつ加えていきます。
リストには先頭から順に、1番目、2番目、3番目、、と格納されます。

このスクリプトであれば、人数を50人・100人に増やす時でも、繰り返し回数を変更するだけで対応できます。

では次に、すでに『生徒』リストに20人分の名前が格納されていて、1人目から順番に名前を呼んであいさつをするスクリプトを見てみましょう。


配列(リスト)は、「現在の引き出しの数」(『要素数』と言います)の情報もかんたんに取得できます。
Scratchでは『データ』カテゴリの「(リスト名)の長さ」というブロックで取得します。

上のスクリプトでは、1番目の情報から順番に名前を取得してあいさつするのですが、繰り返し回数が「リストの要素数分」なので、20人でも50人でも100人でもスクリプトを変更することなく対応することができます。

この様に、配列と繰り返し処理などを組み合わせて使うことで、スクリプトがシンプルになり、情報も管理しやすくなります。

※注:Scratchではリストのインデックスは「1」から始まりますが、多くの一般的なプログラミング言語では配列のインデックスは「0」から始まります。

配列は、最初は少し難しく感じるかも知れませんが、慣れると便利なのでどんどん使っていきましょう。