マイクロマウス研修 Part8.1(番外)(岩本)


ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

マイクロマウス研修(岩本)一覧
Part1Part2Part3Part4Part5Part6Part7Part8

番外
Part8.1

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

こんにちは岩本です。
今回はサンプルプログラムSTEP3で行ったプログラムについて、もっと簡潔なプログラムの書き方を知ったのでそれについてです。
Part8で下図のプログラムの説明を行いましたが、プログラマーの人たちから見るとこの制御文は長すぎるそうです。

 

今回説明する計算方法は、トグルという計算方法です。
トグルを使用すると、0と1を交互に入力する式を簡単に作ることが出来ます。
今回のLEDにこれを当てはめると、下図のようになります。
上図47行目から54行目と同じ結果が、下図47行目の1行で表すことが出来ますし、変数state_rの宣言も必要無くなります。

 

しかし、”^”(ハット)とは何でしょう?
これは、Part8でも少し登場しました”&”と同じビット演算子の1つです。
2つの値があり、どちらか片方だけ1なら1、どちらも0またはどちらも1の場合は0を返します。
概ねaとbをそのまま、足し算している感じですね(1+1は0になりますが)

 

でも47行目の式は”^=”となっていますね
これは、複合代入演算子と言い、式が省略されている物です。

 

つまり、47行目の式は、下記の様に変化することが出来ます。
LED3が0の時は、0と1を比較するため、LED3は1となります。
次に同じ式が読み込まれた時は、LED3は1となっている為、1と1を比較し0となります。
スイッチを押すことがこの式を読み込ませるトリガーですので、スイッチを押すたびに0と1を繰り返します。

プログラムを書く人の好みにもよる見たいですが、短い文章の方がプログラムの処理が軽くなるため、なるべく使っていこうかと思います。


Posted in Pi:Co Classic3 製作記