ifは、条件判断のために使う文です。例えば、aが0より大きければ・・・
体力が0になったら・・・とか使えます(^^)
;簡単な条件判断
a=-5
if a>0 : mes "aは正です"
if a<0 : mes "aは負です"
if a==0 : mes "aは0です"
if a!=0 : mes "aは0ではありません"
stop
|
判断するための書き方は他にもありますし、同じ意味の物が多々あります。
それをまとめてみたいと思います。
;条件判断の書き方
a=0
if a>0 : mes "aは0より大きい"
if a<0 : mes "aは0より小さい(未満)"
if a>=0 : mes "aは0以上"
if a<=0 : mes "aは0以下"
if a==0 : mes "aは0です"
if a=0 : mes "aは0です"
if a!=0 : mes "aは0ではない"
if a!0 : mes "aは0ではない"
stop
|
つぎに、数学の表記で表すと・・・0<a<10、このような書き方についてです。
そのまま書きたくなりますが、それは間違いになり、期待した通りには動きません。
(エラーもでないのでさらにやっかいなのですが(^^;)
これの場合は、「aは0より大きく、”かつ”、aは10より小さい」
このように分けて考えます。この、”かつ”のほかに・・・”または”というのがあります。
「aは0以下、”又は”、aは10以上」このような使い方ができます。
”かつ”は&で、”又は”は|(Shiftを押しながら¥)で表します。
条件それぞれは括弧で囲んで&や|でつなぎます。何個でもつなぐことができますが
ややこしくなります(^^;
;条件判断の書き方2
a=15
if (a>0)&(a<10) : mes "aは0より大きくかつ、aは10より小さい"
if (a<=0)|(a>=10) : mes "aは0未満または、aは10以上"
stop
|
さて、他の方が書かれたプログラムを見ると時々
if a : mes "aは0ではない"
このように省略して書いてる場合があります。さてなぜなのか??
これは、HSPでは、0なら間違いで、0以外なら正しい・・・という風に
条件を判断しているからです。実際にプログラムを見てみましょう。
;ifは、なにで確認しているのか?
a=-3
repeat 7
if a : mes "a="+a+"の時は正しい"
a++
loop
stop
|
つまり、ifの後の計算結果(?)が0以外であれば、ifの後は実行されます。
ここで、計算結果と書きましたが、実は、<や>=や&なども計算用の記号なのです。
これについては、計算2のほうで・・・