登錄

結(jié)構(gòu)化程序設(shè)計

百科 > 軟件 > 結(jié)構(gòu)化程序設(shè)計

1.什么是結(jié)構(gòu)化程序設(shè)計

  結(jié)構(gòu)化程序設(shè)計是指程序的設(shè)計、編寫和測試都采用一種規(guī)定組織形式進行,這樣,可使編制的程序結(jié)構(gòu)清晰,易于讀懂,易于調(diào)試和修改,充分顯示出模塊化程序設(shè)計的優(yōu)點。

2.結(jié)構(gòu)化程序設(shè)計的內(nèi)容

  結(jié)構(gòu)化程序設(shè)計(structured programming)是進行以模塊功能和處理過程設(shè)計為主的詳細設(shè)計的基本原則。其概念最早由E.W.Dijikstra在1965年提出的,是軟件發(fā)展的一個重要的里程碑。它的主要觀點是采用自頂向下、逐步求精及模塊化的程序設(shè)計方法;使用三種基本控制結(jié)構(gòu)構(gòu)造程序,任何程序都可由順序、選擇、循環(huán)三種基本控制結(jié)構(gòu)構(gòu)造。結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是程序的易讀性。

  結(jié)構(gòu)化程序設(shè)計在1960年代開始發(fā)展,科拉多·伯姆及朱塞佩·賈可皮尼伯姆于1966年5月在《Communications of the ACM》期刊發(fā)表論文,說明任何一個有g(shù)oto指令的程序,可以改為完全不使用goto指令的程序,后來艾茲赫爾·戴克斯特拉在1968年也提出著名的論文《GOTO陳述有害論》(Go To Statement Considered Harmful),因此結(jié)構(gòu)化程序設(shè)計開始盛行,此概念理論上可以由結(jié)構(gòu)化程序理論所證明,而在實務(wù)上,當時也有像ALGOL一樣,有豐富控制結(jié)構(gòu)的編程語言來實現(xiàn)結(jié)構(gòu)化程序設(shè)計。在20世紀70年代初,由Boehm和Jacobi提出并證明的結(jié)構(gòu)定理:即任何程序都可以由3種基本結(jié)構(gòu)程序構(gòu)成結(jié)構(gòu)化程序,這3種結(jié)構(gòu)是:順序結(jié)構(gòu)、分支(條件選擇)結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。每一個結(jié)構(gòu)只有一個入口和一個出口,3種結(jié)構(gòu)的任意組合和嵌套就構(gòu)成了結(jié)構(gòu)化的程序。程序的基本結(jié)構(gòu)有四種:順序結(jié)構(gòu),分支程序結(jié)構(gòu),循環(huán)程序結(jié)構(gòu),子程序結(jié)構(gòu)。

3.結(jié)構(gòu)化程序設(shè)計的構(gòu)成

  結(jié)構(gòu)化程序設(shè)計的三種基本結(jié)構(gòu)是:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

  • 順序結(jié)構(gòu)

  順序結(jié)構(gòu)表示程序中的各操作是按照它們出現(xiàn)的先后順序執(zhí)行的。順序結(jié)構(gòu)的程序又稱簡單程序,這種結(jié)構(gòu)的程序是順序執(zhí)行的,無分支,無轉(zhuǎn)移,無循環(huán),程序本身的邏輯很簡單,它只依賴于計算機能夠順序執(zhí)行指令(語句)的特點,只要語句安排的順序正確即可。

  • 選擇結(jié)構(gòu)

  選擇結(jié)構(gòu)表示程序的處理步驟出現(xiàn)了分支,它需要根據(jù)某一特定的條件選擇其中的一個分支執(zhí)行。選擇結(jié)構(gòu)有單選擇、雙選擇和多選擇三種形式。

  • 循環(huán)結(jié)構(gòu)

  循環(huán)結(jié)構(gòu)表示程序反復(fù)執(zhí)行某個或某些操作,直到某條件為假(或為真)時才可終止循環(huán)。在循環(huán)結(jié)構(gòu)中最主要的是:什么情況下執(zhí)行循環(huán)?哪些操作需要循環(huán)執(zhí)行?循環(huán)結(jié)構(gòu)的基本形式有兩種:當型循環(huán)和直到型循環(huán)。 當型循環(huán):表示先判斷條件,當滿足給定的條件時執(zhí)行循環(huán)體,并且在循環(huán)終端處流程自動返回到循環(huán)入口;如果條件不滿足,則退出循環(huán)體直接到達流程出口處。因為是"當條件滿足時執(zhí)行循環(huán)",即先判斷后執(zhí)行,所以稱為當型循環(huán)。 直到型循環(huán):表示從結(jié)構(gòu)入口處直接執(zhí)行循環(huán)體,在循環(huán)終端處判斷條件,如果條件不滿足,返回入口處繼續(xù)執(zhí)行循環(huán)體,直到條件為真時再退出循環(huán)到達流程出口處,是先執(zhí)行后判斷。因為是"直到條件為真時為止",所以稱為直到型循環(huán)。

4.結(jié)構(gòu)化程序設(shè)計的特點

  結(jié)構(gòu)化程序中的任意基本結(jié)構(gòu)都具有唯一入口和唯一出口,并且程序不會出現(xiàn)死循環(huán)。在程序的靜態(tài)形式與動態(tài)執(zhí)行流程之間具有良好的對應(yīng)關(guān)系。

  • 優(yōu)點

  由于模塊相互獨立,因此在設(shè)計其中一個模塊時,不會受到其它模塊的牽連,因而可將原來較為復(fù)雜的問題化簡為一系列簡單模塊的設(shè)計。模塊的獨立性還為擴充已有的系統(tǒng)、建立新系統(tǒng)帶來了不少的方便,因為我們可以充分利用現(xiàn)有的模塊作積木式的擴展。按照結(jié)構(gòu)化程序設(shè)計的觀點,任何算法功能都可以通過由程序模塊組成的三種基本程序結(jié)構(gòu)的組合:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)來實現(xiàn)。

  結(jié)構(gòu)化程序設(shè)計的基本思想是采用"自頂向下,逐步求精"的程序設(shè)計方法和"單入口單出口"的控制結(jié)構(gòu)。自頂向下、逐步求精的程序設(shè)計方法從問題本身開始,經(jīng)過逐步細化,將解決問題的步驟分解為由基本程序結(jié)構(gòu)模塊組成的結(jié)構(gòu)化程序框圖;"單入口單出口"的思想認為一個復(fù)雜的程序,如果它僅是由順序、選擇和循環(huán)三種基本程序結(jié)構(gòu)通過組合、嵌套構(gòu)成,那么這個新構(gòu)造的程序一定是一個單入口單出口的程序。據(jù)此就很容易編寫出結(jié)構(gòu)良好、易于調(diào)試的程序來。

  1. 整體思路清楚,目標明確。
  2. 設(shè)計工作中階段性非常強,有利于系統(tǒng)開發(fā)的總體管理和控制。
  3. 系統(tǒng)分析時可以診斷出原系統(tǒng)中存在的問題和結(jié)構(gòu)上的缺陷。
  • 缺點
  1. 用戶要求難以在系統(tǒng)分析階段準確定義,致使系統(tǒng)在交付使用時產(chǎn)生許多問題。
  2. 用系統(tǒng)開發(fā)每個階段的成果來進行控制,不能適應(yīng)事物變化的要求。
  3. 系統(tǒng)的開發(fā)周期長。
評論  |   0條評論