算法約定

2018-06-16 14:09 更新

此規(guī)范通常使用帶編號的列表來指定算法的步驟。這些算法是用來精確地指定 ECMAScript 語言結(jié)構(gòu)所需的語義。該算法無意暗示任何具體實現(xiàn)使用的技術(shù)。在實踐中,也許可用更有效的算法實現(xiàn)一個給定功能。


為了方便其使用本規(guī)范的多個部分,叫做 抽象操作 (abstract operations) 的一些算法編寫成帶名稱的可傳參函數(shù)化形式,所以在其他算法里可以通過名稱引用它們。


當一個算法產(chǎn)生返回值 ,“return x” 指令說明該算法的返回值是 x,并且算法應(yīng)該終止?!暗?n 步的結(jié)果”的簡寫是 Result(n) 。


為了表達清晰,算法的步驟可細分為有序的子步驟。子步驟被縮進,可以將自身進一步劃分為縮進子步驟。大綱編號約定用于識別分步驟,第一層次的子步驟適用小寫字母標記,第二層次的子步驟使用小寫羅馬數(shù)字標記。如果需要超過三個層次,則重復(fù)這些規(guī)則,第四層次使用數(shù)字標記。例如 :

  1. Top-level step
        Substep.
        Substep
            Subsubstep.
            Subsubstep.
                Subsubsubstep
                    Subsubsubsubstep


步驟或子步驟可寫“if”謂詞作為它的子步驟的條件。在這種情況下,當謂詞為真時子步驟才適用。如果一個步驟或子步驟由單詞“else”開始,那么它是一個謂詞,否定前面的同一層級的“if”謂詞。


步驟可以表示其子步驟的迭代應(yīng)用可能指定其子步的迭代應(yīng)用程序。


步驟可能斷言其算法中的某一不變條件。這樣的斷言可以讓算法中隱含的不變條件變成顯式的。這種斷言不會添加額外的語義要求,實現(xiàn)沒有一定去檢查的必要性。它們只是用來讓算法更清晰。


數(shù)學(xué)運算,如加法,減法,取反,乘法,除法,還有稍后在本節(jié)中定義的數(shù)學(xué)函數(shù)應(yīng)該總是被理解為對數(shù)學(xué)實數(shù)計算精確的數(shù)學(xué)結(jié)果,其中不包括無窮大,不包括負零區(qū)別于正零。本標準中的浮點運算算法模型,包括明確的步驟,在必要情況下處理無窮大和有符號零和執(zhí)行四舍五入。如果一個數(shù)學(xué)運算或函數(shù)應(yīng)用一個浮點數(shù),它應(yīng)該被應(yīng)用為代表此浮點數(shù)的確切的數(shù)學(xué)值,一個浮點數(shù)必須是有限的 ,如果是 +0 或 -0 ,則相應(yīng)的數(shù)學(xué)值就是 0。


數(shù)學(xué)函數(shù) abs(x) 產(chǎn)生 x 的絕對值,如果 x 是負數(shù)(小于零),它是這是 - x,否則是 X 本身。


如果 x 是正數(shù),數(shù)學(xué)函數(shù) sign (x) 產(chǎn)生 1,如果 x 是負數(shù)產(chǎn)生 - 1。此標準中 x 為零的情況下不使用 sign 函數(shù)。


符號 “x modulo y” (y 必須有限且非零 ) 計算一個滿足以下條件的 k 值 ,與 y 同號 ( 或是零 ) ,abs(k) < abs(y) ,對一些整數(shù) q 滿足 x?k = q × y。


數(shù)學(xué)函數(shù) floor(x) 產(chǎn)生不大于 x 的最大整數(shù)(最大可為正無窮)。



注:floor(x) = x?(x modulo 1).


如果算法定義“拋出一個異?!保惴ǖ膱?zhí)行將被終止,且沒有返回結(jié)果。已調(diào)用的算法也被終止,直到算法步驟使用術(shù)語“如果一個異常被拋出 ...”明確指出異常處理。一旦遇到這種算法步驟,異常將不再被視已發(fā)生過。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號