結構化程式設計--學習筆記

Aussie_發表於2020-11-01

結構化程式設計(structured programming)是進行以模組功能和處理過程設計為主的詳細設計的基本原則。結構化程式設計是過程式程式設計的一個子集,它對寫入的程式使用邏輯結構,使得理解和修改更有效更容易

原則

  • 結構化程式設計採用自頂向下、逐步求精的設計方法,各個模組通過“順序、選擇、迴圈”的控制結構進行連線,並且只有一個入口、一個出口

  • 結構化程式設計的原則可表示為:程式=(演算法)+(資料結構)。
    演算法是一個獨立的整體,資料結構(包含資料型別與資料)也是一個獨立的整體。兩者分開設計,以演算法(函式或過程)為主。
    隨著計算機技術的發展,軟體工程師越來越注重於系統整體關係的表述,於是出現了資料模型技術(把資料結構與演算法看做一個獨立功能模組),這便是物件導向程式設計的雛形。

設計方法

  • 自頂向下
    程式設計時,應先考慮總體,後考慮細節;先考慮全域性目標,後考慮區域性目標。不要一開始就過多追求眾多的細節,先從最上層總目標開始設計,逐步使問題具體化。

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

  • 模組化
    一個複雜問題,肯定是由若干稍簡單的問題構成。模組化是把程式要解決的總目標分解為子目標,再進一步分解為具體的小目標,把每一個小目標稱為一個模組。

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

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

存在問題

  1. 軟體的重用性差

重用性是指同一事物不經修改或稍加修改就可多次重複使用的性質。軟體重用性是軟體工程追求的目標之一,如果軟體的重用性較差那麼軟體的造價就相對高。

  1. 軟體的可維護性差

軟體工程強調軟體的可維護性,文件資料的重要性。規定最終的軟體產品應該由完整、一致的配置成分組成。在軟體開發過程中,始終強調軟體的可讀性、可修改性和可測試性是軟體的重要的質量指標。實踐證明,用傳統方法開發出來的軟體,維護時其費用和成本仍然很高,其原因是可修改性差、維護困難,導致可維護性差。

  1. 開發出的軟體不能真正滿足使用者需要

結構化方法開發大型軟體系統涉及各種不同領域的知識,在開發需求模糊或需求動態變化的系統時,所開發出的軟體系統往往不能真正滿足使用者的需要。

相關文章