こんにちは、ナナです。
プログラミングの世界には「配列」と呼ばれるものがあります。配列を使うことで情報をまとめて扱うことができます。
そのため、本格的なプログラムの中には、たくさんの「配列」が登場するのです。
この記事では、次のことを学習できます。
では、makecodeを使った、配列の扱い方を学んでいきましょう。
プログラムで使う「配列」って何なの?
師範!今日のテーマは「配列」というものですね。初めて知る言葉です。いったい「配列」っていったい何なのでしょうか?
そうだね。「配列」という言葉はプログラミングの世界ではよく使われますが、プログラミングをしたことがない人は聞いたことがないかもしれません。
「配列」というもの自体は難しくはないんですよ。
まずは「変数」をおさらいしよう!
みなさん、ここまで「変数」というものをたくさん使ってきましたね。
「変数」とは、このように数を覚えておくための箱のことでした。
変数を連続で並べたものを「配列」と呼ぶ!
「配列」とは「変数」をいくつも並べたもののことを言います。
このように”連続”で並んだ変数のことを「配列」と呼ぶのです。
「配列」をプログラムで使ってみよう!
師範!「変数」が並ぶと「配列」というものに呼び名が変わるんですね。この「配列」というのはブロックではどのように作るのでしょうか?
実は「配列」というブロックは存在しません。「変数」ブロックを使うことで「配列」を作り出します。
では「配列」をブロックを使って作ってみましょう。
「変数」ブロックを使った「配列」の作り方
それでは「変数」ブロックをまずは作成しましょう。
変数の名前は好きに決められますが、今回は「連続で並んだ変数」としておきましょう!
「高度なブロック」の中にある配列ブロック一覧の中の「配列要素の設定」ブロックを選択します。
ブロックの変数を次のように、作成した変数名の「連続で並んだ変数」に変更しましょう。
配列の中に設定したい数値を「10」「20」「30」「40」「50」として設定しましょう。「-」「+」を選択することで、配列として並べる変数の個数を変更することができます。
「配列」の個数はいくつでも増やすことができますよ!
このブロックを「最初だけ」ブロックに合わせて、プログラムが動き出したときに配列に数値を設定できるようにしておきましょう。
これで「配列」としての数字の並びが作成できました。次のような配列を作ったことになります。
「配列要素数」と「配列インデックス」とは
少し難しい用語かもしれませんが、「配列」を扱うときの用語を3つ覚えましょう!
配列として用意した箱の個数のことを、プログラミング用語で「配列要素数」と呼びます。また、配列としての1つの箱のことを「配列要素」と呼びます。
この「配列要素」の中に数値が保存されているわけですが、プログラムから数値を読み書きするためには「配列インデックス」と呼ばれる番号を利用して行います。
注意するのは「配列インデックス」の番号は「0」から始まる連番になっていることです。
今回の例では「配列要素数」は「5個」。「配列インデックス」の番号は「0~4」の範囲で指定できることになります。
配列インデックスの最後の番号は「4」であることに注意が必要ですよ!
「配列インデックス」を使って「配列」を使ってみよう!
師範!「配列」の「配列要素」や「配列インデックス」の意味はわかりましたが、これがプログラムとどんな関係性があるのですか?
「配列インデックス」を使うと、番号を使って配列要素に順番に読み書きができるんだよ。これが「配列」の便利さだね。
それでは実際に「配列インデックス」を使って、配列の中の数字を取り出してみましょう!
「配列の長さ」ブロックと「配列番号の値取得」ブロックの使い方
配列を使うプログラムでよく登場するのがこの2つのブロックです。
「配列番号の値取得」ブロックは、配列インデックスの番号で指定した『配列要素の値』を取得するためのブロックです。
そして、「配列の長さ」ブロックは、『配列要素数』を調べるためのブロックです。
これらのブロックは配列を使う時によく使いますよ。配列番号は「0」から始まることに注意です。「2」という番号は3個目の配列要素ですよ!
「配列の長さ」と「配列番号の値取得」ブロックのプログラミング
「配列番号の値取得」ブロックでは、配列インデックスを指定することで数を取得できます。
この番号は「0」から始まる番号のため、「カウンター付き繰り返し」ブロックと組み合わせると力を発揮します。
それでは、配列の中の数字を順番にLEDに表示するプログラムを作ってみましょう。
このプログラムを動かすと、LEDに「10」~「50」の数字が順番に表示されます。
注意するのは「カウンター」変数の繰り返す範囲ですね。配列インデックスは「0」~「4」の範囲で指定する必要があります。
「配列の長さ」は「5」のため、繰り返し範囲を「配列の長さ-1」をすることでループカウンターの値を「0」~「4」として範囲を合わせています。
プログラムの動作は図で示すと、次のように配列の数値を取り出しています。
「配列要素数-1」をすることで、配列インデックスの最後の番号を作っています。これはプログラミングの世界ではよく使われるテクニックなんです。
質問コーナー:配列で気になること
「配列」に関する質問をしてもいいよ!
質問:配列インデックスの番号を間違えてしまった場合はどうなるの?
師範!「配列」の配列インデックスには、指定できる範囲があるんですよね。もしも、間違えて配列インデックスに「5」を指定してしまった場合、どうなっちゃうんですか?
「配列」を使う時には、このように範囲外となる配列インデックスの番号を指定してはいけません。
範囲外の配列インデックスの番号を指定して、LEDに数を表示すると「Not a Number(数値ではない)」という意味の「NaN」と表示されます。
「配列の」範囲外を読み書きすることを「配列のオーバーラン」と呼びます。
必ず、配列インデックスの最後は「配列要素数-1」までとなるようにプログラミングする必要があります。
「配列のオーバーラン」はプログラミングのミスでよくやってしまう問題の1つなんです。気を付けましょう!
やってみようコーナー:配列を使ったプログラミングの巻
それじゃあ「配列」ブロックを使ったプログラムを作ってみようね!
修行その1:「配列」ブロックを使ったプログラム
みんな、やったわ。プログラムを使うとこんなこともできるのね。
いろいろなメロディを「配列」の中に入れておけば、いつでも音楽を出せそうだわ。
このように「音」の情報を配列でまとめて管理することができるんです。これが配列の便利さなんですよ。