前回は「配列」が並んだデータを一つの変数にまとめたものであることを説明した。音符のデータをまとめて楽譜の配列を作ったのでしたね。今回は配列に格納されたデータを個別に扱う方法を説明しよう。配列の要素とインデックス準備として配列と関数を作ります。初めに配列を作っておきますよ。関数を作ってAボタンを押すと呼び出されるようにする。配列に格納したイメージを表示してみよう。各要素を個別に表示する。ループと変数で配列を扱う。まとめ配列の要素とインデックス前回扱った音楽を演奏するプログラムを思い出してみよう。2行目が音符のデータをまとめた配列だ。music.play(tune)「グーチョキパーで何作ろう?」の曲でしたね。2行目の配列「tune」には音符のデータが格納されている。それぞれの音符のデータのように、配列に格納されたデータのことを、「配列の要素」と呼ぶ。覚えておいてくれたまえ。「”C4:4′′」などの音符のデータが「配列の要素」ということになるのですね?ウム。「配列の要素」には、0から始まる番号が付けられている。この番号を「インデックス」というのだ。「インデックス」は、どうやって使うのですか?配列の変数に「[]」でくくったインデックスを付ければ、それぞれの要素を個別に指定することができる。・・・tune[0]とすれば、最初の要素「”C4:4′′」を指定できるのだ。準備として配列と関数を作ります。今回は、マイクロビットのLED表示部分に時計の針を表示させて、グルっと一回転させてみようと思う。動きがあって、面白そうですね!Aボタンが押されたら時計が一回転するプログラムを作るのだ。まとめると、以下となる。「Aボタンが押されると、マイクロビットのLED表示部分で時計の針のイメージが一回転する。時計のイメージを表示する部分を「Clock()」という関数として置き、関数「Clock()」の内容を作り変えることで、具体的に配列をどう扱うかを説明しよう。なんか難しそうですけど、ガンバリマス!初めに配列を作っておきますよ。初めに「配列」を作っておこう。「hari」という配列を作り、1時から12時までの時計のイメージを格納したのだ。Image.CLOCK12]マイクロビットのライブラリには、時計も用意されているのだ。(イメージの表示機能については、以下をご覧ください。新しいタブで開きます。)【マイクロビット入門】(10)マイクロビットの機能を使ってみよう。配列「hari」ってことは、針のイメージデータの配列ってことかな。「Image」の配列も作れるのですね!関数を作ってAボタンを押すと呼び出されるようにする。時計の針のイメージを表示する部分は「Clock()」という関数にしてまとめておく。Aボタンが押されると、関数「Clock()」が呼び出されるようにする。#中身はこれから作ります。Clock()4行目~5行目が関数「Clock()」だ。中身はまだ作っていないのだ。8行目と9行目がAボタンで関数「Clock()」を呼び出す部分ですね。(関数とボタンについては、以下をご覧ください。新しいタブで開きます。【マイクロビット入門】(7)関数ってなんだろう?【マイクロビット入門】(8)関数を作ってみよう。ボタン【マイクロビット入門】(9)ボタンで動きを変えてみよう。配列に格納したイメージを表示してみよう。関数「Clock()」の中身を作って、時計を表示するのですね。いろいろな方法で表示してみようと思う。簡単な方法イメージを表示するには、「display.show()」関数を使うのでしたね。今回は「hari」という変数にイメージが格納されているので・・・display.show(hari)・・・とすればよいのですか?ィエ~ス。上の「display.show(hari)」を先ほど作った関数「Clock()」の中身とする。display.show(hari)マイクロビットに書き込んで・・・Aボタンを押すと・・時計の針がクルッと一回転しましたね!「display.show()」に配列を渡すと、配列「hari」に格納されたものを1つずつ順番に表示してくれるのだね。なんか、でも、少しぎこちないですね。速く一回転させられないですか?各要素を個別に表示する。そのためには、配列の要素をひとつずつ「display.show()」で表示しつつ、表示する時間間隔を指定する必要がある。そこで「インデックス」を使って、個別に「要素」を指定することとなる。やってやればよいのですか?(なんか難しいことを言い始めたぞ)例えば今回作成した配列「hari」の最初の要素「Image.CLOCK1」を指定するには、次のようにプログラムを変更する。display.show(hari[0])「hari」の代わりに「hari[0]」としたのですね。このままでは、「Image.CLOCK1」しか表示されないので、他の要素も表示されるようにする。インデックスを1ずつ増やしている点に注意してくれたまえ。display.show(hari[11])マイクロビットで動かすと・・・針が表示されますが、動かないですね。表示が切り替わるスピードが速すぎるのだね。そこで、各「display.show()」の間に「Sleep()」を入れて、表示が切り替わる時間を調節してみる。display.show(hari[11])マイクロビットで動かすと・・・おぉ、クルッと一回転しましたね!「sleep(100)」の100の部分を別の数字に変えると、針が動くスピードを変えられるのだ。う~ん、なんだかプログラムが長ったらしくなってしまってますし、11個ある「sleep(100)」の100の部分を全部変えるのは大変ですね。何とかならないのですか?ループと変数で配列を扱う。良いところに気がついたね。その問題を解決するには、「ループ」と「変数」を使えばよい。「ループ」ということは「while」文ですね!イエ~ス、その通り!「while」文でループを作る前に、配列「hari」の要素を指定するための変数「a」を用意しておこう。0変数「a」の値は、最初は0にしておくのですね。配列「hari」の最初の要素から順番に指定していくので、インデックスとなる変数「a」は最初は0としておくのだ。配列の要素の番号は0から始まるのでしたね。次に、whileループの中で「display.show(hari[a])」と「sleep(100)」を呼び出すようにする。sleep(100)ループの中で「display.show()」と「sleep(100)」が呼び出されるということは、繰り返し呼び出される、ということですね?その通りなのだ。「display.show()」→「sleep(100)」→「display.show()」→・・・と呼び出されることで、「display.show()」の間に「sleep(100)」が入り、針がある程度のスピードで動いているように見える、という訳なのだ。12」ですが、変数「a」の値は0ですね。12:このままでは、そうなってしまうね。変数「a」は配列「hari」のインデックスで、1ずつ増えていかないといけない。プログラムはこうなる。1ループが一回りするたびに変数「a」の値が1増える。変数「a」は配列「hari」のインデックスなので、7行目で表示される時計の針のイメージが配列に格納された順番に変わっていくのだ。!変数「a」がどんどん増えていくので、12になったところでループが終了するのですね!これで出来上がりなのですか?イエ~ス、その通りデ~ス。さっきの関数「Clock()」は27行目まであったけど、今回のはかなりシンプルにまとまっていますね!しかも、時計の針を動かす速さを変える場合は、8行目を変えるだけで良いのだ。ところで、配列の要素は12個なのに、変数「a」が増えるのは11までなのはなぜですか?変数「a」は0から始まって11まで増える。0から11までの間に整数は12個あるので、配列の12個の要素をすべて指定できるのだ。従って、変数「a」は11まで増えればよいのだョ。いやぁ、そうだと思ってたんですけど・・・念のため、ちょっと聞いてみただけですぅ。まとめ今回のまとめなのだ!配列の中に格納されたデータ一つ一つを「要素」という。配列の要素には、「インデックス」と呼ばれる0から始まる番号が付けられている。配列の要素を指定するには、「[]」で囲った「インデックス」を配列名に付加する。ループを組み合わせることで、各要素を扱うプログラムをシンプルに作成できる。ナンですと!それは「for」文というものを使う方法なのだ。次回は「for」文について説明するぞ。どんなものか、気になりますね。今回作ったプログラムの全文デ~ス。【マイクロビット入門】(13)並んだデータを扱ってみよう。【マイクロビット入門】(15)「for」ループで配列を扱おう。プラモの飛行機のプロペラ(2)マイクロビット、パイソンのプログラミング応用編です。ハセガワ1/32「F6F-5ヘルキャット」のプロペラを回すプログラムを解説します。今回は、前回解説しきれなかった部分の続きです。マイクロビット【マイクロビット入門】(5)それって本当?それとも嘘?(TrueとFalseについて)教育用マイコンボード「マイクロビット」のプログラミングを解説します。今回は、「あいつの言っていることは本当なのか、嘘なのか?」という話ではなくて、コンピューターで2つの数字の比較を行ったりするときの話です。TrueやFalseという言葉について説明するよ。プラモの飛行機のプロペラのプログラム:無線のチャンネル指定と双方向通信マイクロビット、パイソンのプログラミング応用編で作成したプログラムのソースです。解説したプログラムのソースコード全文です。本文と一緒にご覧ください。プラモの飛行機のプロペラ(4)無線で操作できるように改造マイクロビット、パイソンのプログラミング応用編です。今回は無線機能についてです。これまで作ってきた模型飛行機のプロペラを回すプログラムに無線機能を追加しました。マイクロビット【マイクロビット応用】[8.1]キッチンタイマーのプログラム:追加した回路の確認用プログラムマイクロビット、パイソンのプログラミング応用編で作成したプログラムのソースです。追加した回路の動作を確かめるのに使用したプログラムです。キッチンタイマー(2)押しボタンスイッチとLEDを追加、プログラムの動きを考える、ポケプラ「ゲンガー」の製作マイクロビット、パイソンのプログラミング応用編です。キッチンタイマーを作るため、スイッチやLEDを追加しました。ゲンガーのプラモを改造して目を光らせてみました。どんなプログラムにするかを考えてみました。キッチンタイマーを作る準備が整ってきました。【マイクロビット入門】(13)並んだデータを扱ってみよう。コメントをキャンセルメールアドレスが公開されることはありません。※サイト上に表示された文字を入力してください。要素とインデックス準備として配列と関数を作ります。初めに配列を作っておきますよ。関数を作ってAボタンを押すと呼び出されるようにする。配列に格納したイメージを表示してみよう。各要素を個別に表示する。ループと変数で配列を扱う。映画などを見て、登場する乗り物をプラモで作ります。マイクロビットという教育用マイコンを使ったプログラミング入門の記事も書いていきます。青木鳥をフォローする無断転載を禁止します。道具ホーム検索トップサイドバータイトルとURLをコピーしました。