|
算術演算子
|
-
|
負符号 -X (Xに-1を掛ける)
|
^
|
べき算 X ^ Y(XをY乗する)
|
*,/
|
乗算、除算 X * Y (XにYを掛ける), X / Y
(XをYで割る)
|
+,-
|
加算、減算 X + Y (XにYを足す), X - Y
(XからYを引く)
|
関係演算子
|
<,>
|
左辺が右辺より小さい、左辺が右辺より大きい
|
<=,>=
|
左辺が右辺より小さいか等しい、左辺が右辺より大きいか等しい
|
=,!=,<>
|
両辺が等しい、両辺が等しくない
|
論理演算子
|
AND
|
論理積
|
OR
|
論理和
|
XOR
|
排他的論理和 (*1)Terrapin
Logoではサポートされていません。
|
NOT
|
否定
|
論理演算子の内訳
論理演算は、真(TRUE)か偽(FALSE)の2つ値の間で行われ、結果も真(TRUE)か偽(FALSE)で表されます。
"true and "true
Result: TRUE
何だか良く判りませんね。
1 > 0
Result: TRUE
これならどうでしょう。
1は、0より大きいか。
それは、真です。
と訳せますね。
1 > 0 and 1 < 2
Result: TRUE
この場合は、1は0より大きく及び1は、2より小さいか。
それは、真です。
と訳せますね。
下の表が、その演算結果です。この表では1をTRUE、0がFALSEに対応しています。
|
AND(論理積)どちらも真の場合のみ真を返す。それ以外は偽である。
|
X Y
|
X AND Y
|
1 1
|
1
|
1 0
|
0
|
0 1
|
0
|
0 0
|
0
|
OR(論理和)どちらかが、真であれば真を返す。
|
X Y
|
X OR Y
|
1 1
|
1
|
1 0
|
1
|
0 1
|
1
|
0 0
|
0
|
XOR(排他的論理和)どちらも同じ値であれば、偽を返す。
|
X Y
|
X XOR Y
|
1 1
|
0
|
1 0
|
1
|
0 1
|
1
|
0 0
|
0
|
NOT(否定)自分自身を否定する。生きててすみません。:-)
|
X
|
NOT X
|
1
|
0
|
0
|
1
|
演算子に対応する手続き(あるいは別名)
Logoは、演算子が手続き風に使えたり関数風に使えたりと、少々ややこしいです。
5 + 5 あるいは、+ 5 5 または、SUM 5 5
でも同一の結果10を返します。
更には、(+ 1 2 3 4 5) あるいは、(SUM 1 2 3 4 5)
と括弧で括れば便利な合計関数として使えます。もちろん結果は、どちらも15です。
目的別に応じて使い分ければ良いと思います。しかし単に、式の括弧を減らしたいと言う場合は、少々考えた方がよさそうです。
演算子と手続き風や関数風が、ごちゃ混ぜになってプログラムが、読みにくくなる場合もあるからです。
その場合は、無理に1行の式にまとめずに2行以上の式で、何をやっているのかはっきりさせてプログラムを書いたほうが、後々の変更に際して理解しやすいと思われます。
|
^
|
POWER number number
|
*
|
PRODUCT number number
|
/
|
QUOTIENT number number
|
+
|
SUM number number
|
-
|
DIFFERENCE number number
|
<
|
.LT object object
|
>
|
.GT object object
|
<=
|
.LE object object
|
>=
|
.GE object object
|
=
|
.EQ object object
|
!=,<>
|
.NE object object
|
優先順位
べき算→乗算・除算→加算・減算の優先順位で、計算が行われます。
1 + 2 - 3 * 4 / 5 ^ 6
Result: 2.999232
括弧で括られた演算は、優先順位が高くなるので上の式を、同じ結果が出る様にしてみましょう。
1 + 2 - (3 * 4 / (5 ^ 6))
Result: 2.999232
一番括弧が、深いべき算が最初に計算されているのが、判りました。
同じ優先順位の演算子は、左から右に向かって計算されています。
DIFFERENCE SUM 1 2 QUOTIENT PRODUCT 3 4 POWER 5 6
- + 1 2 (/ * 3 4 (^ 5 6))
この2つの式でも同じ演算結果です。どれが、一番判りやすいでしょうかね。;-D
そして、べき算→乗算・除算→加算・減算→関係演算→論理演算の順位に、なります。
1 + 1 > 0 and 2 + 2 < 10
Result: TRUE
まず、算術演算を行わないと関係演算が、成り立ちません。そして、関係演算が終わらないと論理演算が、成り立ちませんね。
![](../img/bret.gif)
|