今回は、mBot2プログラミングシリーズ(mBlock編)の第3回です。
mBot2プログラミングの重要な要素である「条件分岐」と「繰り返し処理」を学びます。
条件分岐を使うことで、プログラムに「もし〇〇ならば、××する」という判断力を持たせることができ、センサー値を基にした柔軟な動作制御ができます。
また、繰り返し処理により、センサー値を継続的に読み込むことも可能となります。
この記事で分かること
- 「条件分岐」「繰り返し処理」ブロックとその使い方
- mBot2を制御する上での、条件分岐と繰り返し処理の組み合わせ方
mBlockとは?『スクラッチ(Scratch)』との違い
mBlockは、小学校や学習塾で取り入れられている『スクラッチ(Scratch)』をベースとしたビジュアルプログラミングツールです。
スクラッチの基本的な操作感を引き継ぎながら、ロボットやハードウェアの制御に特化しているため、mBlockを使えば、プログラミング初心者でも簡単にロボットプログラミングを始めることができます。
mBlockで使用するブロック
『制御』パレット
繰り返し処理と条件分岐のブロックが入っています。
これら2つを組み合わせることで、複雑な動作をシンプルなコードで表現できます。
繰り返し処理とは?
同じ処理を何度も繰り返すことで、効率的にプログラムを実行できます。
例:「LEDを3回点滅させる」

繰り返し処理ブロック
設定した回数だけ、枠の中に入っている処理(ブロック)を繰り返して実行します。

繰り返し処理ブロック
枠の中に入っている処理(ブロック)を繰り返して実行します。
mBlockで強制的に処理を止めない限り、繰り返し続けます。

繰り返し処理ブロック
設定した条件が成立するまで、枠の中に入っている処理(ブロック)を繰り返して実行します。
条件分岐とは?
特定の条件に応じてプログラムの動作を変える処理のことです。
例:「もし光センサーの値が50以下なら、LEDを点灯する」

条件分岐ブロック
設定した条件が「真(True)」なら、枠の中に入っている処理(ブロック)を実行します。

条件分岐ブロック
設定した条件が「真(True)」なら、上の枠の中に入っている処理(ブロック)を実行、「偽(False)」なら、下の枠の中に入っている処理(ブロック)を実行します。
『センサー』パレット
条件分岐・繰り返し処理の動作確認のために、CyberPiのボタンが押されたかどうかを認識するブロックを使います。

CyberPiのボタンが押されたら「真(True)」、そうでなければ「偽(False)」となります。
「A」「B」「ボタン(A,Bのどちらか)」の3つの選択が可能です。
簡単な動作プログラム作成
条件分岐
『0~10の乱数を発生させ、その値が4以下の場合「乱数は4以下」、5以上の場合は「乱数は5以上」とCyberPiに表示させる』プログラムを作ってみます。

真と偽の処理を行う条件分岐ブロックを使います。
『乱数<5(4以下)』のときと、そうでないときでCyberPiの表示を切り替えます。

繰り返し処理
先ほど作った乱数結果表示プログラムを5回繰り返して、CyberPiその結果を5行表示するプログラムを作ってみます。

条件分岐のプログラムを『〇回繰り返す』ブロックで挟むことで、CyberPiには5行分表示されます。
※5行綺麗に表示するためには、改行させる必要があります


【例題】条件分岐と繰り返し処理を使ってみよう
例題1:繰り返し処理を終了する
- 例題
- 解答例
『1秒間ずつ右回転と左回転を繰り返し、CyberPi上のボタンを押したら回転動作を終了する』プログラムを作ってみましょう。

繰り返し処理『〇まで繰り返す』ブロックを用います。
条件に『(CyberPiの)ボタンが押された』を入れて、ブロックの枠の中に「mBot2の回転処理」を入れることで実現します。
例題2:条件分岐と繰り返し処理の組み合わせ
- 例題
- 解答例
『CyberPiのBボタンを押すとmBot2が右回転し、Aボタンを押すと停止する』プログラムを作ってみましょう。

『ずっと』の繰り返しブロックで全体の処理をループさせます。
繰り返し処理の中で、CyberPiのボタンに応じてmBot2の動作を切り替える処理を条件分岐ブロックで作ります。
まとめ
今回は、条件分岐と繰り返し処理を組み合わせたプログラムを作成しました。
この2つを組み合わせることで、センサー値を継続的に取り入れた、mBot2のより柔軟な動作を実現できます。
次回は、『センサー値』プログラムに取り入れる上で、非常に役立つ『変数』について学んでいきます。
mBlockを使ったmBot2のプログラミング方法を丁寧に解説していておススメです。
CyberPi単体でもプログラミング教育に非常に役立ちます!
