2024年11月21日

008-1.EV3ソフトウェア入門-第4回「配列の使い方1」

新シリーズのレゴマインドストームである「教育用レゴマインドストームEV3」を使ったプログラミング環境「EV3ソフトウェア」について紹介していきたいと思います。(文/松原拓也)

◆ 配列操作ブロックとは

「EV3ソフトウェア」は「NXTとEV3の両方で動くプログラム」を作ることができます(いくつかの制約がありますが)。この連載の1~3回目ではNXTとEV3共通のプログラムを作って、動作を比較してきたのですが、さずがにもうネタが尽きてきましたので、今回からはEV3でしかできない機能について紹介したいと思います。
EV3にしかできない機能の1つに「配列(はいれつ)」があります。配列というのは、図のように「列になっている値」のことです。配列には要素といって値を入れる場所が分かれています。この要素を指定する値が「インデックス(添え字)」です。
ちなみにインデックスは「0番」から始まります。「1番」からではありません。インデックスを使えば、「2番の値」とか「4番の値」という感じに番号で値を読んだり書き込んだりすることができるようになります。

配列を使うには、この「配列操作」ブロックを使います。

繰り返しになりますが、NXTを接続しているときには、配列操作ブロックは使うことができません。残念ながらEV3専用です。

まずは、小規模なプログラムから、少しずつ使い慣れていきましょう。
最初に作ってみたプログラムがこちらです(array1.ev3)。配列のインデックス0番に「0」を書き込んで、それを読み込んで、画面に表示するだけのプログラムです。
書き込み用と読み込み用、2種類の配列操作ブロックをデータワイヤでつないでいます。いつもよりデータワイヤが太くなっていると思いますが、これは配列の中身を伝えるためのデータワイヤだからです。

プログラムを実行すると、画面には「0」が表示されました。
まず1つめのブロックでは、配列のインデックス0番目に0を書き込みます。続いて2つのブロックでは、その中身を読み取って画面に表示しています。 その結果「0」が表示されたわけです。
このように要素数が1つだけだと、複雑になっただけであまり意味がありません。配列のすごさを発揮するのは、要素数が増えたときです。 次ページで複数の要素を扱ってみましょう。

◆ 要素数3の配列

今度は配列の要素を増やしてみましょう。
「配列入力」の部分をクリックして、さらに「+」のボタンを押すと、要素を増やすことができます。
ここでは要素を3つにしてみました。 配列の中には、ぞれぞれ0が入っています。

テキストボックスの中身を書き換えると、配列の初期値を変更できます。 ここでは、ためしに「10、11、12」と入力してみました。
ただし、これには落とし穴があって、右側の項目には「インデックス0番」「値=0」が入っています。この設定が配列入力よりも優先されてしまいますので、結果として配列の中身は「0、11、12」となってしまいます。

インデックス1番から値を読み取って表示するだけのプログラムを作ってみました(array2.ev3)。

プログラムを実行すると、「11」が表示されました。インデックス1番の値です。インデックスを使えば「X番」として要素を指定することができるわけです。
次のページでは、配列変数を使ってみたいと思います。

◆ 配列の変数

先ほど作ったプログラムを改造して、変数ブロックを追加したのがこちらです(array3.ev3)。
「変数」ブロックを追加して、「数値配列」に設定します。こうすると、変数に配列を書き込んだり、読み込むことができるようになりました。
あと、ついでに配列の値を「0」→「10」に変更しました。これで、配列の中身が「10、11、12」になりました。太いデータワイヤで変数ブロックに接続すると、この3つの値が1度に全部代入されます。
プログラムを実行すると、先ほどと同じ結果が出ました。

さらにこのプログラムを改造してみましょう。今度はループブロックを追加してみました(array4.ev3)。
果たして、どのような結果になるのでしょうか?

プログラムを実行すると、「10」→「11」→「12」と画面に表示されました。 これは配列の中身が順に表示されたということです。
どうしてこうなるのかというと、ループ回数と配列のインデックスがデータワイヤーでつながっているからです。 ループ回数は実行後、「0」→「1」→「2」と値が変化します。それがそのまま配列のインデックスとして働くためです。
これで配列の使い方が少し理解できたでしょうか? まだまだ配列のすごさをお伝えしきれていない感じがしますので、次回も配列の使い方を紹介したいと思います。

[DOWNLOAD]今回作成したプログラム(教育用EV3ソフトウェア用)

当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。