May 26, 2007

ECMA-262试译:5.2 Algorithm

5.2 算法约定

本规范中常会用到一种标有数字序号的列表来详细指明一个算法的步骤。这些算法是用来说明语义的。实际操作中,具体实现可能会对给定的特 性给出更有效率的算法。

若算法要产生一个值作为结果,使用说明"返回 x"来指明算法的结果是 x 的值,此时算法结束。记法 Result(n) 被用作"第n步的结果" 的缩写。Type(x) 被用作"x的类型"的缩写。

加法、减法、取负、乘法、除法这些数学运算,以及这一节稍后定义的数学函数应被理解为总是使用实数做精确的数学计算,这不包括无穷大或 负零。本标准中的算法在适当的地方会建模浮点数运算,描述其步骤,处理无穷大和有符号零并进行舍入。如果数学运算或函数应用于一个浮点数,应被理解为应用 于此浮点数所代表的精确的数学值;比如,浮点数必须是有限的,若为+0或-0则简单地取与之相符的数学值0。

数学函数 abs(x) 返回 x 的绝对值,即如果 x 为负(小于零)则是 -x, 否则是 x 本身。

若为 x 正,数学函数 sign(x) 返回1;为负则返回-1。在本标准中,对于 x 为零的情况,不使用函数 sign。

记法"x modulo y"(y 必须为有限的非零值)计算 k 值,它与 y 同号(或同为零),使得 abs(k) < y) 且对于同样的整数 qx-k = q × y

数学函数 floor(x) 返回不大于 x 的最 大的整数(可接近正无穷)。

NOTE
floor(x) = x-(x modilo 1).
若定义一个"抛出异常"的算法,执行此算法结束后没有返回结果。调用这个算法,直到算法步骤到达了明确地处理这个异常的时候,此过程也会结束,处理异常的术语有"如果一个异常被抛出..."。一旦某个算法步骤遭遇异常,就不再认为此异常发生过。

2 comments:

氷の鋭 said...

输入错误:取模 应为 modulo

氷の鋭 said...

最后两句现译为:
"调用它的算法也会结束,除非算法步骤到达了明确地处理这个异常的地方,处理异常的术语有"如果一个异常被抛出..."等等。只要有一个算法步骤遭遇异常,就不再认为此异常发生过。"