沃斯對程式的定義分成兩部分,分別是:演算法和資料結構。演算法集中地反映了電腦執行的過程,資料結構是大批資料之間的構造關係,針對所處理的對象,設計好資料結構可大幅簡化演算法。
本教學操作環境:windows7系統、Dell G3電腦。
PASCAL語言的創建者沃斯(N.Witrh)對程式給出了一個簡潔而確切的定義:
演算法+資料結構=程式(Algorithm+Data Structure=Program)
演算法集中地反映了電腦執行的過程,資料結構是大批資料之間的構造關係,針對所處理的對象,設計好資料結構可大幅簡化演算法。演算法和資料結構是程式的兩個重要面向。早期的程式設計語言對資料結構的描述極為薄弱,造成演算法任務的加重,隨著語言的發展,資料描述能力逐漸增強,這也是語言發展的重要標誌。
演算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對某一規範的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合某個問題,執行這個演算法就不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間複雜度與時間複雜度來衡量。
演算法中的指令描述的是一個計算,當其運行時能從一個初始狀態和(可能為空的)初始輸入開始,經過一系列有限而清晰定義的狀態,最終產生輸出並停止於一個終態。一個狀態到另一個狀態的轉移不一定是確定的。隨機化演算法在內的一些演算法,包含了一些隨機輸入。
形式化演算法的概念部分源自於嘗試解決希爾伯特提出的判定問題,並在其後嘗試定義有效計算性或有效方法中成形。這些嘗試包括庫爾特·哥德爾、Jacques Herbrand和斯蒂芬·科爾·克萊尼分別於1930年、1934年和1935年提出的遞歸函數,阿隆佐·邱奇於1936年提出的λ演算, 1936年Emil Leon Post的Formulation 1和艾倫·圖靈1937年提出的圖靈機。即使在當前,仍然常有直覺想法難以定義為形式化演算法的情況。
資料結構(data structure)是帶有結構特性的資料元素的集合,它研究的是資料的邏輯結構和資料的物理結構以及它們之間的相互關係,並對這種結構定義相適應的運算,設計出對應的演算法,並確保經過這些運算以後所得到的新結構仍保持原來的結構類型。簡而言之,資料結構是相互之間存在一種或多種特定關係的資料元素的集合,即帶有「結構」的資料元素的集合。 「結構」是指資料元素之間存在的關係,分為邏輯結構與儲存結構。
資料的邏輯結構和物理結構是資料結構的兩個密切相關的方面,而同一邏輯結構可以對應不同的儲存結構。演算法的設計取決於資料的邏輯結構,而演算法的實作則依賴指定的儲存結構。
資料結構的研究內容是建構複雜軟體系統的基礎,它的核心技術是分解與抽象。透過分解可以劃分出資料的3個層次;再透過抽象,捨棄資料元素的具體內容,就得到邏輯結構。類似地,透過分解將處理要求分割成各種功能,再透過抽象捨棄實現細節,就得到運算的定義。上述兩個面向的結合可以將問題變換為資料結構。這是一個從具體(即具體問題)到抽象(即資料結構)的過程。然後,透過增加對實作細節的考慮進一步得到儲存結構和實作運算,從而完成設計任務。這是一個從抽象(即資料結構)到具體(即具體實現)的過程。
更多電腦相關知識,請造訪常見問題欄位!
以上是沃斯對程序的定義分成幾部分的詳細內容。更多資訊請關注PHP中文網其他相關文章!