コンテンツにスキップ

論理演算子

ブール演算子

条件付き分岐では真偽の判定が必要になりますが、これに関する演算がブール演算です。この節では、ブール演算について解説します。

挿入演算子

等しい: <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つのブール値の 否定 は次の真理表で定義されます。

A !A
false true
true false

引数がブール表現でない場合は、演算子は___を返します。



関数型演算子

論理積: 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> が未定義要素 (___)を返すかどうかを調べます。