結構化程式設計--學習筆記
結構化程式設計(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等)都有與三種基本結構對應的語句。
存在問題
- 軟體的重用性差
重用性是指同一事物不經修改或稍加修改就可多次重複使用的性質。軟體重用性是軟體工程追求的目標之一,如果軟體的重用性較差那麼軟體的造價就相對高。
- 軟體的可維護性差
軟體工程強調軟體的可維護性,文件資料的重要性。規定最終的軟體產品應該由完整、一致的配置成分組成。在軟體開發過程中,始終強調軟體的可讀性、可修改性和可測試性是軟體的重要的質量指標。實踐證明,用傳統方法開發出來的軟體,維護時其費用和成本仍然很高,其原因是可修改性差、維護困難,導致可維護性差。
- 開發出的軟體不能真正滿足使用者需要
結構化方法開發大型軟體系統涉及各種不同領域的知識,在開發需求模糊或需求動態變化的系統時,所開發出的軟體系統往往不能真正滿足使用者的需要。
相關文章
- 精通C#學習筆記---C#核心程式設計結構C#筆記程式設計
- Vue學習筆記(九):元件化程式設計Vue筆記元件化程式設計
- jQuery 學習筆記:jQuery 程式碼結構jQuery筆記
- Go 結構 學習筆記Go筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記分支結構程式設計師Web前端JavaScript筆記
- 網路程式設計學習筆記程式設計筆記
- 系統程式設計學習筆記程式設計筆記
- Linux學習/TCP程式設計學習筆記LinuxTCP程式設計筆記
- GO 學習筆記->結構體Go筆記結構體
- 資料結構學習筆記資料結構筆記
- 雲端計算學習路線原始碼框架筆記:Shell程式設計之for迴圈結構原始碼框架筆記程式設計
- Golang 學習筆記——tun/tap 程式設計Golang筆記程式設計
- Javascript高階程式設計 學習筆記JavaScript程式設計筆記
- ROS串列埠程式設計學習筆記ROS串列埠程式設計筆記
- spark學習筆記--進階程式設計Spark筆記程式設計
- Linux Shell 程式設計學習筆記Linux程式設計筆記
- 《Windows 程式設計》學習筆記(五) (轉)Windows程式設計筆記
- 《Windows 程式設計》學習筆記(四) (轉)Windows程式設計筆記
- 《Windows 程式設計》學習筆記(三) (轉)Windows程式設計筆記
- 好程式設計師大資料學習筆記:Storm架構程式設計師大資料筆記ORM架構
- 四. 文字程式設計--Windows程式設計課程學習筆記程式設計Windows筆記
- 好程式設計師web前端培訓分享JavaScript學習筆記之迴圈結構程式設計師Web前端JavaScript筆記
- Java程式設計思想學習筆記4 - 序列化技術Java程式設計筆記
- 結構動力學教材-學習筆記筆記
- 設計模式學習筆記設計模式筆記
- 學習筆記-設計模式筆記設計模式
- 好程式設計師web前端培訓學習筆記Vue學習筆記一程式設計師Web前端筆記Vue
- Oracle體系結構學習筆記Oracle筆記
- 資料結構學習筆記--棧資料結構筆記
- 資料結構學習筆記1資料結構筆記
- CUDA 學習筆記之gpu結構筆記GPU
- ASM學習筆記_體系結構ASM筆記
- 好程式設計師學習筆記:函式程式設計師筆記函式
- nginx學習筆記(6):程式模型的設計Nginx筆記模型
- Java學習筆記--網路程式設計SocketJava筆記程式設計
- C語言程式設計讀書筆記:結構C語言程式設計筆記
- 好程式設計師web前端培訓學習筆記Vue學習筆記之二程式設計師Web前端筆記Vue
- Node.js 設計模式 學習筆記 之 流程式設計Node.js設計模式筆記程式設計