登錄

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

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

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

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

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

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

  結(jié)構(gòu)化程序設(shè)計(jì)在1960年代開始發(fā)展,科拉多·伯姆及朱塞佩·賈可皮尼伯姆于1966年5月在《Communications of the ACM》期刊發(fā)表論文,說明任何一個(gè)有g(shù)oto指令的程序,可以改為完全不使用goto指令的程序,后來艾茲赫爾·戴克斯特拉在1968年也提出著名的論文《GOTO陳述有害論》(Go To Statement Considered Harmful),因此結(jié)構(gòu)化程序設(shè)計(jì)開始盛行,此概念理論上可以由結(jié)構(gòu)化程序理論所證明,而在實(shí)務(wù)上,當(dāng)時(shí)也有像ALGOL一樣,有豐富控制結(jié)構(gòu)的編程語言來實(shí)現(xiàn)結(jié)構(gòu)化程序設(shè)計(jì)。在20世紀(jì)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)。每一個(gè)結(jié)構(gòu)只有一個(gè)入口和一個(gè)出口,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è)計(jì)的構(gòu)成

  結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(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),程序本身的邏輯很簡單,它只依賴于計(jì)算機(jī)能夠順序執(zhí)行指令(語句)的特點(diǎn),只要語句安排的順序正確即可。

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

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

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

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

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

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

  • 優(yōu)點(diǎn)

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

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

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