SenseTalkにおける算術計算

SenseTalkでは、数学演算子だけでなく、各種コマンドおよび関数を使った数学演算を行うこともできます。演算子の使用については、のページで詳細をご覧ください。そちらでは、SenseTalkにおける式の使い方の基本について説明しているほか、個別の数学演算子(+、-、*、他)のページや比較および論理演算子といったその他の有用な概念のページにもリンクしています。

SenseTalkの算術コマンドおよび関数もまた、数値を扱う上で便利なツールです。

  • 算術コマンド:コンテナに格納された数値を変更するための算術コマンドを4つご紹介します。これらのコマンドが果たす算術機能は、+、-、*、/ 演算子と同じです。異なるのは、算術コマンドがオペランドの1つをコンテナから取り、計算結果を再びそのコンテナに格納する点です。
  • 算術関数:本セクションでは、数値演算を行う算術関数について説明します。これらの関数を使うと、さまざまな方法で数値を操作することができます。

算術計算に関連したトピックでは、点と矩形のところでSenseTalkが幾何学的な点と矩形の概念を理解する仕組みを説明しています。2つの数値のリスト、またはコンマで区切られた2つの数値から成るテキスト文字列は、点として扱うことができます。点と矩形のページで説明する関数を使うと、点または矩形のさまざまな成分値を抽出することが可能です。

算術コマンド

算術コマンドには次の4つがあります。

コンテナに格納された値を変更するときは、これらのコマンドをお使いください。これらのコマンドが果たす算術機能は、+、-、*、/ 演算子と同じです。異なるのは、算術コマンドがオペランドの1つをコンテナから取り、計算結果を再びそのコンテナに格納する点です。

addコマンド

挙動:addコマンドは、コンテナ内の値に数値を加算し、その合計でコンテナ内の値を置き換えるときに使用します。値のリスト同士の加算については、演算元と演算先のリストに含まれるアイテム数が同じであれば行えます。演算元リストの各アイテムが演算先コンテナの対応するアイテムに加算されます。NumExprは演算元の式です。数値でも公式でも、別のコンテナでも構いません。Chunkは、コンテナの部分(行/単語/アイテム/文字)を記述するチャンク式です。Containerは、任意のコンテナです。

構文:

add numExpr to {chunk of} container

例:

add amount to dollarsVariable

例:

add 37 to item 2 of line 3 of scores

例:

add speed * time to item 1 of distances

例:

add (10,5) to centerPoint

関連:subtractコマンド

subtractコマンド

挙動:subtractコマンドは、コンテナ内の値から数値を減算し、その結果でコンテナ内の値を置き換えるときに使用します。値のリスト同士の減算については、演算元と演算先のリストに含まれるアイテム数が同じであれば行えます。演算元リストの各アイテムが演算先コンテナの対応するアイテムから減算されます。NumExprは演算元の式です。数値でも公式でも、別のコンテナでも構いません。Chunkは、コンテナの部分(行/単語/アイテム/文字)を記述するチャンク式です。Containerは、任意のコンテナです。

構文:

subtract numExpr from {chunk of} container

例:

subtract checkAmt from accountBalance

例:

subtract 1 from property CountDown of gameController

例:

subtract rate * pmt from line 4 of amortization

例:

subtract (1,2) from boxDimensions

関連:addコマンド

multiplyコマンド

挙動:multiplyコマンドは、コンテナ内の値に別の数値を乗算し、その積でコンテナ内の値を置き換えるときに使用します。値のリスト同士の乗算は、演算元と演算先のリストに含まれるアイテム数が同じか、演算元が単一の値である場合に行えます。演算先コンテナの各アイテムが、演算元リストの対応するアイテムまたは演算元の単一値によって乗算されます。NumExprは演算元の式です。数値でも公式でも、別のコンテナでも構いません。Chunkは、コンテナの部分(行/単語/アイテム/文字)を記述するチャンク式です。Containerは、任意のコンテナです。

構文:

multiply {chunk of} container by numExpr

例:

multiply score by weightingFactor

例:

multiply accountBalance by 1 + interestRate

例:

multiply item 3 of line x of table by 2

関連:divideコマンド

divideコマンド

挙動:divideコマンドは、コンテナ内の値を別の数値で除算し、その商でコンテナ内の値を置き換えるときに使用します。値のリスト同士の除算は、演算元と演算先のリストに含まれるアイテム数が同じか、演算元が単一の値である場合に行えます。演算先コンテナの各アイテムが、演算元リストの対応するアイテムまたは演算元の単一値によって除算されます。NumExprは演算元の式です。数値でも公式でも、別のコンテナでも構いません。Chunkは、コンテナの部分(行/単語/アイテム/文字)を記述するチャンク式です。Containerは、任意のコンテナです。

構文:

divide {chunk of} container by numExpr

例:

divide score by totalCount

例:

divide item 1 of balances by 12

関連:multiplyコマンド

算術関数

数値の操作に使用するための関数です。

abs関数

挙動:数値パラメータの絶対値を返します。絶対値は、符号に関係のない数値の大きさであって、必ず正の値またはゼロになります。

構文:

the abs of 数値要素

abs(数値式)

例:

put abs(-11) -- 11を表示します

例:

if height is a negative number then put abs(height) into height

annuity関数

挙動:期間当たりの指定利率と期間数を基に、1単位の支払に伴う期末払い年金の現在値を計算します。

構文:

annuity(interest, periods)

例:

put annuity(1%, 32)

関連:compound関数

atan関数

挙動:ラジアンで表された角度のパラメータを三角法のアークタンジェントで返します。

構文:

the atan of 数値要素

atan(数値式)

例:

put atan(19) -- 1.518213を表示します

average関数

挙動:パラメータの平均を返します。numListに入るのは、任意の深さにネストされた、数値のリスト、コンマで区切られた数値のリストとして評価される式、またはこれらの組み合わせのいずれかです。

構文:

{the} average of numList

average(numList)

例:

put average(8, 10, 12) -- 10を表示します

例:

if the average of (x,y,z) is greater than z then

put "Z is below average!"

end if

関連:median関数

compound関数

挙動:指定の利率と期間数を基に、1単位の投資に対する元金と経過利子の合計を計算します。

構文:

compound(interest, periods)

例:

put compound(7,25%, 6) -- 1.521892を表示します

例:

put initialInvestment * compound(6.7%, 12) into currentValue

関連:annuity関数

cos関数

挙動:ラジアンで表された角度のパラメータを三角法のコサインで返します。

構文:

{the} cos of 数値要素

cos(数値式)

例:

put cos(18) -- 0.660317を表示します

cube root関数

挙動:パラメータの立方根を計算します。

構文:

put cube root(数値)

put the cube root of 数値

例:

put cube root (27)--3

例:

put the cube root of 8--2

exp関数

挙動:パラメータの自然指数(つまり、数学定数eのパラメータ乗)を返します。

構文:

{the} exp of 数値要素

exp(数値式)

例:

put exp(2) -- 7.389056

exp1関数

挙動:パラメータの自然指数よりも1少ない値(つまり、数学定数eのパラメータ乗マイナス1)を返します。

構文:

{the} exp1 of 数値要素

exp1(数値式)

例:

put expl(2) -- 6.389056

exp2関数

挙動:2のパラメータ乗を返します。

構文:

{the} exp2 of 数値要素

exp2(数値式)

例:

put exp2(8) -- 256

frac関数

挙動:数値の小数部を返します。値の整数部を取得するときは、trunc()関数を使用します。trunc()およびfrac()関数の定義としては、trunc(x) + frac(x)が常にxに等しくなります。

構文:

{the} frac of 数値要素

frac(数値式)

例:

put frac(81.236) -- .236

関連:trunc関数

ln関数

挙動:パラメータの自然対数を返します。

構文:

{the} ln of 数値要素

ln(数値式)

put ln(2) -- 0.693147

ln1関数

挙動:パラメータプラス1の自然対数を返します。

構文:

{the} ln1 of 数値要素

ln1(数値式)

例:

put ln1(2) -- 1.098612

log2関数

挙動:パラメータの底2の対数を返します。

構文:

{the} log2 of 数値要素

log2(数値式)

例:

put log2(256) -- 8

maximummaxhighestValuelargestValue関数

挙動:リストから最高値を返します。maximum関数は、maxと省略しても構いません。numListに入るのは、任意の深さにネストされた、数値のリスト、コンマで区切られた数値のリストとして評価される式、またはこれらの組み合わせです。

構文:

{the} max{imum} of numList

max{imum}(numList)

例:

put max(4, 6, 5, 7, 3) -- 7

例:

if the maximum of (x,y,z) is z then

put "Z is the greatest!"

end if

例:

put largestValue of (2,23,45,76) --76

例:

put highestValue of (3,9,13,21,42) --42

関連:minimum関数

median関数

挙動:パラメータの中央(中間値)、または2つの中間値の平均を返します。numListに入るのは、任意の深さにネストされた、数値のリスト、コンマで区切られた数値のリストとして評価される式、またはこれらの組み合わせのいずれかです。numListに含まれる数値が奇数個の場合は、ソートした数値リストの中央の値がmedianとなり、偶数個の場合は、2つの中間値の平均がmedianとなります。

構文:

{the} median of numList

median(numList)

例:

put median(1, 8, 9, 12) -- 8

例:

put the median of "2,7,8,10" -- 7.5

関連:average関数

minimumminlowestValuesmallestValue関数

挙動:リストから最低値を返します。minimum関数は、minと省略しても構いません。numListに入るのは、任意の深さにネストされた、数値のリスト、コンマで区切られた数値のリストとして評価される式、またはこれらの組み合わせです。

構文:

{the} min{imum} of numList

min{imum}(numList)

例:

put min(4,6,5,7,3) -- 3

例:

if the min of (x,y,z) is z then put "Z is the smallest!"

例:

put lowestValue of (3,9,13,21,42) --3

例:

put smallestValue of (9,13,21,56,72) --9

関連:maximum関数

random関数

挙動:1からパラメータ値までの間、または2値間でランダムに生成された整数を返します。

構文:

{the} random of 数値要素

random(数値式 {, 第2式} )

例:

put random(12) -- 1~12の任意の数値を返します

例:

put random(20,30) -- 20以上30以下の値を1つ取得します

例:

put (random(100) / 100) into randomPercentage

関連:reset randomコマンド

reset randomコマンド

挙動:random関数やSenseTalkがランダムな選択を行うときに必ず使用される乱数ジェネレータのシーケンスをリセットします。乱数ジェネレータに特定のシード式の値を設定すると、「ランダム」イベントの繰り返し可能なシーケンスを得ることができます。これは、テスト用途において非常に便利です。予測不能なシーケンスを得る場合は、シード値なしでreset randomコマンドを使用します。

構文:

reset random {{with | from} {seed} シード式}

例:

reset random with seed 27

例:

reset random

例:

reset random 2

repeat 10 times

put 1..10 into NumberRange

put any item of NumberRange into ReplaceitemNumber

log ReplaceitemNumber // この1行目のようにreset random [#]を使用すると、ループを実行するたびに同じリストが返されます。
[#]には任意のシード数を入れることができます。

// 1行目の「reset random 2」をコメントアウトして、複数回にわたりrepeatループを実行すると、ループを実行するたびに異なるリストが返されます。

end repeat

round関数

挙動:パラメータの値を最も近い整数に四捨五入して返します。オプションの第2パラメータを与えると、四捨五入する小数位の数を指定することができます。位の数を負にすると、小数点より左側で四捨五入されます。

構文:

{the} round of 数値要素

round(数値式, 小数位)

例:

put round(6.5) -- 7

例:

put round(6.49) -- 6

例:

put round(6.49 , 1) -- 6.5

例:

put round(2389 , -2) -- 2400

関連:

roundToNearest関数

挙動:第1パラメータの値を最も近い第2パラメータの整数倍に四捨五入して返します。

構文:

roundToNearest(数値式, 最近値用の倍数)

例:

put roundToNearest(643,100) -- 600

例:

put roundToNearest(643,25) -- 650

関連:

sin関数

挙動:ラジアンで表された角度のパラメータを三角法のサインで返します。

構文:

{the} sin of 数値要素

sin(数値式)

例:

put sin(18) -- -0.750987

square rootsqrt関数

挙動:パラメータの平方根を返します。

構文:

{the} square root of 数値要素

{the} sqrt of 数値要素)

sqrt(数値式)

例:

put sqrt(16) -- 4

例:

put the square root of nine -- 3

sum関数

挙動:パラメータの合計を返します。numListに入るのは、任意の深さにネストされた、数値のリスト、コンマで区切られた数値のリストとして評価される式、またはこれらの組み合わせです。

構文:

{the} sum of numList

sum(numList)

例:

put sum("8,1", (10,11), 12) -- 42を表示します

例:

if the sum of (x,y,z) is more than 100 then

put "The sum exceeds 100"

end if

tan関数

挙動:ラジアンで表された角度のパラメータを三角法のタンジェントで返します

構文:

{the} tan of 数値要素

tan(数値式)

例:

put tan(18) -- -1.137314

trunc関数

挙動:数値を切り捨てて、小数部は破棄し、パラメータの整数部を返します。値の小数部を取得するときは、frac関数を使用します。trunc()およびfrac()関数の定義としては、trunc(x) + frac(x)が常にxに等しくなります。

構文:

{the} trunc of 数値要素

trunc(数値式)

例:

put trunc(6.8) -- 6

例:

put trunc(6.49) -- 6

関連:frac関数

 

This topic was last updated on 2月 01, 2019, at 11:13:23 午前.

Eggplant icon Eggplant.io | Documentation Home | User Forums | Support | Copyright © 2019 Eggplant