-
結構化程序設計
鎖定
- 中文名
- 結構化程序設計
- 外文名
- structured programming
- 提出人
- E.W.Dijikstra
結構化程序設計內容簡介
“面向結構”的程序設計方法即結構化程序設計方法, 是“面向過程”方法的改進, 結構上將軟件系統劃分為若干功能模塊, 各模塊按要求單獨編程, 再由各模塊連接, 組合構成相應的軟件系統。 該方法強調程序的結構性, 所以容易做到易讀, 易懂。 該方法思路清晰, 做法規範, 深受設計者青睞。
結構化程序設計(STRUCTURED PROGRAMING,簡稱SP)思想是最早由E.W.Dijikstra在1965年提出的,結構化程序設計思想確實使程序執行效率提高
[1]
。程序的出錯率和維護費用大大減少結構程序設計就是一種進行程序設計的原則和方法,按照這種原則和方法可設計出結構清晰、容易理解、容易修改、容易驗證的程序結構化程序設計的目標在於使程序具有一個合理結構,以保證和驗證程序的正確性,從而開發出正確、合理的程序。
結構化程序設計原則
結構化程序設計的原則可表示為:程序=(算法)+(數據結構)。
算法是一個獨立的整體,數據結構(包含數據類型與數據)也是一個獨立的整體。兩者分開設計,以算法(函數或過程)為主。
結構化程序設計基本結構
結構化程序設計順序結構
結構化程序設計選擇結構
選擇結構表示程序的處理步驟出現了分支,它需要根據某一特定的條件選擇其中的一個分支執行。選擇結構有單選擇、雙選擇和多選擇三種形式。
結構化程序設計循環結構
當型循環:表示先判斷條件,當滿足給定的條件時執行循環體,並且在循環終端處流程自動返回到循環入口;如果條件不滿足,則退出循環體直接到達流程出口處。因為是"當條件滿足時執行循環",即先判斷後執行,所以稱為當型循環。
直到型循環:表示從結構入口處直接執行循環體,在循環終端處判斷條件,如果條件不滿足,返回入口處繼續執行循環體,直到條件為真時再退出循環到達流程出口處,是先執行後判斷。因為是"直到條件為真時為止",所以稱為直到型循環。
結構化程序設計設計方法
結構化程序設計自頂向下
程序設計時,應先考慮總體,後考慮細節;先考慮全局目標,後考慮局部目標。不要一開始就過多追求眾多的細節,先從最上層總目標開始設計,逐步使問題具體化。
結構化程序設計逐步細化
對複雜問題,應設計一些子目標作為過渡,逐步細化。
結構化程序設計模塊化
一個複雜問題,肯定是由若干稍簡單的問題構成。模塊化是把程序要解決的總目標分解為子目標,再進一步分解為具體的小目標,把每一個小目標稱為一個模塊。
限制使用goto語句 結構化程序設計方法的起源來自對GOTO語句的認識和爭論。肯定的結論是,在塊和進程的非正常出口處往往需要用GOTO語句,使用GOTO語句會使程序執行效率較高;在合成程序目標時,GOTO語句往往是有用的,如返回語句用GOTO。否定的結論是,GOTO語句是有害的,是造成程序混亂的禍根,程序的質量與GOTO語句的數量呈反比,應該在所有高級程序設計語言中取消GOTO語句。取消GOTO語句後,程序易於理解、易於排錯、容易維護,容易進行正確性證明。作為爭論的結論,1974年Knuth發表了令人信服的總結,並證實了:
(1)GOTO語句確實有害,應當儘量避免;
(2)完全避免使用GOTO語句也並非是個明智的方法,有些地方使用GOTO語句,會使程序流程更清楚、效率更高;
結構化程序設計結構化編碼
結構化程序設計存在問題
1、軟件的重用性差
重用性是指同一事物不經修改或稍加修改就可多次重複使用的性質。軟件重用性是軟件工程追求的目標之一。如果軟件的重用性較差那麼軟件的造價就相對高。
2、軟件的可維護性差
軟件工程強調軟件的可維護性。強調文檔資料的重要性。規定最終的軟件產品應該由完整、一致的配置成分組成。在軟件開發過程中。始終強調軟件的可讀性、可修改性和可測試性是軟件的重要的質量指標。實踐證明。用傳統方法開發出來的軟件.維護時其費用和成本仍然很高.其原因是可修改性差.維護困難。導致可維護性差。
3、開發出的軟件不能真正滿足用户需要
結構化方法開發大型軟件系統涉及各種不同領域的知識。在開發需求模糊或需求動態變化的系統時.所開發出的軟件系統往往不能真正滿足用户的需要。
[3]
結構化程序設計優缺點
結構化程序設計特點
結構化程序中的任意基本結構都具有唯一入口和唯一出口,並且程序不會出現死循環。在程序的靜態形式與動態執行流程之間具有良好的對應關係。
由於模塊相互獨立,因此在設計其中一個模塊時,不會受到其它模塊的牽連,因而可將原來較為複雜的問題化簡為一系列簡單模塊的設計。模塊的獨立性還為擴充已有的系統、建立新系統帶來了不少的方便,因為我們可以充分利用現有的模塊作積木式的擴展。
結構化程序設計的基本思想是採用"自頂向下,逐步求精"的程序設計方法和“單入口單出口”的控制結構。自頂向下、逐步求精的程序設計方法從問題本身開始,經過逐步細化,將解決問題的步驟分解為由基本程序結構模塊組成的結構化程序框圖;“單入口單出口”的思想認為一個複雜的程序,如果它僅是由順序、選擇和循環三種基本程序結構通過組合、嵌套構成,那麼這個新構造的程序一定是一個單入口單出口的程序。據此就很容易編寫出結構良好、易於調試的程序來。
結構化程序設計優點
①整體思路清楚,目標明確;
③在系統分析時可以診斷出原系統中存在的問題和結構上的缺陷。
結構化程序設計缺點
①用户要求難以在系統分析階段準確定義,致使系統在交付使用時產生許多問題;
②用系統開發每個階段的成果來進行控制,不能適應事物變化的要求;
③系統的開發週期長。