Lesson8:変数
Codey Rockyで学ぶ大人のロボットプログラミング講座は、今回で8回目で、一旦最終回です。
これまで、以下のようなテーマで続けてきました。
第一回:プログラミングとは
第二回:イベントとは
第三回:順次処理とは
第四回:繰り返し処理とは
第五回:条件分岐処理とは
第六回:演算とは
第七回:定義とは
今回のテーマは、「変数」です。ここまで、「かじれば」、とりあえず、ロボットプログラミングってどういう感じで進めていくかのイメージはつかめると思います(笑)
さて、変数については、初めてプログラミングに挑戦する人にとっては、なかなか、すぐにイメージが掴みにくいテーマかも知れません。
例えば、↓のようにCodey RockyのLEDパネルの数字を段々変えていくような場合に、変数を使います。「Aボタンを押すと、255から1ずつ減っていき、0で止まる」というプログラムを変数を利用して作っています。
■Lesson8の目標
■Lesson8で準備するもの
キーコンセプト:変数とは
変数とはデータ(文字・数・センサーの値etc)を記憶しておく入れ物のことです。一つの「変数=入れ物」には、一度に一つしかデータを入れておくことが出来ません。新しくデータを入れると、それまで「変数=入れ物」に入っていたデータは、消えてしまいます。
複雑なプログラムになっていくと、いくつもの種類のデータを使いますので、そのデータごとに、「変数=入れ物」をいくつも作ります。その為、その変数には、必ずプログラムを書く人が名前を付ける必要があります。これを「変数名=入れ物の名前」といいます。
変数名は、どのような名前でも良いですが、中にどんなデータが入っているか、分かるような名前にする必要があります。例えば、CodeyRocky「照度センサーの値」を入れる変数=入れ物には、「照度センサー」のような名前を付けます。 っと言葉で言っても、何言ってるんだか分かりませんね(笑)
↑の動画のプログラムは、こんな感じです。
↑の薄いオレンジ色のブロックが、変数に関するブロックです。各ブロックの役割ですが、
ポイントは、↓変数名「数字」の丸いブロックが入れ物で、その中に数字が入っているというイメージを持つことですかね。
変数=入れ物の中にどんなデータを入れるかどうかを決めるブロック
変数=入れ物の中のデータを●●ずつ変えていくブロック
mBlock5での変数の作り方・使い方
変数ブロックは、自分で作る必要があります。覚えてしまえば簡単です。
手順は
1、ブロックパレットの変数タブをクリック
2、変数を作るをクリック
3、変数名を任意で設定
↓が変数ブロックの作り方動画です。
ちなみに、動画の中で、「全てのスプライト用」と「このスプライトのみ」とあります。
「全てのスプライト用」はグローバル変数と呼び、これを選択すると、その変数は、mBlockのステージを含むすべてのスプライトから利用できます。
「このスプライトのみ」はローカル変数と呼び、これを選択すると、その変数は、他のスプライトから変更され内容になります。
Scrachでは、スプライトは、画面上のネコ(mBlockでいうパンダ)をさします。プログラムで動かす対象ですね。一方、mBlockを使ったロボットプログラミングにおいては、スプライトと同じ位置づけに「デバイス」とあります。デバイスは当然ながら、PC画面上にはない、Codey Rockyなどのロボットを指します。
例えば、デバイスをCodeyRocky以外にも足した場合は、そのデバイスの中全てで対象(グローバル変数)であるか、そのデバイスのみを対象(ローカル変数)にするかという設定ができる事になります。
↓の動画は、デバイスに、Codey Rockyに加え、mBotを追加し、「数字」のグローバル変数を作った例です。Codey Rockyの変数パレットだけじゃなく、mBotの変数パレットにも「数字」が追加されているのが分かります。
まとめ:変数=入れ物
「変数」という言葉だけを見ると、何かの数というイメージを持ってしまいますが、プログラミングにおいては、数ではなく「入れ物」と考えましょう。
具体的には、↓のブロックが入れ物で、その中には、数字というデータを入れるイメージです。