投稿
すいません、質問です! いまmk2の初心者講座を見ながら勉強してるんですが、サンプルプログラム7(その3)の@DWのED[I]のフラグのたて方で、添付写真のヤリカタ2ではなく、ヤリカタ1での入力を勧めていますが、ヤリカタ0では不味いんでしょうか...?実際ヤリカタ0でrunさせると、一度は折り返すんですが、2周で下に行かず、右につき抜けてerrorになってしまいます。 ED[1]の値を1増やして、3の次は0に戻すのなら、これでいいような気がするんですが...。
1そうだね
プレイ済み
返信[1]
親投稿
TINY TINY-YAROU
MODは足し算よりも先に計算されるので、MODの前をカッコで括れば大丈夫だと思いますよ!
1そうだね
プレイ済み
返信[2]
親投稿
のざらし longyearsago
ヤリカタ0は計算順序に間違いがあるようです。 掛け算や割り算は、足し算や引き算よりも優先されます。 つまり ED[I] = (ED[I]+1 MOD 4) は ED[I] = (ED[I]+(1 MOD 4)) として解釈されます。 なので ED[I] = (ED[I]+1) MOD 4 もしくは ED[I] = ((ED[I]+1) MOD 4) とするのが正しいです。 計算順序については プチコン3号の公式ホームページの スペックの "演算子優先順位" を参考にどうぞ。 面倒だ! というならカッコしてしまえばOKです。
1そうだね
プレイ済み
返信[3]
親投稿
ありがとうございます!納得しました。ビット演算に頭がこんがらがって、この方が分かりやすいんでよかったです。 ヤリカタ1の論理式の方法では2の累乗の数の繰り返ししか対応できないですよね。なんであえてヤリカタ1でやるんでしょう?コンピューターに優しいから?
0そうだね
プレイ済み
返信[4]
親投稿
TINY TINY-YAROU
そうです。コンピューターに超超超優しいからです(^_^)
1そうだね
プレイ済み
返信[5]
親投稿
のざらし longyearsago
ビット演算は四則演算よりも高速! なのですが、 処理落ちするほどのプログラムでも無い限りは そこまで気にする必要も無い話です。 (笑) 大量のフラグを管理する時は数字で持つより ビットを上げ下げした方が楽、っていうのはあります。 BUTTON 関数なんかはその良い例ですね。 このサンプルはビット演算に慣れてほしかった・・・ とかそんな意味もあるんでないでしょうか。 たぶん。
1そうだね
プレイ済み
返信[6]
親投稿
なるほどです!なんか、でっかい壁が見えてきた気がしますが越えられるように頑張ってみます。ありがとうございました。
0そうだね
プレイ済み