MPC2000 Reference Manual [JAPANESE] [ENGLISH]
【ステートメント】   【制御文】
【使い方】
IF-THEN-ELSE-END_IF

IF SW(0)==1 THEN : ON 0 : END_IF
IF SW(0)==1 THEN : ON 0 : ELSE : ON 1 : END_IF
【書   式】 【機   能】
IF arg THEN

条件分岐
【解   説】
arg(論理式)が0でない場合THENの後ろを実行。0の場合は、ELSEの後ろを実行するか、END_IFの後ろへジャンプ

論理式とは、A==1,A!=1,A<0 等比較演算子で構成された式で、結果はTRUE,あるいはFALSEとなります。
論理式と算術式にはとくに区別はありません。比較演算子には、==,!=,>=,<=,>,<があります。

たとえば、
IF A-2 THEN : print A :END_IF
の場合Aが2以外であれば数値が表示されます。

論理結合は以下のように行います。論理演算には、論理積、論理和、排他的論理和の三種類がありそれぞれ&,|,^の記号を用います。

a==1&(b==1)|(c==1)^(d==2)

比較演算を()でくくってあるのは、それぞれの比較演算の結果を&|^するという意味になります。
また、最初のa==1に括弧がないのは、演算は必ず左から実行されるためです。

ここで、特定の演算を先に行いたい場合は、以下のようにさらに括弧でくくります。
a==1&(b==1)|((c==1)^(d==2))

ここで変数をSW()に置き換えることもできます。

(SW(n1)==1)&(SW(n2)==1)|(SW(n3)==1)^(SW(n4)==1)
また、SW(n)は0/1の値しか持たないため、以下のように省略することができます。
SW(n1)&SW(n2)|SW(n3)^SW(n4) 
負論理(SW((n1)==0)の場合は、@SW(n1)を用います。@SWはSWと逆の論理を返します。

このように論理式は、演算子と適切な括弧付与で複雑な論理を構成することができます。
しかし、論理式があまりに長くなると、後の読み返しで意味がわからなくなる場合があります。
こうした場合は、論理式をまとめたものをAND,OR,XORといった接続子で結合することができます。

IF SW(n1)&SW(n2)|SW(n3)^SW(n4) AND a==1&(b==1)|((c==1)^(d==2)) THEN : print A : END_IF

ここではI/Oの論理式と変数の論理式の論理積で、TRUE,FALSEを判断することができます。
しかし、この論理接続子には優先順位がなく、かならず前方から演算します。

したがって IF A-logic OR B-logic OR C-logic XOR D-logic THENという構文で、C-logic XOR D-logic を先に行いたい場合は、順序を工夫します。

IF C-logic XOR D-logic OR A-logic OR B-logic THEN という順序に配置しなおします。

あるいは、論理式の結果は変数に代入できるため、
A=logic-A : B=logic-B

IF A|B THEN というまとめ方も可能です。

なお、AND OR XORは、数値としての論理演算となりますので、各論理式が0,1以外の値を持つ場合は扱いに注意してください。

注)IF KARA==0 OR (KARA==2 AND A995==1) THEN というような構文は記述できません。




  [LASTMODIFY]2017-08-31 19:01:50 [CREATEDATE]2007-07-20 20:02:19
MPC2000 Reference Manual -R5.11-   (C)2007 ACCEL Corp. all right reserved.