ロジック

ロジックブロックは、数式や論理式の結果を条件にして、異なるオペレーションを実行できます。

以下のロジックブロックは、条件の結果に応じてオペレーションを実行します。値ブロックまたはロジックブロックで [If] または [If Else] 条件を設定します。

以下のロジックブロックは、条件に使用する数値や論理値を出力します。

MEMO:

  • オペランドの値に以下のいずれかが発生すると、その値は未定義となります。
    • 通信エラー (変数のクオリティが「bad」)

    • 範囲外の配列要素番号へのアクセス

    • ゼロ除算

  • ロジックブロックに未定義の値が含まれると、結果は未定義となります。ただし、[論理的条件] の場合は結果を出力できる場合があります。

論理的条件

If

このブロックは、[If] 条件の評価が真のときに [Do] ブロックの下のオペレーションを実行します。
ブロック
テキスト

'if(CONDITION){}'

MEMO: スクリプトの実行中、[If] 条件が未定義の場合、ブロックは終了します。

If Else

このブロックは、[If] 条件の評価が真のときに [Do] の下のオペレーションを実行し、[If] 条件の評価が偽のときには [Else] の下のオペレーションを実行します。
ブロック
テキスト

'if(CONDITION){}else{}'

MEMO: スクリプトの実行中、[If] 条件が未定義の場合、ロジックは [Do] を実行せず [Else] オペレーションを実行します。

Math

このブロックは数式です。値ブロックを左のオペランド (X) と右のオペランド (Y) に挿入し、演算子を選択します。
ブロック
テキスト

'SOURCE1 * SOURCE2'

演算子

説明

+ X + Y 加算
- X - Y 減算
* X * Y 乗算
/ X / Y 除算
% X % Y 除算の余り
& X & Y ビット単位の AND 演算の結果を返します。X = 0110; Y= 1100 の場合、結果は 0100 です。
| X | Y ビット単位の OR 演算の結果を返します。X = 0110; Y= 1100 の場合、結果は 1110 です。
^ X ^ Y ビット単位の XOR 演算の結果を返します。X = 0110; Y= 1100 の場合、結果は 1010 です。
<< X << Y 左シフト。X 内のビットが、ビットの位置から左に Y 個分シフトします。符号は保持されます。
>> X >> Y 右シフト。X 内のビットが、ビットの位置から右に Y 個分シフトします。符号は保持されます。
>>> X >>> Y ゼロ挿入、右シフト。X 内のビットが、ビットの位置から右に Y 個分シフトします。シフトされた左側は 0 が挿入され、符号は保持されません。

MEMO:

  • AND/OR/XOR は、常に 32 ビット符号なし整数値を返します。
  • 入力値が負の場合、ビットシフト式は 32 ビットの整数値を返します。
  • 入力値が正の場合、ビットシフト式は 32 ビット符号なし整数値を返します。

MEMO:

数式の結果には、小数点が含まれます。

(例 1)
以下の場合、INT1 の値が 101 であれば、結果は 10.1 になります (.1 は切り捨てされません)。

ブロック

テキスト

'INT1 / 10'

小数点を切り捨てるには、floor ブロックを使用します。
(例 2)
以下の場合、INT1 の値が 101 であれば、結果は 10 になります。

ブロック

テキスト

'$Math.floor((INT1 / 10))'

比較条件

このブロックは比較条件です。値ブロックを左のオペランド (X) と右のオペランド (Y) に挿入し、演算子を選択します。

ブロック
テキスト

'CONDITION1 == CONDITION2'

演算子

説明

<=

X の値が Y の値以下の場合は、真を返します。

X = 7 かつ Y = 33 の場合、式 X <= Y は真です。

>=

X の値が Y の値以上の場合は、真を返します。

X = 32 かつ Y = 10 の場合、式 X >= Y は真です。
<

X の値が Y の値より小さい場合は、真を返します。

X = 7 かつ Y = 38 の場合、式 X < Y は真です。
>

X の値が Y の値より大きい場合は、真を返します。

X = 27 かつ Y = 14 の場合、式 X > Y は真です。
!=

X の値が Y の値と等しくない場合は、真を返します。

X = 7 かつ Y = 33 の場合、式 X != Y は真です。
==

X の値が Y の値と等しい場合は、真を返します。

X = 5 かつ Y = 5 の場合、式 X == Y は真です。

論理的条件

このブロックは論理的条件です。値ブロックを左のオペランド (X) と右のオペランド (Y) に挿入し、演算子を選択します。

ブロック
テキスト

'CONDITION1 && CONDITION2'

演算子

説明

&&

論理積

両方が真の場合は真を返します。

X = 真 かつ Y = 偽 の場合、式 X && Y は偽です。

MEMO: 片方のオペランドの値が未定義でも、もう一方のオペランドが偽であれば、結果として論理条件は偽と評価される可能性があります。以下の表を参照してください。

X Y 結果
未定義 未定義 未定義
未定義 未定義
未定義
未定義 未定義
未定義
||

論理和

両方の入力が偽である場合以外、真を返します。

X = 真 かつ Y = 偽 の場合、式 X || Y は真です。

MEMO: 片方のオペランドの値が未定義でも、もう一方のオペランドが真であれば、結果として論理条件は真と評価される可能性があります。以下の表を参照してください。

X Y 結果
未定義 未定義 未定義
未定義
未定義 未定義
未定義

未定義 未定義

Not

このブロックは論理否定またはビット否定を行います。値ブロックをオペランド (X) に挿入し、演算子を選択します。

ブロック
テキスト

'!SOURCE'

演算子

説明

!

論理否定

BOOL 値の逆を返します。

X = 偽 の場合、結果は真です。
˜

ビット否定

各ビットの逆の値を返します。

MEMO: 整数を使用する場合、ビット式のビット長は常に 32 ビットです。

X = 0011 の場合、結果は 1100 です。