プログラミング学習を始めると、「配列」という言葉に出会います。
「リスト」「名簿」「一覧」という言葉を思い浮かべると分かりやすいかもしれません。
「配列」を使うと、分かりやすく、変更しやすいプログラムになります。
スクラッチの「リスト」を使って、配列がどのようなものか見ていきましょう。
スクラッチのリストとは
スクラッチには「リスト」という機能があります。
リストは「一覧表」「名簿」と訳されますが、その名の通り一覧で「何か」を管理する機能です。
リストの例 | 管理するものの例 |
---|---|
学級名簿 | 学級に在籍する人(の番号や名前等) |
プレイリスト | お気に入りの音楽(のIDや曲名等) |
買い物リスト | 買う商品(の名前と値段等) |
成績表 | 成績(点数) |
プログラミング学習では、「配列」という言葉で出てくるデータ構造の1つです。
プログラミングの「配列」を理解する
スクラッチのリスト機能を使うために、プログラミング学習で出てくる「配列」というデータ構造を理解しましょう。
簡単に言うと、「配列」は「変数」の集まりです。
「”変数”って何?」という方は、先に「【スクラッチでプログラミング】変数機能をマスター!」をチェックしてください。
配列(リスト)を理解するための用語
配列(リスト)を理解するために必要な用語を覚えておきましょう。
- 配列名(リスト名)
- 要素
- データ型(値の種類)
- 要素の数
- 添字
- 値(あたい)
配列名(リスト名)
配列(リスト)の名前です。
後から見ても何が入っているのか判断できるように、「分かりやすい名前」をつけるように心がけましょう。
要素
配列(リスト)は、複数のデータを連続的に並べたデータ構造です。
その各データを「配列の要素」といいます。
つまり、配列の中にある1つ1つの箱そのもののことです。
データ型(値の種類)
配列(リスト)を作るときには、データ型(どのような種類の値を入れるのか)を指定します。
色々な種類のデータを入れることも可能ですが、不具合のもとになります。
慣れない間は種類を決めて使うと良いでしょう。
要素の数
配列を利用する場合は、初めに「要素の数」を指定します。
データを入れる箱がいくつ必要か?を最初に用意するのです。
添字
配列の中の変数1つ1つに割り振られた番号を「添字(そえじ)」といいます。
添字は、「何番目の箱(変数)を指定」するための目印となります。
多くのプログラミング言語で、添字は0から始まります。
1つ目の箱であれば添字は「0」、2つ目の箱であれば添字は「1」です。
値(あたい)
配列の要素の中に入っている「言葉」や「数字」そのものを値(あたい)と言います。
プログラムで最終的に呼び出して使いたいのはこの「値」です。
つまり、「『男の子の名前』というリストの『0』番目の値をください」と指示を出すと、「のび太」という値を呼び出すことができます。
変数と配列(リスト)のどちらを使う?
配列(リスト)は、複数のデータを連続的に並べたデータ構造です。
「値(あたい)を入れる箱」ということでは変数と似ていますが、何が違うのでしょうか?
答えは、変数は入れられる値が1つだけですが、配列(リスト)には複数の値を入れられる、ということです。
次のことを考えて、扱う値の数が1つか複数か決定しましょう。
- どのような値を扱うのか?
- その値はどのような種類があるのか?
- その値は1つに限定できるのか?
1つの場合は変数を使い、複数の場合は配列(リスト)を使います。
配列(リスト)を使うメリット
ここまで何度も「配列(リスト)は、複数のデータを連続的に並べたデータ構造である」と述べてきました。
変数を複数作れば、配列(リスト)と同じように複数の値を入れておくことができるのです。
しかし、特別な理由がない限り、同じ性質の値を複数扱う場合は「配列(リスト)」を使うようにしましょう。
配列(リスト)を使うメリットは次の通りです。
- 同じ性質の変数をたくさん作らなくて良い
- 変更しやすくなる
- 番号で管理しやすくなる
- 処理を順番に行うプログラムが描きやすい
多次元配列~配列には次元がある~
配列には、これまで見てきたような1つの要素だけを扱う1次元配列(普通の配列)と、複数の要素を扱う「多次元配列」があります。
エクセルや表などは、2次元配列です。
キュービックルーブのような形でデータを管理する構造を3次元配列といいます。
「多次元配列」は、2次元、3次元、4次元と次元の数が増えていきますが、基本的な考え方は同じです。
スクラッチのリストを使う
ここからは、Scratch3.0のリスト機能を使って、「配列」を実際に使いましょう。
実際に手を動かすと理解が深まりますので、一緒に作ってみてください。
これまで見てきた「配列」とスクラッチのリストとでは、少し違うところもあります。
違いも理解しながら見ていきましょう。
スクラッチのリストと一般的なプログラミングの配列との違い
スクラッチのリストと一般的なプログラミングの配列では、扱える情報に次の違いがあります。
配列 | スクラッチリスト |
---|---|
配列名 | リスト名 |
要素 | 項目 |
要素数 | 項目数 |
要素数の指定 | – |
添字(0~) | 番号(1~) |
値 | 値 |
※スクラッチのリストでは多次元配列(2次元以上の配列)は扱えません。
リストを定義する(リストのタイプと影響範囲)
リストを使う際、一番最初にリストを定義します。
一般的なプログラミングでは、配列の定義として「影響範囲」「配列名」「データ型」「要素数」を指定する必要があります。
スクラッチのリストで指定するのは、「影響範囲」「リスト名」だけ決めます。
Scratch3.0で使えるリストの影響範囲は次の2種類です。
- このスプライトのみ(ローカルリスト)
- すべてのスプライト用(グローバルリスト)
※クラウドリストはScratch 2.0のα・β版の実験的な機能としては存在しましたが、現在は廃止されています
うまく動かない場合、リストの影響範囲が間違っている可能性もありますので確認しましょう。
このスプライトのみ(ローカルリスト)
ローカルリストは、このスプライトだけが使えるリストです。
他のスプライトから干渉させたくない場合は、ローカルリストにすると良いです。
すべてのスプライト用(グローバルリスト)
グローバルリストは、ステージとすべてのスプライトから使えるリストです。
1つのリストを複数のスプライトで使い回すような場合は、グローバルリストにすると扱いやすいです。
リストに値(あたい)を入れる
リストに値(あたい:データ)を入れる方法は2つあります。
- 値(あたい)を入力する
- コードで追加処理を作る
リストに値(あたい)を入力する
リストに値を入れる方法として、リストに値を入力するやり方があります。
下の図のように、「+」ボタンを押すと項目が増え、長さも増加します。項目に値を入力するとプログラム内で利用することができます。
コードで追加処理を作ってリストに値を入れる
リストに値を入れるために、コードで追加処理を作ることができます。
順番を指定したり作り直したりするのも簡単なので、コードで追加処理を作る方法をおすすめします。
下図のように「番号」と「値」を指定すると、リストに項目が追加されます。
しかし、このコードをもう一度実行すると、リストに同じ値が追加されてしまいます。
コードを実行するたびに同じ結果にするために、下図のように「すべてを削除する」ブロックを使いましょう。
リストに値を入れた後は、値を使ってみましょう。
リストの値を使う
リストの使い道としては次のようなものがあります。
- 値の保存する
- 値を出力する
- 値を使って計算する
- 値を比較する
値を出力する
下図では、「()を()秒言う」ブロックを使ってリストの内容を画面に表示します。リストを1から「リストの項目数」まで回して、「リストの値」を出力するコードです。
「(リスト)の長さ」ブロックが項目数(図では「3」)を、「(リスト)の〇番目」ブロックがリストの項目ごとの値を指定しています。
値を使って計算する
下図では、「テストの点数」リストを使って、合計と平均を計算します。
リストを1から「リストの項目数」まで回して、すべての点数を足します。最後に合計点を項目数で割ると平均を出すことができます。
まとめ:リストはデータをまとめて使いやすくする便利機能
プログラミングの「配列」という考え方とスクラッチの「リスト」機能の使い方について紹介しました。
変数と同じく、「なにか」を管理することができます。同じようなものをまとめて管理することでプログラムも簡易化できます。
使い道もメリットもたくさんありますので、覚えてどんどん活用していきましょう。
リスト機能を使って作れるゲームにも、是非チャレンジしてみてください。