簡介
產生
(E.W.Dijikstra)在1965年提出的,是軟體發展的一個重要的里程碑。它的主要觀點是採用自頂向下、逐步求精的程式設計方法;使用三種基本控制結構構造程式,任何程式都可由順序、選擇、循環三種基本控制結構構造。是以模組化設計為中心,將待開發的軟體系統劃分為若干個相互獨立的模組,這樣使完成每一個模組的工作變單純而明確,為設計一些較大的軟體打下了良好的基礎。
基本要點
2.使用三種基本控制結構構造程式
任何程式都可由順序、選擇、重複三種基本控制結構構造。
(1)用順序方式對過程分解,確定各部分的執行順序。
(2)用選擇方式對過程分解,確定某個部分的執行條件。
(3)用循環方式對過程分解,確定某個部分進行重複的開始和結束的條件。
(4)對處理過程仍然模糊的部分反覆使用以上分解方法,最終可將所有細節確定下來。
3.主程式設計師組的組織形式指開發程式的人員組織方式應採用由一個主程式設計師(負責全部技術活動)、一個後備程式設計師(協調、支持主程式設計師)和一個程式管理員(負責事務性工作,如收集、記錄數據,文檔資料管理等)三個為核心,再加上一些專家(如通信專家、資料庫專家)、其他技術人員組成小組。
設計語言
原則
自頂向下
程式設計時,應先考慮總體,後考慮細節;先考慮全局目標,後考慮局部目標。不要一開始就過多追求眾多的細節,先從最上層總目標開始設計,逐步使問題具體化。
逐步細化
對複雜問題,應設計一些子目標作為過渡,逐步細化。
模組化設計
一個複雜問題,肯定是由若干稍簡單的問題構成。模組化是把程式要解決的總目標分解為子目標,再進一步分解為具體的小目標,把每一個小目標稱為一個模組。
限制使用goto語句
結構化程式設計方法的起源來自對
GOTO語句的認識和爭論。肯定的結論是,在塊和進程的非正常出口處往往需要用GOTO語句,使用GOTO語句會使程式執行效率較高;在合成程式目標時,GOTO語句往往是有用的,如返回語句用
GOTO。否定的結論是,GOTO語句是有害的,是造成程式混亂的禍根,程式的質量與GOTO語句的數量呈反比,應該在所有高級
程式設計語言中取消GOTO語句。取消GOTO語句後,程式易於理解、易於排錯、容易維護,容易進行正確性證明。作為爭論的結論,1974年Knuth發表了令人信服的總結,並證實了:
(1)GOTO語句確實有害,應當儘量避免;
(2)完全避免使用
GOTO語句也並非是個明智的方法,有些地方使用GOTO語句,會使程式流程更清楚、效率更高;
(3)爭論的焦點不應該放在是否取消GOTO語句上,而應該放在用什麼樣的程式結構上。其中最關鍵的是,應在以提高程式清晰性為目標的
結構化方法中限制使用GOTO語句。
基本結構
順序結構
選擇結構
選擇結構表示程式的處理步驟出現了分支,它需要根據某一特定的條件選擇其中的一個分支執行。
選擇結構有單選擇、雙選擇和多選擇三種形式。
循環結構
循環結構表示程式反覆執行某個或某些操作,直到某條件為假(或為真)時才可終止循環。在循環結構中最主要的是:什麼情況下執行循環?哪些操作需要循環執行?循環結構的基本形式有兩種:
當型循環和直到型循環。
當型循環:表示先判斷條件,當滿足給定的條件時執行
循環體,並且在循環終端處流程自動返回到循環入口;如果條件不滿足,則退出循環體直接到達流程出口處。因為是"當條件滿足時執行循環",即先判斷後執行,所以稱為當型循環。
直到型循環:表示從結構入口處直接執行循環體,在循環終端處判斷條件,如果條件不滿足,返回入口處繼續執行循環體,直到條件為真時再退出循環到達流程出口處,是先執行後判斷。因為是"直到條件為真時為止",所以稱為直到型循環。
特點
結構化程式中的任意基本結構都具有唯一入口和唯一出口,並且程式不會出現
死循環。在程式的靜態形式與動態執行流程之間具有良好的對應關係。
優點
由於
模組相互獨立,因此在設計其中一個模組時,不會受到其它模組的牽連,因而可將原來較為複雜的問題化簡為一系列簡單模組的設計。模組的獨立性還為擴充已有的系統、建立新系統帶來了不少的方便,因為我們可以充分利用現有的模組作積木式的擴展。
結構化程式設計的基本思想是採用"自頂向下,
逐步求精"的程式設計方法和"
單入口單出口"的控制結構。自頂向下、逐步求精的程式設計方法從問題本身開始,經過逐步細化,將解決問題的步驟分解為由基本程式結構
模組組成的結構化程式框圖;"單入口單出口"的思想認為一個複雜的程式,如果它僅是由順序、選擇和循環三種基本程式結構通過組合、
嵌套構成,那么這個新構造的程式一定是一個單入口單出口的程式。據此就很容易編寫出結構良好、易於調試的程式來。
①整體思路清楚,目標明確。
②設計工作中階段性非常強,有利於系統開發的總體管理和控制。
③在
系統分析時可以診斷出原系統中存在的問題和結構上的缺陷。
缺點
①用戶要求難以在
系統分析階段準確定義,致使系統在交付使用時產生許多問題。
②用系統開發每個階段的成果來進行控制,不能適應事物變化的要求。