今回は、mBotプログラミングシリーズの第4回です。
本記事では「演算」について学びます。
演算は、プログラムの中で入力データを処理し、動作を制御するために非常に重要な役割を果たします。
特にmBotの各種センサー(ライントレースセンサー、超音波センサーなど)の値を扱う際、演算を使いこなすことで、より高度なプログラミングが可能になります。
全講座の一覧はこちら
目標
- 演算(算術、論理、比較)を理解する
- mBlockの「演算」ブロックを理解する
必要なブロック
『演算』パレット
算術演算、論理演算、比較演算等などブロックが入っています。
今回は、mBotのプログラミングで主に使うこの3種類のブロックと、乱数ブロックを紹介します。
算術演算ブロック
加算(足す)、減算(引く)、乗算(掛け算)、除算(割り算)をするブロックです。
比較演算ブロック
2つの値を比較して「真(True)」または「偽(False)」を判定します。
- 「〇>〇」:右より左が大きいか
- 「〇<〇」:右より左が小さいか
- 「〇=〇」:右と左が等しいか
論理演算ブロック
条件を組み合わせたり否定したりして、複雑な判断をプログラムに組み込みます。
- 「〇かつ〇」(AND)
- 2つの条件が2つとも真(True)の時:真(True)
- 「〇または〇」(OR)
- 2つの条件のうち、どちらか一方でも真(True)の時:真(True)
- 「〇ではない」(NOT)
- 指定した条件を反転させます
- 指定した条件が偽(False)の時:真(True)
演算ブロックの白い丸の箇所には、数字を直接入力したり、センサーの値や変数を入れることができます。
乱数ブロック
指定された値の範囲内で、処理されるごとに異なる値が出るブロック。
サイコロを振るようなイメージ。
『制御』パレット
繰り返しや条件分岐のブロックが入っています。
今回は演算ブロックの動作確認のために用います。
繰り返し処理ブロック
設定した回数だけ、枠の中に入っている処理(ブロック)を繰り返して実行します。
条件分岐ブロック
設定した条件が「真(True)」なら、枠の中に入っている処理(ブロック)を実行します。
簡単な動作プログラム作成
以下は、算術演算ブロックの動作を理解するプログラムです。
『1+1の計算結果を、mBotのブザーが鳴る回数で表現する』プログラムで確認できます。
繰り返し処理ブロックの回数部分に加算ブロックを入れることで、加算結果だけブザーを鳴らす繰り返し処理ができます。
次に、比較演算ブロックの動作を理解するプログラム、
『乱数を発生させ、その値が5より大きい場合にブザーを鳴らす』プログラムを作ってみます。
『乱数を発生させ、その値が5より大きい』の判定をするため、比較演算ブロック「〇>〇」の左側に乱数ブロック、右側に5を入れます。
その判定を、条件分岐ブロックの条件とすることで、条件が真の時だけブザーを鳴らすことができます。
最後に、論理演算ブロックの動作を理解するプログラム、
『乱数を2回発生させ、それらの値が2つとも5より大きい場合にブザーを鳴らす』プログラムを作ってみます。
『2つとも』の条件を判定するため、論理演算ブロック「〇かつ〇」(AND)を使います。
左右それぞれに、「乱数>5」の比較演算ブロックを入れることで、条件式が完成します。
【例題】演算を理解しよう
例題1:算術演算した結果の回数だけ処理を実行する
- 例題
- 解答例
減算、乗算、除算ブロックを用いて、
それぞれ『4回ブザーを鳴らす』プログラムを作ってみましょう。
それぞれ、繰り返し処理ブロックの回数部分に算術演算ブロックを入れることで、計算結果だけブザーを鳴らす処理ができます。
例題2:比較した結果で判定する
- 例題
- 解答例
『乱数を発生させて、値が5の場合にブザーを鳴らす』プログラムを作ってみましょう。
比較演算ブロック「〇=〇」を用いて、「5」と比較を行います。
例題3:論理演算した結果で判定する①
- 例題
- 解答例
『乱数を発生させて、値が5でない場合にブザーを鳴らす』プログラムを作ってみましょう。
『値が5でない』の条件を判定するため、論理演算ブロック「〇ではない」(NOT)を使います。
「乱数=5」に対してNOTを使うことで、条件式が完成します。
例題4:論理演算した結果で判定する②
- 例題
- 解答例
『乱数を2回発生させ、どちらかの値が5より大きい場合にブザーを鳴らす』を作ってみましょう。
『どちらかの値』の条件を判定するため、論理演算ブロック「〇または〇」(OR)を使います。
左右それぞれに、「乱数>5」の比較演算ブロックを入れることで、条件式が完成します。
まとめ
今回は、演算ブロックを使って、算術演算、比較演算、論理演算の使い方を学びました。
例題では、動作確認に『乱数』を用いましたが、mBotをプログラミングする上では、一般的に『センサー値』が入ることを念頭に入れておいてください。
次回は、本記事でも触れた「条件分岐」、「繰り返し処理」などについて学んでいきます。
mBlockを使ったmBotのプログラミング方法を丁寧に解説していておススメです。
mBotを使用した拡張的な遊びは『mBotでものづくりをはじめよう』が参考になります。mBotのパーツを段ボールと組み合わせてオリジナルのロボットを作るといったような拡張的な遊びが楽しめます。
コメント