結構化程序設計

結構化程序設計

詳細設計的基本原則
結構化程序設計(structuredprogramming)是進行以模塊功能和處理過程設計為主的詳細設計的基本原則。結構化程序設計内容是非計算機專業VFP教學中的難點,通過實例介紹了在任務驅動教學法的指導下,打破了原來的以知識傳授為中心的教學模式,通過任務構建,導入相應的知識點[1],結構化程序設計的三種基本結構是:順序結構、選擇結構和循環結構。結構化程序設計通常使用自上往下的設計模型,開發員将整個程序結構映射到單個小部分。當型循環:表示先判斷條件,當滿足給定的條件時執行循環體,并且在循環終端處流程自動返回到循環入口;如果條件不滿足,則退出循環體直接到達流程出口處。
    中文名:結構化程序設計 外文名: 别名: 英文名:structured programming 提出人:E.W.Dijikstra 時間:1965年 目的:使程序執行效率提高

概述

概念

随着我國科研競争實力的不斷提升,涉及單片機技術開始得到大範圍推廣沿用。須知此類設備型号類别繁雜,特别是在編程規則方面,主張使用多彙編語言,至此相關程序通用、移植,以及維護性能條件等,都産生本質性的變化結果。其概念最早由E.W.Dijikstra在1965年提出的,是軟件發展的一個重要的裡程碑。它的主要觀點是采用自頂向下、逐步求精及模塊化的程序設計方法;使用三種基本控制結構構造程序,任何程序都可由順序、選擇、循環三種基本控制結構構造。結構化程序設計主要強調的是程序的易讀性。

内容

詳細描述處理過程常用三種工具:圖形、表格和語言。

圖形:程序流程圖、N-S圖、PAD圖表格:判定表

語言:過程設計語言(PDL)

結構化程序設計曾被稱為軟件發展中的第三個裡程碑。該方法的要點是:(1)主張使用順序、選擇、循環三種基本結構來嵌套連結成具有複雜層次的“結構化程序”,嚴格控制GOTO語句的使用。用這樣的方法編出的程序在結構上具有以下效果:

a.以控制結構為單位,隻有一個入口,一個出口,所以能獨立地理解這一部分。

b.能夠以控制結構為單位,從上到下順序地閱讀程序文本。

c.由于程序的靜态描述與執行時的控制流程容易對應,所以能夠方便正确地理解程序的動作。

(2)“自頂而下,逐步求精”的設計思想,其出發點是從問題的總體目标開始,抽象低層的細節,先專心構造高層的結構,然後再一層一層地分解和細化。這使設計者能把握主題,高屋建瓴,避免一開始就陷入複雜的細節中,使複雜的設計過程變得簡單明了,過程的結果也容易做到正确可靠。

(3)“獨立功能,單出、入口”的模塊結構,減少模塊的相互聯系使模塊可作為插件或積木使用,降低程序的複雜性,提高可靠性。程序編寫時,所有模塊的功能通過相應的子程序(函數或過程)的代碼來實現。程序的主體是子程序層次庫,它與功能模塊的抽象層次相對應,編碼原則使得程序流程簡潔、清晰,增強可讀性。

(4)主程序員組。其中(1)、(2)是解決程序結構規範化問題;(3)是解決将大劃小,将難化簡的求解方法問題;(4)是解決軟件開發的人員組織結構問題。

模型

結構化程序設計通常使用自上往下的設計模型,開發員将整個程序結構映射到單個小部分。已定義的函數或相似函數的集合在單個模塊或字模塊中編碼,這意味着,代碼能夠更有效的載入存儲器,模塊能在其它程序中再利用。模塊單獨測試之後,與其它模塊整合起來形成整個程序組織。

程序流程遵循簡單的層次化模型,采用“for”、“repeat”、“while”等循環結構,鼓勵使用“GoTo”語句。幾乎任何語言都能使用結構化程序設計技術來避免非結構化語言的通常陷阱。非結構化程序設計必須依賴于開發人員避免結構問題,從而導緻程序組織較差。大多數現代過程式語言都鼓勵結構化程序設計。

基本結構

結構化程序設計的三種基本結構是:順序結構、選擇結構和循環結構。

順序結構

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

選擇結構

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

循環結構

循環結構表示程序反複執行某個或某些操作,直到某條件為假(或為真)時才可終止循環。在循環結構中最主要的是:什麼情況下執行循環?哪些操作需要循環執行?循環結構的基本形式有兩種:當型循環和直到型循環。

當型循環:表示先判斷條件,當滿足給定的條件時執行循環體,并且在循環終端處流程自動返回到循環入口;如果條件不滿足,則退出循環體直接到達流程出口處。因為是"當條件滿足時執行循環",即先判斷後執行,所以稱為當型循環。

直到型循環:表示從結構入口處直接執行循環體,在循環終端處判斷條件,如果條件不滿足,返回入口處繼續執行循環體,直到條件為真時再退出循環到達流程出口處,是先執行後判斷。因為是"直到條件為真時為止",所以稱為直到型循環。

設計方法

自頂向下

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

逐步細化

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

模塊化

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

限制使用goto語句結構化程序設計方法的起源來自對GOTO語句的認識和争論。肯定的結論是,在塊和進程的非正常出口處往往需要用GOTO語句,使用GOTO語句會使程序執行效率較高;在合成程序目标時,GOTO語句往往是有用的,如返回語句用GOTO。否定的結論是,GOTO語句是有害的,是造成程序混亂的禍根,程序的質量與GOTO語句的數量呈反比,應該在所有高級程序設計語言中取消GOTO語句。取消GOTO語句後,程序易于理解、易于排錯、容易維護,容易進行正确性證明。作為争論的結論,1974年Knuth發表了令人信服的總結,并證實了:

(1)GOTO語句确實有害,應當盡量避免;

(2)完全避免使用GOTO語句也并非是個明智的方法,有些地方使用GOTO語句,會使程序流程更清楚、效率更高;

(3)争論的焦點不應該放在是否取消GOTO語句上,而應該放在用什麼樣的程序結構上。其中最關鍵的是,應在以提高程序清晰性為目标的結構化方法中限制使用GOTO語句。

結構化編碼

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

相關詞條

相關搜索

其它詞條