メインコンテンツまでスキップ

SenseTalkの算術計算

SenseTalkでは、数学的な演算子やさまざまなコマンドや関数を使用して数学的な操作を実行することができます。演算子の使用方法についての詳細な情報は、Expressions ページを参照してください。このページではSenseTalkで表現を使用する基本的な方法を説明し、特定の数学演算子(+、-、*、その他の演算子)と比較や論理演算子などの他の有用な概念について説明するページへのリンクがあります。

SenseTalkの算術コマンドと関数は、数値を操作するための便利なツールを提供しています。算術コマンドは、コンテナに格納された数値を変更するために使用できます。これらのコマンドは+、-、*、/の演算子と同じ算術関数を実行します。違いは、これらのコマンドがオペランドの一つをコンテナから取り出し、計算結果をそのコンテナに戻すことです。算術関数は数値を操作します。これらの関数を使用して、さまざまな方法で数値を操作することができます。

算術計算に関連する話題であるPoints and Rectanglesでは、SenseTalkが幾何学的な点と矩形の概念をどのように理解しているかについて説明しています。任意の2つの数のリスト、またはコンマで区切られた2つの数からなるテキスト文字列は、点として扱うことができます。Points and Rectanglesのページで説明されている関数は、点や矩形の各成分値を抽出するために使用できます。

算術コマンド

算術コマンドは4つあります:

これらを使用して、コンテナに格納された値を変更します。これらのコマンドは+、-、*、/の演算子と同じ算術関数を実行します。違いは、これらのコマンドがオペランドの一つをコンテナから取り出し、計算結果をそのコンテナに戻すことです。

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 コマンドは、コンテナ内の値から数値を引く場合に使用します。結果によりコンテナ内の値を置き換えます。値のリストを引くことができますが、ソースリストと宛先リストの両方が同じ数のアイテムを含んでいる必要があります。ソースリストからの各アイテムは、宛先コンテナの対応するアイテムから引かれます。 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

関連項目:

Multiply コマンド

動作: multiply コマンドは、コンテナ内の値を別の数値で掛ける場合に使用します。結果によりコンテナ内の値を置き換えます。値のリストを掛けることができますが、ソースリストと宛先リストの両方が同じ数のアイテムを含んでいる、またはソースが単一の値であることが必要です。宛先コンテナの各アイテムは、ソースリストの対応するアイテム、またはソース値で掛けられます。 NumExpr はソース表現です。これは数値、任意の数式、または他のコンテナであることができます。 Chunk は、コンテナの一部を説明するチャンク表現です(行、単語、アイテム、または文字)。 Container は任意のコンテナです。

md 構文:
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 コマンドは、コンテナ内の値を別の数値で除算する場合に使用します。結果によりコンテナ内の値を置き換えます。値のリストを除算することができますが、ソースリストと宛先リストの両方が同じ数のアイテムを含んでいる、またはソースが単一の値であることが必要です。宛先コンテナの各アイテムは、ソースリストの対応するアイテム、またはソース値で除算されます。 NumExpr はソース表現です。これは数値、任意の数式、または他のコンテナであることができます。 Chunk は、コンテナの一部を説明するチャンク表現です(行、単語、アイテム、または文字)。 Container は任意のコンテナです。

文法:
divide {chunk of} container by numExpr

例:

divide score by totalCount

例:

divide item 1 of balances by 12

文法:

算術関数

これらの関数を使用して数値を操作します。

abs of numFactor

動作: 数値パラメータの絶対値を返します。絶対値はその数値の大きさであり、その符号に関わらず常に正またはゼロです。

構文: the abs of numFactor
abs( numExpr )
numFactor as a positive number
numFactor as a negative number

例:

put abs(-11) -- 11を表示

例:

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

例:

put (3 - 16) as a positive number --> 13

例:

put 500 as a negative number --> -500

関連: annuity関数

動作: 指定された期間ごとの利息率と期間数に基づき、一単位の支払いを伴う普通年金の現在価値を計算します。

構文: annuity( interest, periods )

例:

put annuity(1%, 32)

文法:

ATan関数

動作: パラメータの逆三角関数をラジアンで表現した角度として返します。

構文: the atan of numFactor
atan( numExpr )

例:

put atan(19) -- 1.518213を表示

文法:

abs 関数

動作: パラメータの平均を返します。 _numList_は、数値のリスト、カンマで区切られた数値のリストを評価する式、またはこれらの組み合わせを任意の深さでネストしたものであることができます。

[**構文:**md {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

文法:

関連: compound関数

動作: 指定された利率と期間に基づいて、1単位の投資に対する元本プラス利息を計算します。

構文: compound( interest, periods )

例:

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

例:

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

文法:

cos( numExpr )

動作: パラメータの三角関数コサインを返します。このパラメータはラジアンで表現される角度です。

構文: {the} cos of numFactor
cos( numExpr )

例:

put cos(18) -- 0.660317を表示

文法:

Cube Root関数

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

構文:
cube root( number )
{the} cube root of number

例:

put cube root (27)--3

例:

put the cube root of 8--2

文法:

abs( numExpr )

動作: パラメータの自然指数(つまり、数学定数eをパラメータの冪に上げたもの)を返します。

構文:
{the} exp of numFactor
exp( numExpr )

例:

put exp2(8) -- 256

文法:

exp1( numExpr )

動作: パラメータの値を最も近い整数に四捨五入して返します。オプションで第二パラメータを提供することで、四捨五入する小数点以下の桁数を指定することができます。負の桁数は小数点の左側で四捨五入します。

Syntax:
{the} exp1 of numFactor
exp1( numExpr )

例:

put expl(2) -- 6.389056

文法:

exp2( numExpr )

動作: パラメータに1を加えた自然対数を返します。

Syntax:
{the} exp2 of numFactor
exp2( numExpr )

例:

put exp(2) -- 7.389056

文法:

関連項目: frac 関数

動作: 数値の小数部分を返します。値の整数部分を取得するには trunc 関数を使用します。trunc(x) + frac(x) は常に x と等しいように truncfrac 関数が定義されています。

Syntax:
{the} frac of numFactor
frac( numExpr )

例:

put frac(81.236) -- .236

文法:

ln( numExpr )

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

Syntax:
{the} ln of numFactor
ln( numExpr )

例:

put ln(2) -- 0.693147

文法:

{the} ln1 of numFactor

動作: パラメータの自然指数の1引いたものを返します(つまり、数学定数eをパラメータの冪に上げ、1を引いたもの)。

Syntax:
{the} ln1 of numFactor
ln1( numExpr )

例:

put ln1(2) -- 1.098612

文法:

log2( numExpr )

動作: パラメータのベース2の対数を返します。

Syntax:
{the} log2 of numFactor
log2( numExpr )

例:

put log2(256) -- 8

文法:

Maximum, Max, HighestValue, LargestValue 関数

動作: リストから最大の数を返します。maximum 関数は max として省略することができます。numList は数値のリスト、カンマで区切られた数値のリストに評価する式、またはこれらの組み合わせで、任意の深さにネストすることができます。

Syntax:
{the} [max | maximum | highest value | largest value] of numFactor
[max | maximum | highestValue | largestValue]( numExpr )

例:

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

文法:

Median 関数

動作: パラメータの中央値(中間の値)または2つの中間値の平均を返します。numList は数値のリスト、カンマで区切られた数値のリストに評価する式、またはこれらの組み合わせで、任意の深さにネストすることができます。numListが奇数の数を含む場合、中央値は数値リストの中央値です。そうでなければ、それは2つの中央値の平均です。

Options:
{the} median of numList median( numList )

例:

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

例:

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

文法:

Minimum, Min, LowestValue, SmallestValue 関数

動作: リストから最小の数を返します。minimum 関数は min として省略することができます。numList は数値のリスト、カンマで区切られた数値のリストに評価する式、またはこれらの組み合わせで、任意の深さにネストすることができます。

構文:
{the} [min | minimum | lowestValue | smallestValue] of numList [min | minimum | lowestValue | smallestValue]( 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

文法:

round( numExpr {, decimalPlaces} )

{the} random of numFactor

Syntax:
{the} {daily | weekly | monthly | quarterly | yearly | annual} payment on {a} {loan of} principal {loan} at {a rate of} rate {interest} for {a term of} term { {with} [ [payments | paid] frequency | frequency payments] }
payment( loanProperties )
payment( principal, rate, term {, frequency} )

もし_loanProperties_がプロパティリストとして与えられた場合、以下を含める必要があります:

  • sum( numList )
  • annuity( interest, periods )
  • sqrt( numExpr )
  • frac( numExpr )

もし_principal_が特定の通貨の単位で与えられた場合、返される支払金額も同じ単位になります。もし_term_が期間の単位で指定され、_frequency_が省略された場合、期間の単位が支払いの頻度として使用されます。

例:

put payment(amount:$1000, rate: 6.5% per year, term:60 months) --> $19.566148
put payment($10000,7.5%,60,"months") --> $200.379486

例:

put the monthly payment on a ten thousand dollar loan at 4.5% yearly for 10 years --> $103.638409
put payment on a loan of $50000 at 7 percent interest for 60 months rounded to 2 places --> $990.06

文法:

random( numExpr {, secondExpr} )

動作: パラメータの値と1の間、または二つの値の間でランダムに生成された整数を返します。

Syntax:
{the} random of numFactor
random( numExpr {, secondExpr} )

例:

put random(12) -- returns any number from 1 to 12

例:

put random(20,30) -- gets a number from 20 to 30, inclusive

例:

put (random(100) / 100) into randomPercentage

文法:

関連項目: Reset Random Command

動作: random 関数やSenseTalkがランダムに物を選択するたびに使用するランダム数生成器のシーケンスをリセットします。ランダム数生成器の特定の seedExpr 値を設定することで、"ランダム"イベントの反復可能なシーケンスを得ることができます。これはテスト目的に非常に便利です。シード値なしで reset random コマンドを使用すると、予測不可能なシーケンスを得ることができます。

Syntax:
reset random {{with | from} {seed} seedExpr}

例:

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 // Using reset random [#] as shown in line 1 results in the same list every time you run the loop.[#] can be any seed number.
// Commenting out "reset random 2" in line 1 and running the repeat loop multiple times results in a different list every time you run the loop.
end repeat

文法:

Round関数

動作: パラメータの三角法的な正接を返します。パラメータはラジアンで表される角度です。

構文:
{the} round of numFactor
round( numExpr {, decimalPlaces} )

例:

put round(6.5) -- 7

例:

put round(6.49) -- 6

例:

put round(6.49 , 1) -- 6.5

例:

put round(2389 , -2) -- 2400

文法:

RoundToNearest 関数

動作: 第一パラメータの値を第二パラメータの最も近い全体の倍数に四捨五入して返します。

Syntax:
roundToNearest( numExpr, nearestMultiple ) numExpr rounded to {the} nearest nearestMultiple

例:

put roundToNearest(643,100) -- 600

例:

put roundToNearest(643,25) -- 650

例:

put 12.16 rounded to the nearest multiple of .25 --> 12.25

文法:

{the} sin of numFactor

動作: パラメータの三角法的な正弦を返します。パラメータはラジアンで表される角度です。

構文:
{the} sin of numFactor
sin( numExpr )

例:

put tan(18) -- -1.137314

文法:

Square Root , SqRt 関数

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

構文:
{the} [square root | sqrt] of numFactor sqrt( numExpr )

例:

put sqrt(16) --> 4

例:

put the square root of nine --> 3

文法:

Sum 関数

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

Syntax:
{the} sum of numList
sum( numList )

stk-syntax-definition.md

put sum("8,1", [10,11], 12) -- shows 42

stk-syntax-definition.md

if the sum of [x,y,z] is more than 100 then
put "The sum exceeds 100"
end if

文法:

Tan 関数

動作: パラメータの冪に2を上げたものを返します。

[**構文:**md {the} tan of numFactor
tan( numExpr )

stk-syntax-definition.md

put sin(18) -- -0.750987

文法:

Trunc 関数

動作: 数字を切り捨てて、パラメータの整数部分を返し、分数部分を破棄します。値の分数部分を取得するには、frac 関数を使用します。trunc(x) + frac(x)は常にxと等しいと定義されているtruncfrac関数。

[**構文:**md {the} trunc of numFactor
trunc( numExpr )

文法:

put trunc(6.8) -- 6

文法:

put trunc(6.49) -- 6

文法: