訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
その(アルゴリズムの)仕様は、よく、某アルゴリズム内で手順を指定する為に番号付きリストを使用します。 これらのアルゴリズムは、ECMAScript言語の構築の構文を要求する指定を明確にする為に使用されます。 そのアルゴリズムとは、任意の特定の実装技術の仕様の利用を暗に意図しているわけではありません。 実際には、与えられた機能を実装するために利用できる、より効率的なアルゴリズムがあるかもしれません。 この仕様の複数の部分での利用を促進する為に、抽象操作と呼ばれる何らかのアルゴリズムは、名前付けされ、他のアルゴリズム内から名称によって参照される場合がある為、パラメータ機能の形式で書かれます。 任意のアルゴリズムが、結果としての値を生成する為にある場合には、その指示 "return x" は、そのアルゴリズムの結果が x という値であり、そのアルゴリズムが終端とすべきであることを示す為に使用されます。 表記法 Result(n) は、「手順 n の結果」における略記として使用されます。 式の明確化の為、アルゴリズムの手順は、順序だった小手順(サブステップ)に細分化される場合があります。 サブステップが示され、さらにそれら自身がインデントしたサブステップの中で細分化される場合もあります。 番号付け規則の概要としては、まず、1番めのサブステップのレベルは、アルファベット小文字でラベルづけ、2番めのサブステップのレベルは小文字のローマ数字でラベルづけといったようにサブステップを識別する為に使用されます。 もし、3レベル以上が要求される場合、これらのルールは、数値ラベルを使って4番めのレベルでといった具合に繰り返します。
[例] 1. トップレベルステップ a. サブステップ b. サブステップ i. サブサブステップ ii. サブサブステップ 1. サブサブサブステップ a サブサブサブサブステップ ...etc.
あるステップやサブステップは、そのサブステップの条件である述部 "if" として書かれる場合があります。 このケースでは、サブステップは、述部が真である場合に限り適用されます。 もし、あるステップやサブステップが単語を伴って始まる場合には、もし、他にあれば、述部の否定である述部であり、更にもし、あれば、それは同一レベルにある述部ステップです。 あるステップは、そのサブステップの反復アプリケーションを指定する場合があります。 あるステップは、そのアルゴリズムの不変の条件をアサート(主張)する場合があります。 そのような主張は、明示的に不変条件のアルゴリズムを作る為に利用され、そうでなければ暗黙的に作られます。 そのような主張は、追加のセマンティック要件を追加しません、したがって、実装によってチェックされる必要はありません。 それらは単にアルゴリズムを明確にする為に利用されます。 加算、減算、否定、乗算、除算といったような数学的演算、更に、この項の中で後に定義する数学関数は、正のゼロとして認識される無限大と負のゼロを含まない数学的なリアルな値として数学的結果を正確に計算する際に常に理解されるべきです。 浮動小数点演算というモデルである標準的なアルゴリズムは、無限大、符号付きゼロ、丸め処理実行の為に必要に応じた明示的な手順を含みます。 もし、数学演算や関数が浮動小数点数を適用される場合には、それは、浮動小数点数を無限大にしなければならないとか、もし、+0とあれば、それは数学的には単に0と一致するというように浮動小数点数を適用されるものとして理解されなければいけません。 数学関数 abs(x) は、x の絶対値を得ることができ、x が(ゼロより小さい)負である場合は -x 、それ以外の場合には、その値は、x それ自身です。 数学関数 sign(x) は、 x が正なら1を生成し、負なら-1を生成します。 sign 関数は、x がゼロというケースにおいては、この標準では利用されません。 表記(moduloは剰余)
x modulo y
(yは有限でゼロでなければならない)は、ある整数 q において
abs(k) < abs(y)
と
x-k = q´y
のように y (または、ゼロ)として同一の符号の値 k を算出します。 数学関数 floor(x) は、x より大きくない(正の無限大に最も近い)最大の整数を返します。 [注] floor(x) = x-(x modulo 1) もし、あるアルゴリズムが例外を投げる(スローする)為に定義される場合には、アルゴリズムの実行が終端であり、返される結果はありません。 アルゴリズムを呼ぶこと自体もまた、アルゴリズムの手順が、「もし、例外が投げられ(スローされ)た場合...」というような専門用語を使うことによって例外として明示的に扱うようなところまで達しない限り、終端であるものとされています。 一度、そのような例外に遭遇してしまったアルゴリズムの手順は、もはや、そうした例外が現れていることすら考慮されなくなります。