論理演算子 - Cinderella Documentation
Description: The user's guide to the Interactive Geometry Software Cinderella

コンテンツにスキップ

# 論理演算子

## ブール演算子

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

### 挿入演算子

#### 等しい: `<expr1> == <expr2>`

説明: この演算子は、２つの式の評価結果が等しいかどうかを調べます。演算の結果は `true` または `false` です。

#### 等しくない: `<expr1> != <expr2>`

説明: この演算子は、２つの式の評価結果が等しくないかどうかを調べます。演算の結果は `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>` が未定義要素 (___)を返すかどうかを調べます。