結構化程式設計
出自 MBA智库百科(https://wiki.mbalib.com/)
結構化程式設計(Structured programming)
目錄 |
結構化程式設計是指程式的設計、編寫和測試都採用一種規定的組織形式進行,這樣,可使編製的程式結構清晰,易於讀懂,易於調試和修改,充分顯示出模塊化程式設計的優點。
結構化程式設計(structured programming)是進行以模塊功能和處理過程設計為主的詳細設計的基本原則。其概念最早由E.W.Dijikstra在1965年提出的,是軟體發展的一個重要的里程碑。它的主要觀點是採用自頂向下、逐步求精及模塊化的程式設計方法;使用三種基本控制結構構造程式,任何程式都可由順序、選擇、迴圈三種基本控制結構構造。結構化程式設計主要強調的是程式的易讀性。
結構化程式設計在1960年代開始發展,科拉多·伯姆及朱塞佩·賈可皮尼伯姆於1966年5月在《Communications of the ACM》期刊發表論文,說明任何一個有goto指令的程式,可以改為完全不使用goto指令的程式,後來艾茲赫爾·戴克斯特拉在1968年也提出著名的論文《GOTO陳述有害論》(Go To Statement Considered Harmful),因此結構化程式設計開始盛行,此概念理論上可以由結構化程式理論所證明,而在實務上,當時也有像ALGOL一樣,有豐富控制結構的編程語言來實現結構化程式設計。在20世紀70年代初,由Boehm和Jacobi提出並證明的結構定理:即任何程式都可以由3種基本結構程式構成結構化程式,這3種結構是:順序結構、分支(條件選擇)結構和迴圈結構。每一個結構只有一個入口和一個出口,3種結構的任意組合和嵌套就構成了結構化的程式。程式的基本結構有四種:順序結構,分支程式結構,迴圈程式結構,子程式結構。
結構化程式設計的三種基本結構是:順序結構、選擇結構和迴圈結構。
- 順序結構
順序結構表示程式中的各操作是按照它們出現的先後順序執行的。順序結構的程式又稱簡單程式,這種結構的程式是順序執行的,無分支,無轉移,無迴圈,程式本身的邏輯很簡單,它只依賴於電腦能夠順序執行指令(語句)的特點,只要語句安排的順序正確即可。
- 選擇結構
選擇結構表示程式的處理步驟出現了分支,它需要根據某一特定的條件選擇其中的一個分支執行。選擇結構有單選擇、雙選擇和多選擇三種形式。
- 迴圈結構
迴圈結構表示程式反覆執行某個或某些操作,直到某條件為假(或為真)時才可終止迴圈。在迴圈結構中最主要的是:什麼情況下執行迴圈?哪些操作需要迴圈執行?迴圈結構的基本形式有兩種:當型迴圈和直到型迴圈。 當型迴圈:表示先判斷條件,當滿足給定的條件時執行迴圈體,並且在迴圈終端處流程自動返回到迴圈入口;如果條件不滿足,則退出迴圈體直接到達流程出口處。因為是"當條件滿足時執行迴圈",即先判斷後執行,所以稱為當型迴圈。 直到型迴圈:表示從結構入口處直接執行迴圈體,在迴圈終端處判斷條件,如果條件不滿足,返回入口處繼續執行迴圈體,直到條件為真時再退出迴圈到達流程出口處,是先執行後判斷。因為是"直到條件為真時為止",所以稱為直到型迴圈。
結構化程式中的任意基本結構都具有唯一入口和唯一出口,並且程式不會出現死迴圈。在程式的靜態形式與動態執行流程之間具有良好的對應關係。
- 優點
由於模塊相互獨立,因此在設計其中一個模塊時,不會受到其它模塊的牽連,因而可將原來較為複雜的問題化簡為一系列簡單模塊的設計。模塊的獨立性還為擴充已有的系統、建立新系統帶來了不少的方便,因為我們可以充分利用現有的模塊作積木式的擴展。按照結構化程式設計的觀點,任何演算法功能都可以通過由程式模塊組成的三種基本程式結構的組合:順序結構、選擇結構和迴圈結構來實現。
結構化程式設計的基本思想是採用"自頂向下,逐步求精"的程式設計方法和"單入口單出口"的控制結構。自頂向下、逐步求精的程式設計方法從問題本身開始,經過逐步細化,將解決問題的步驟分解為由基本程式結構模塊組成的結構化程式框圖;"單入口單出口"的思想認為一個複雜的程式,如果它僅是由順序、選擇和迴圈三種基本程式結構通過組合、嵌套構成,那麼這個新構造的程式一定是一個單入口單出口的程式。據此就很容易編寫出結構良好、易於調試的程式來。
- 缺點