数値演算
述語名/引数 | (:= *X s式) |
要約 | 与えられたs式を計算し結果を変数に代入します。 |
互換性 | Win Unix |
解説 | 式の中に実数と整数が混在する場合は実数として計算されます。 ETIが扱える数値の範囲は、その他の仕様を参照。 使用可能な演算子 + 加算 notのみ単項演算子で、他は二項演算子です。 |
例:
(:= *X (+ 1 2))
(:= *X (- 1 2))
(:= *X (x 2 3));;アルファベットのx
(:= *X (d 4 2))
(:= *Y (d (+ 3.0 1.0) (- 3.0 5))) ;;Y= (3.0 + 1.0) / (3.0 -5) 入れ子も可能
(:= *M (mod 4 1)) ;;4を1で割った余り
(:= *A (and 1 2)) //論理積
(:= *O (or 1 2)) //論理和
(:= *X (xor 1 2)) //排他的論理和
(:= *L (<< 3 1)) //3を左に1ビットシフト
(:= *R (>> 3 2)) //3を右に2ビットシフト
(:= *N (not 0)) //0の否定
述語名/引数 | (> 値1 値2) (< 値1 値2) (>= 値1 値2) (<= 値1 値2) |
要約 | 与えられた値の大小関係を比較し、成り立てば成功します。 |
互換性 | Win Unix |
解説 | 値には、整数、実数、文字列を指定できます。 文字列が指定された場合は辞書順に大小関係が決定します。漢字の場合は文字コードによって大小関係が決定します。 文字列と数値の比較は出来ません。 |
例:
(> "山川" "川中")
(>= 1 2.3)
(< 1 2)
述語名/引数 | (sqrt 数値 *X ) |
要約 | 与えられた数値の平方根を計算し結果を変数に代入します。 |
互換性 | Win |
解説 | *Xには実数が返ります。 |
例:
(sqrt 3 *X)
述語名/引数 | (rand *X ) |
要約 | 0から1までの乱数を発生します。 |
互換性 | Win Unix |
解説 | 述語srandの設定に基づいて生成される数は擬似乱数です。 |
例:
(as (main):(init)(random *r)(print *r))
(as (init):
(time *t)(srand *t)) ;システム時間から乱数テーブルを生成
(as (random *r):
(rand *w)(:= *r (x *w 100))) ;0から100までの乱数を生成
実行:
[D]>(main)
述語名/引数 | (srand 整数 ) |
要約 | 与えられた整数から乱数テーブルを作成します。 |
互換性 | Win Unix |
解説 | 通常プロセスの寿命の中で一度だけ実行されます。 |
例:
randの例を参照