数学演算子
SenseTalkは、数多くの数学演算子を提供します。以下で概要を説明します。
+
, Plus
演算子
動作: 二つの数字または数字のリストを足します。
構文:
operand1 + operand2
operand1 plus operand2
例:
put 12 + 97 into someSum
例:
put a squared plus b squared into sumOfSquares
例:
put [12,8] + [4,7] into vectorSum
-
, Minus
演算子
動作: 一つの数字または数字のリストから別の数字またはリストを引きます。日付/時間から別の日付/時間を引くと、その差分が秒単位の時間間隔として与えられます。
構文:
operand1 - operand2
operand1 minus operand2
例:
put c^2 - sumOfSquares into difference
例:
put (1,3,5,6) - (1,1,0,2) into diffList
*
, Times
, Multiplied By
演算子
動作: 二つの数値やリストを掛け算します、またはリストをスカラーで掛け算します。等しい長さの二つのリストを使って使用すると、結果は二つのリストの対応する要素の積の一連のものになります。一つのオペランドがリストで、もう一つが単一(スカラー)の値である場合、結果は、各元のリストの要素をスカラー値で掛け算した値のリストになります。
構文:
operand1 * operand2
operand1 times operand2
operand1 multiplied by operand2
例:
put 2 * radius into diameter
例:
put pi times diameter into circumference
例:
put [1,2,3,4] * [2,2,1,3]-- result is [2,4,3,12]
例:
put [1,2,3md ,4] * 4 -- result is [4,8,12,16]
例:
put 7 multiplied by 3 -- result is 21
/
, Divided By
演算子
動作: 一つの数字またはリストを別の数字またはリストで割ります、またはリストをスカラーで割ります。結果は、全数でない可能性のある商になります。これをdiv
演算子と比較してください、これは全数を生成します。等しい長さの二つのリストを使って使用すると、結果は二つのリストの対応する要素の商の一連のものになります。最初のオペランドがリストで、二つ目が単一(スカラー)の値である場合、結果は各リスト要素をスカラー値で割った値のリストになります。第二のオペランドがゼロである場合、この演算子はinfinity
(無限大)、表示されるとInf
の値を返します。無限の値を他の計算で使用すると、一般的 に予想される結果が得られます。
構文:
operand1 / operand2
operand1 divided by operand2
例:
put pi / 2 into halfPi
例:
put [1,2,3,4] / [2,1,1,2] -- result is [0.5,2,3,2]
例:
put [2,4,5,8] / 2 -- Result is [1,2,2.5,4]
^
, To The Power Of
, Squared
, Cubed
演算子
動作: 数値を指定したべき乗にします。
構文: オペランド1 ^ オペランド2 オペランド1 to the power of オペランド2 オペランド1 squared オペランド1 cubed
例:
put a squared + b squared into sumOfSquares
例:
put 6 * x^4 - 2 * y^3 into z
%
, Percent
演算子
動作: 数値をパーセンテージとして扱ったり、追加や割引のパーセンテージを計算します。簡単な形式では、%
は値の後に続き、その値を100で割る(したがって、6%
は.06
と同じです)。しかし、%
が+
または-
演算子の後に使用される場合、その演算子の左側の値の対応するパーセンテージが指定されたパーセンテージ分増加または減少します。
構文: factor % factor percent value [ + | - | plus | minus ] factor [ % | percent ]
例:
put 4% -- .04
例:
put 50 * 4% -- 2
例:
put 50 + 4% -- 52
例:
put 50 - 4% -- 48
例:
put sales plus ten percent into projectedSales
Div
演算子
動作: 1つの数値を別の数値で割り、結果を整数で返します。同伴のrem
演算子は、そのような操作の余りを見つけるために使用できます。ゼロでの除算は、結果としてInf
を生じます。
構文: operand1 div operand2
例:
put cookieCount div numberOfPeople into cookiesForEach
Rem
演算子
動作: 除算の整数の余りを計算します。これはdiv
演算子の補完です。rem
演算子の結果は常にその最初のオペランドと同じ符号を持ちます。
構文: operand1 rem operand2
例:
put cookieCount rem numberOfPeople into extrasForMe
Modulo
, Mod
演算子
動作: 数学的なモジュロ演算を行います。ある数が別の数の次に低い偶数の倍数を超える量を得ます。modulo
演算子はrem
演算子とは異なり、整数の除算の余りを与えます。両方のオペランドが正の整数である場合、rem
とmodulo
は同じ結果をもたらします。しかし、負の数や非整数の値は、2つの演算子によって大きく異なる方法で扱われます。
構文: operand1 modulo operand2 operand1 mod operand2
例:
put someValue mod modulusValue into extrasForMe
Is a Multiple Of
, Is Divisible By
演算子
動作: これらの演算子は一つの数が他の数の正確な倍数であるかどうかをチェックします。つまり、一つを他の数で割った結果が余りのない整数になるかどうかをチェックします。
構文: value is {not} {a | an} {exact | even} multiple of divisor value is {not} {exactly | evenly} divisible by divisor
例:
put 2895 is a multiple of 5-- true
例:
put 169 is divisible by 13 -- true
例:
put 98.6 is an exact multiple of 3.14-- false
例:
もしcookieCountがnumberOfPeopleでちょうど割り切れるなら "Hooray!" を出力する
Rounded To
, Rounded to Nearest
演算子
振る舞い: 値を小数点以下の桁数、または別の値の最近傍倍数に丸めます。また、単位名、または単位名の値を持つ変数にも丸めることができます。これらの演算子は、round()
関数とroundToNearest()
関数を呼び出すための代替構文を提供します(算術計算を参照)。
構文:
値 を 小数点以下の桁数 {{まで}} に丸める
値 を {最} 近傍の {倍数に} 最近傍の倍数 まで丸める
値 を {最} 近傍の 単位 まで丸める
例:
put 123.4567を2桁まで丸める-- 123.46
例:
put 123.4567を-1の小数点以下の桁数まで丸める-- 120
例:
put 98.6を3.14の最近傍の倍数まで丸める-- 97.34
例:
put totalを最近傍の.25まで丸めてamountDueに入れる
例:
put 12.345メートルを最近傍のフィートまで丸める — 41フィート
But at Least
, But No Less Than
, But At Most
, But No More Than
演算子
振る舞い: 数値を最小値または最大値に制限します。
構文:
数値 最低でも 値
数値 少なくとも 値
数値 最大 でも 値
数値 多くても 値
例:
set highScoreをスコアの中の最大値に設定するが、最大でも100
例:
set lowScoreをrawScore - 9に設定するが、少なくともゼロ
例:
set volumeをmyVolumeに設定するが、多くても11
例:
set roomCapacityをsizeLimitに設定するが、最低でも123
BitNot
, BitAnd
, BitOr
, BitXOr
, BitShift
演算子
振る舞い: 数値の各ビットに対して演算を行います。オペランドは64ビット以下の整数として扱われます。設定は the bitLength
グローバルプロパティによって行われます。
BitNot
: 数値の各ビットを反転させます。0は1に、1は0になります。BitAnd
: _オペランド1_の各ビットと_オペランド2_の対応するビットを比較し、結果のビットを生成します。両方のビットが1の場合、結果は1、それ以外の場合、結果は0です。BitOr
: _オペランド1_の各ビットと_オペランド2_の対応するビットを比較し、結果のビットを生成します。- 両方のビットが0の場合、結果は0。
- どちらか一方または両方のビットが1の場合、結果は1。
BitXOr
: _オペランド1_の各ビットと_オペランド2_の対応するビットを比較し、結果のビットを生成します。- 両方のビットが0または1の場合、結果は0。
- ビットが1つだけの場合、結果は1。
BitShift
演算子: 数値のすべてのビットを指定したビット数だけ右または左にシフトします。right
またはleft
が指定されていない場合:- 正の数はビットを右にシフトします。
- 負の数はビットを左にシフトします。
構文:
bitNot {of} オペランド
オペランド1 と オペランド2 のbitAnd
オペランド1 と オペランド2 のbitOr
オペランド1 と オペランド2 のbitXOr オペランド bitShift {左 | 右} シフト量
例:
set the numberFormatを "binary8"に設定 // 数値を8桁の二進数で表示
put bitNot 0b00011011 —> 0b11100100
put 0b00010101 bitAnd 0b00111100 —> 0b00010100
put 0b00010101 bitOr 0b00111100 —> 0b00111101
put 0b00010101 bitXOr 0b00111100 —> 0b00101001
put 0b00010101 bitShift 左に 2 —> 0b01010100
Bit
式、Bit
関数
振る舞い: 数値内の個々のビットにアクセスしたり、設定することができます。ソース値は64ビット以下の整数として扱われます。設定は the bitLength
グローバルプロパティによって行われます。
bit
式は _コンテナ_で、次のようなことができます:
- 数値内の個々のビットの値を取得します。
0
または1
、True
またはFalse
。 sourceValue
が変数または他のコンテナである場合、数値内の個々のビットの値を0
または1
、On
またはOff
、Yes
またはNo
、True
またはFalse
に設定します。
64ビット数値では、ビット1は低位ビットで、ビット64は高位ビットです。
また、bit
式をブーリアンとしても使用できます。例えば、if
文の条件として使用します。
構文:
bit
式、またはbit
関数構文(括弧付き)を使用します。
bit ビット番号 の ソース値
bit( ビット番号 ) の ソース値
ソース値 .bit( ビット番号 ) ソース値's bit( ビット番号 )
例:
put bit 3 の 0b100110 —> 1
if bit(1) の 543 なら put "It's an odd number!" —> It's an odd number!
set flagsを 0b100000に設定
put flags.bit(2) —> 0
set flags.bit(2)を yesに設定
turn on bit 3 の flags
put flags —> 0b100110