複製鏈接
請複製以下鏈接發送給好友

結構化程序設計

鎖定
結構化程序設計(structured programming)是進行以模塊功能和處理過程設計為主的詳細設計的基本原則。結構化程序設計是過程式程序設計的一個子集,它對寫入的程序使用邏輯結構,使得理解和修改更有效更容易。
中文名
結構化程序設計
外文名
structured programming
提出人
E.W.Dijikstra
提出時間
1965年
目    的
使程序執行效率提高
原    則
程序=(算法)+(數據結構)
基本結構
順序結構選擇結構循環結構

結構化程序設計內容簡介

“面向結構”的程序設計方法即結構化程序設計方法, 是“面向過程”方法的改進, 結構上將軟件系統劃分為若干功能模塊, 各模塊按要求單獨編程, 再由各模塊連接, 組合構成相應的軟件系統。 該方法強調程序的結構性, 所以容易做到易讀, 易懂。 該方法思路清晰, 做法規範, 深受設計者青睞。
結構化程序設計(STRUCTURED PROGRAMING,簡稱SP)思想是最早由E.W.Dijikstra在1965年提出的,結構化程序設計思想確實使程序執行效率提高 [1]  。程序的出錯率維護費用大大減少結構程序設計就是一種進行程序設計的原則和方法,按照這種原則和方法可設計出結構清晰、容易理解、容易修改、容易驗證的程序結構化程序設計的目標在於使程序具有一個合理結構,以保證和驗證程序的正確性,從而開發出正確、合理的程序。

結構化程序設計原則

結構化程序設計採用自頂向下、逐步求精的設計方法,各個模塊通過“順序、選擇、循環”的控制結構進行連接,並且只有一個入口、一個出口。
結構化程序設計的原則可表示為:程序=(算法)+(數據結構)。
算法是一個獨立的整體,數據結構(包含數據類型與數據)也是一個獨立的整體。兩者分開設計,以算法(函數或過程)為主。
隨着計算機技術的發展,軟件工程師越來越注重於系統整體關係的表述,於是出現了數據模型技術(把數據結構與算法看做一個獨立功能模塊),這便是面向對象程序設計的雛形。 [2] 

結構化程序設計基本結構

結構化程序設計順序結構

順序結構表示程序中的各操作是按照它們出現的先後順序執行的。

結構化程序設計選擇結構

選擇結構表示程序的處理步驟出現了分支,它需要根據某一特定的條件選擇其中的一個分支執行。選擇結構有單選擇、雙選擇和多選擇三種形式。

結構化程序設計循環結構

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

結構化程序設計設計方法

結構化程序設計自頂向下

程序設計時,應先考慮總體,後考慮細節;先考慮全局目標,後考慮局部目標。不要一開始就過多追求眾多的細節,先從最上層總目標開始設計,逐步使問題具體化。

結構化程序設計逐步細化

複雜問題,應設計一些子目標作為過渡,逐步細化。

結構化程序設計模塊化

結構化程序設計 結構化程序設計
一個複雜問題,肯定是由若干稍簡單的問題構成。模塊化是把程序要解決的總目標分解為子目標,再進一步分解為具體的小目標,把每一個小目標稱為一個模塊。
限制使用goto語句 結構化程序設計方法的起源來自對GOTO語句的認識和爭論。肯定的結論是,在塊和進程的非正常出口處往往需要用GOTO語句,使用GOTO語句會使程序執行效率較高;在合成程序目標時,GOTO語句往往是有用的,如返回語句用GOTO。否定的結論是,GOTO語句是有害的,是造成程序混亂的禍根,程序的質量與GOTO語句的數量呈反比,應該在所有高級程序設計語言中取消GOTO語句。取消GOTO語句後,程序易於理解、易於排錯、容易維護,容易進行正確性證明。作為爭論的結論,1974年Knuth發表了令人信服的總結,並證實了:
(1)GOTO語句確實有害,應當儘量避免;
(2)完全避免使用GOTO語句也並非是個明智的方法,有些地方使用GOTO語句,會使程序流程更清楚、效率更高;
(3)爭論的焦點不應該放在是否取消GOTO語句上,而應該放在用什麼樣的程序結構上。其中最關鍵的是,應在以提高程序清晰性為目標的結構化方法中限制使用GOTO語句。

結構化程序設計結構化編碼

所謂編碼就是把已經設計好的算法用計算機語言表示,即根據已經細化的算法正確寫出計算機程序。結構化的語言(如 Pascal,C,QBASIC等)都有與三種基本結構對應的語句。

結構化程序設計存在問題

1、軟件的重用性差
重用性是指同一事物不經修改或稍加修改就可多次重複使用的性質。軟件重用性是軟件工程追求的目標之一。如果軟件的重用性較差那麼軟件的造價就相對高。
2、軟件的可維護性
軟件工程強調軟件的可維護性。強調文檔資料的重要性。規定最終的軟件產品應該由完整、一致的配置成分組成。在軟件開發過程中。始終強調軟件的可讀性、可修改性可測試性是軟件的重要的質量指標實踐證明。用傳統方法開發出來的軟件.維護時其費用和成本仍然很高.其原因是可修改性差.維護困難。導致可維護性差。
3、開發出的軟件不能真正滿足用户需要
結構化方法開發大型軟件系統涉及各種不同領域的知識。在開發需求模糊或需求動態變化的系統時.所開發出的軟件系統往往不能真正滿足用户的需要。 [3] 

結構化程序設計優缺點

結構化程序設計特點

結構化程序中的任意基本結構都具有唯一入口和唯一出口,並且程序不會出現死循環。在程序的靜態形式與動態執行流程之間具有良好的對應關係。
由於模塊相互獨立,因此在設計其中一個模塊時,不會受到其它模塊的牽連,因而可將原來較為複雜的問題化簡為一系列簡單模塊的設計。模塊的獨立性還為擴充已有的系統、建立新系統帶來了不少的方便,因為我們可以充分利用現有的模塊作積木式的擴展。
按照結構化程序設計的觀點,任何算法功能都可以通過由程序模塊組成的三種基本程序結構的組合:順序結構、選擇結構和循環結構來實現。
結構化程序設計的基本思想是採用"自頂向下,逐步求精"的程序設計方法和“單入口單出口”的控制結構。自頂向下、逐步求精的程序設計方法從問題本身開始,經過逐步細化,將解決問題的步驟分解為由基本程序結構模塊組成的結構化程序框圖;“單入口單出口”的思想認為一個複雜的程序,如果它僅是由順序、選擇和循環三種基本程序結構通過組合、嵌套構成,那麼這個新構造的程序一定是一個單入口單出口的程序。據此就很容易編寫出結構良好、易於調試的程序來。

結構化程序設計優點

①整體思路清楚,目標明確;
②設計工作中階段性非常強,有利於系統開發總體管理和控制;
③在系統分析時可以診斷出原系統中存在的問題和結構上的缺陷。

結構化程序設計缺點

①用户要求難以在系統分析階段準確定義,致使系統在交付使用時產生許多問題;
②用系統開發每個階段的成果來進行控制,不能適應事物變化的要求;
③系統的開發週期長
參考資料
  • 1.    劉一鷗.淺談C語言的結構化程序設計[J].商情,2011,(13):137.
  • 2.    姚永亮,張二峯.結構化與面向對象的程序設計方法比較[J].開封大學學報,2011,25(1):92-94.
  • 3.    牟豔霞.淺析從結構化程序設計到面向對象程序設計的發展思路[J].中國校外教育(理論),2011,(z1):165.