ブール演算子
条件付き分岐では真偽の判定が必要になりますが、これに関する演算がブール演算です。この節では、ブール演算について解説します。
挿入演算子
等しい: <expr1> == <expr2>
説明: この演算子は、2つの式の評価結果が等しいかどうかを調べます。演算の結果は
true
または
false
です。
等しくない: <expr1> != <expr2>
説明: この演算子は、2つの式の評価結果が等しくないかどうかを調べます。演算の結果は
true
または
false
です。
==
の否定です。
より大: <expr1> > <expr2>
説明: この演算子は、式
が、式
より大きい かどうかを調べ、
値を返します。比較は2つのものだけが行えます。ともに
実数であれば、通常の大小関係です。ともに
文字列であれば、辞書順に比較します。 それ以外は(比較できない値の場合)
___
が返されます。
より小: <expr1> < <expr2>
説明: この演算子は
より小 であることを除けば
> と同じです。
大きいか等しい: <expr1> >= <expr2>
説明: この演算子は
大きいか等しい であることを除けば
> と同じです。
小さいか等しい: <expr1> <= <expr2>
説明: この演算子は
小さいか等しい であることを除けば
> と同じです。
ファジー(あいまい)な比較 ~==
, ~!=
, ~<
, ~>
, ~>=
, ~<=
:
説明: CindyScript は、比較を
ファジー(あいまい) におこなう演算子を持っています。この演算子では、条件がεの限界内かどうかを調べます。したがって、
a~==0
は、値
a
が
+ε
から
-ε+の範囲にあるかどうかを調べます。 小さな値 ε は -+0.0000000001
に設定されます。この演算子は、数値計算における誤差を吸収するのに時々役に立ちます。たとえば、多くの表計算ソフトなどでは、8.2ー7.2 の値に誤差があり、if(8.2-7.2 >=1 , A, B ) という判断が正しくできません。Cinderellaでも同様ですが、このようなとき、if(8.2-7.2 ~>=1 , A, B ) とすると正しく実行できます。
ファジー演算子の正確な意味は次の図から読み取れるでしょう。ここでは、演算子が真であると評価する
b
の値の範囲を赤で表示しています。
論理積: <bool1> & <bool2>
説明: 2つのブール値の
論理積 は次の真理表で定義されます。
A | B | A & B
|
false | false | false
|
false | true | false
|
true | false | false
|
true | true | true
|
2つの引数のうちひとつでもブール表現でない場合は、演算子は
___
を返します。
論理和: <bool1> % <bool2>
説明: 2つのブール値の
論理和 は次の真理表で定義されます。
A | B | A % B
|
false | false | false
|
false | true | true
|
true | false | true
|
true | true | true
|
2つの引数のうちひとつでもブール表現でない場合は、演算子は
___
を返します。
否定: !<bool>
説明: 1つのブール値の
否定 は次の真理表で定義されます。
引数がブール表現でない場合は、演算子は
___
を返します。
関数型演算子
論理積: and(<bool1>,<bool2>)
説明: and(x,y)
は
x & y
と同等です。
論理和: or(<bool1>,<bool2>)
説明: or(x,y)
は
x % y
と同等です。
否定: not(<bool>)
説明: not(x)
は
!x
と同等です。
排他的論理和: xor(<bool1>,<bool2>)
説明: 2つのブール値の
排他的論理和 は次の真理表で定義されます。
A | B | xor(A,B)
|
false | false | false
|
false | true | true
|
true | false | true
|
true | true | false
|
2つの引数のうちひとつでもブール表現でない場合は、演算子は
___
を返します。
型の判定
次の関数は、式が特定の型であるかどうかを調べます。これらの関数は、入力値の型に依存する関数を定義する際に重要です。さらに、プログラム内において、引数の型を確かめられるのでデバッグに有効です。
整数か: isinteger(<expr>)
説明: この関数は
<expr>
が整数かどうかを調べます。
実数か: isreal(<expr>)
説明: この関数は
<expr>
が実数かどうかを調べます。 なお、整数は実数です。
複素数か: iscomplex(<expr>)
説明: この関数は
<expr>
iが複素数かどうかを調べます。 なお、実数は複素数でもあります。
偶数か: iseven(<expr>)
説明: この関数は
<expr>
が偶数かどうかを調べます。
奇数か: isodd(<expr>)
説明: この関数は
<expr>
が奇数かどうかを調べます。
リストか: islist(<expr>)
説明: この関数は
<expr>
がリストかどうかを調べます。
行列か: ismatrix(<expr>)
説明: この関数は
<expr>
が行列かどうかを調べます。 これは、リストの成分が、すべて同じ長さのリストになっているかを意味します。もし
n 個の成分が
m の長さであれば
n ×
m 行列です。
数ベクトルか: isnumbervector(<expr>)
説明: この関数は
<expr>
が、すべて数(整数、実数または複素数)からなるベクトルかどうかを調べます。
数の行列か: isnumbermatrix(<expr>)
説明: この関数は
<expr>
が、成分がすべて数(整数、実数または複素数)の行列かどうかを調べます。
文字列か: isstring(<expr>)
説明: この関数は
<expr>
が文字列かどうかを調べます。
幾何学要素か: isgeometric(<expr>)
説明: この関数は
<expr>
が幾何学要素かどうかを調べます。
選択されているか: isselected(<expr>)
説明: この関数は
<expr>
が選択された幾何学要素かどうかを調べます。
点か: ispoint(<expr>)
説明: この関数は
<expr>
が幾何の点かどうかを調べます。
直線か: isline(<expr>)
説明: この関数は
<expr>
が幾何の直線かどうかを調べます。
円か: iscircle(<expr>)
説明: この関数は
<expr>
が幾何の円かどうかを調べます。
円錐曲線か: isconic(<expr>)
説明: この関数は
<expr>
が幾何の円錐曲線かどうかを調べます。
質点か: ismass(<expr>)
説明: この関数は
<expr>
が
CindyLab の質点かどうかを調べます。
恒星か: issun(<expr>)
説明: この関数は
<expr>
が
CindyLab の恒星かどうかを調べます。
バネか: isspring(<expr>)
説明: この関数は
<expr>
が
CindyLab のバネかどうかを調べます。
未定義要素か: isundefined(<expr>)
説明: この関数は
<expr>
が未定義要素 (___)を返すかどうかを調べます。