配列を使ったプログラムの作成 ~レゴマインドストームEV3~
Contents
配列とは
教育用レゴマインドストームで配列を使ったプログラムを作ってみる。
配列とは同じ種類の値を複数格納することができる入れ物でインデックスを用いて中の要素にアクセスをすることができる。
他のプログラミング言語の配列と同様に追加(格納)、インデックスを使っての読み込み、書き出しなどができる。
またレゴでは数値配列とロジック配列の2種類が存在する。
1から順番に整数を格納した数値配列の例
作りたいプログラム
配列を用意して数値を格納する。
格納する値はインデックス(0から始まる)の2倍の値を格納する。
1つ目:0✕2=0
2つ目:1✕2=2
3つ目:2✕2=4
4つ目:3✕2=6
数値配列に4要素格納した後、インテリジェントブロックのディスプレイに順番に格納した値を表示する。
使用するブロック
使用するブロックは以下の6種類。
ループブロック
ループ内に配置されたブロックを右側の条件に一致するまで繰り返す。
ループを4回繰り返す。
ループインデックス※をデータワイヤーで出力する。 ※ループインデックスにはループ回数がセットされている。インデックスは0から始まるので1回目=0になるので注意。 |
変数ブロック
テキスト、数値、ロジック、数値配列、ロジック配列を格納する変数。
読み込み、書き込みが可能。
数値配列を格納する変数 配列を読み込む時に使用する
| |
数値配列を格納する変数 配列に書き込む時に使用する
|
数学ブロック
数学計算を行う為のブロック。
データワイヤーで受け取った値を2倍にして結果に出力する。
尚、数学ブロックについての詳細機能についてはこちらの記事を参照。
データワイヤーでaに受け取った値を2倍にする
|
配列操作ブロック
配列の操作を行うためのブロック。
今回はループインデックス(0~3)をインデックスとして値にインデックス✕2の数値を書き込む。
尚、配列操作ブロックの機能詳細についてはこちらの記事を参照。
表示ブロック
インテリジェントブロックのディスプレイに表示をするブロック。
配列の中身をディスプレイに表示する。
データワイヤーで受け取った値をディスプレイに表示する
|
待機ブロック
条件を満たすまで待機をするブロック。
2秒間待機する
ディスプレイに2秒毎に数値配列の値を表示する為に待機する。 |
数値配列に格納した値を表示するプログラム
最初のループで数値配列に値を格納する。
次のループで格納した値をディスプレイに表示する。
1 | プログラム開始 |
2 | 3~6を4回繰り返す ループインデックス(0から始まる)を4の数学ブロックと5の配列操作ブロックのインデックスにデータワイヤーで出力する |
3 | 空の数値配列 |
4 | ループインデックスの値を2倍にして配列操作ブロックの値にデータワイヤーで出力する |
5 | 数値配列に値を書き込み、データワイヤーで配列出力する |
6 | 5からデータワイヤー経由で出力された数値配列を受け取る データワイヤーは黄色の太線(数値配列を表す) |
7 | 8~11を4回繰り返す ループインデックス(0から始まる)を9の配列操作ブロックのインデックスにデータワイヤーで出力する |
8 | 6の処理で値がセットされた数値配列を入力にする |
9 | ループインデックス番目の数値配列の値をデータワイヤーで10の表示ブロックへ出力する |
10 | データワイヤーで受け取った値をディスプレイに表示する |
11 | 2秒間待機する。 ※10の表示結果を見えるようにするため |
実行結果
ディスプレイに2秒毎に”0”、”2”、”4”、”6”が表示されるのが正解。
プログラミング動画
プログラミングの様子とインテリジェントブロックのディスプレイに結果が表示される様子を動画にしている。
今、授業でレゴマインドストームをつかっています。四輪でプログラムくみたいのですが、なかなか上手くいきません。すこしばかり、ヒントをいただきたいです。メールアドレスを添えておくのでよろしかったら返信がほしいです。
メールがブロックされているようです。可能であれば、質問はこちらに記入して下さい。よろしくお願いします。