MSX
ボクは幼い頃、MSXと言うパソコンでプログラミングしていました。
今回の話は別にMSXに限らないんですが。
プログラムの中で、
IF文
を多用すると動作が遅くなるので、なるべく使わないように、と学びました。
論理演算
そこで登場するのが論理演算です。
例えば、MSX-BASICでは、カーソルキーの上方向が押されると数値の1で下方向は5、右方向は3で左方向は7を返す関数があります。
STICK
と言う関数です。
なので、
もし、カーソルキーの上が押されたら、縦方向(Y座標)をマイナス1せよ、
と書く場合、IF文を使えば、
IF STICK(0)=1 THEN Y=Y-1
と書くんです。
これを上下左右それぞれに書けばキャラを動かせますが4つもIF文が登場しますね。
そこで、真(TRUE)の際には-1を返すと言う論理演算を使います。
Y=Y+(STICK(0)=1)-(STICK(0)=5)
とするわけですね。
こうすれば、上方向が押されたらYはマイナス1されますし、下方向が押されたらYはプラス1されます。
IF文をまったく使わずに同じ動作ができるわけです。
この発想って、学校の義務教育や高校の数学でも無かったんですよね。
なので当時のボクは感動しまくりでした。
できるだけIF文を使わずにプログラムを書くコトを目標にしていました。
いまの義務教育でのプログラミング学習って、見たコトは無いんですが、論理演算は当たり前のように使うんでしょうか?