1.3 結構化程序設計方法
結構化程序設計是指,為使程序具有一個合理的結構以保證程序正確性而規(guī)定的一套如何進行程序設計的原則。結構化程序設計的原則是:采用自頂向下、逐步求精的方法;程序結構模塊化,每個模塊只有一個入口和一個出口;使用 3 種基本控制結構描述程序流程。其中,模塊化是結構化程序設計的重要原則。所謂模塊化就是把一個大型的程序按照功能分解為若干相對獨立的、較小的子程序(即模塊),并把這些模塊按層次關系進行組織。按照結構化程序設計的原則,一個程序只能由順序結構、選擇結構和循環(huán)結構這 3 種基本結構組成。
人們解決復雜問題普遍采用自頂向下、逐步求精和模塊化的方法,在這種設計方法的指導下開發(fā)出來的程序,具有清晰的層次結構,容易閱讀和維護,軟件開發(fā)的成功率和生產率可極大地提高。因此,使用結構化方法設計出的程序等于數據結構加算法。
已經證明,任何復雜的算法都可以用順序、選擇、循環(huán)這3種結構組合而成。所以,這3種控制結構稱為程序的3種基本控制結構。
1.順序結構
順序結構如圖1.3所示,圖中(b)是N-S流程圖。其中A和B是順序執(zhí)行的關系,即先執(zhí)行模塊A操作,再執(zhí)行模塊B操作。

圖1.3 順序結構
圖1.2就是例1.1中求兩個整數m與n之和的傳統(tǒng)流程圖結構,它只需順序結構就能解決問題。
2.選擇結構
選擇結構又稱為分支結構,如圖1.4所示,圖中(b)是N-S流程圖。其中,P代表一個條件,當條件P成立時(或稱為“真”時),執(zhí)行模塊A,否則執(zhí)行模塊B。注意,只能執(zhí)行A 或B之一,兩條路徑匯合在一起結束該分支結構。通過下面的例子,讀者可以了解如何用自然語言、N-S流程圖描述分支結構。

圖1.4 選擇結構

圖1.5 例1.2算法
【例1.2】 求a、b兩個整數中較小的數。
用自然語言求解該問題的步驟如下。
步驟1:輸入整數a和b。
步驟2:進行判斷,如果a<b,則min=a,否則min=b。
步驟3:輸出兩數中較小的數min。
用N-S流程圖求解該問題的過程如圖1.5所示。
3.循環(huán)結構
循環(huán)結構又稱為重復結構,有兩種循環(huán)形式。一種是當型循環(huán)結構,如圖1.6所示。其中,P代表一個條件,當條件P成立(“真”)時,反復執(zhí)行模塊A操作,直到P 為“假”時才停止循環(huán)。另一種是直到型循環(huán)結構,如圖1.7所示。先執(zhí)行模塊 A操作,再判斷條件P是否為“假”,若P為“假”,再執(zhí)行A,如此反復,直到 P為“真”為止。

圖1.6 當型循環(huán)結構

圖1.7 直到型循環(huán)結構
下面通過例題,使讀者了解如何用自然語言、N-S結構圖描述循環(huán)結構。
【例1.3】 計算1+2+3+4+…+100。
用自然語言求解該問題的步驟如下。
步驟1:定義變量sum用來存放和值,并將初值0賦給sum,使sum的值為0;定義變量k,用來存放每一項的值,并將1賦給k。
步驟2:判斷k的值是否小于或等于100,如果是,則繼續(xù)執(zhí)行步驟3,否則轉到步驟5,退出循環(huán)。
步驟3:將sum與k的和賦給sum。
步驟4:將k的值增1,返回步驟2重復執(zhí)行。
步驟5:輸出和值sum。
用N-S流程圖求解該問題的過程如圖1.8所示。

圖1.8 例1.3算法
可以看到,3種基本控制結構共有的特點是:有一個入口,有一個出口;結構中每一部分都有被執(zhí)行到的機會,也就是說,每一部分都有一條從入口到出口的路徑通過它(至少通過一次);沒有死循環(huán)(無終止的循環(huán))。
結構化程序要求每一基本控制結構具有單入口和單出口的性質是非常重要的,這是為了便于保證和驗證程序的正確性。在設計程序時,一個結構一個結構地順序寫下來,整個程序結構如同砌墻一樣順序清楚,層次分明;在需要修改程序時,可以將某一基本控制結構單獨取出來進行修改,由于其具有單入口單出口的性質,不會影響到其他的基本控制結構。可以把每個基本控制結構看作是一個算法單位,整個算法則由若干個算法單位組合而成。這樣的算法稱為結構化算法。而這樣設計出的程序清晰易讀,可理解性好,容易設計,容易驗證其正確性,也容易維護。同時,由于采用了“自頂向下、逐步細化”的實施方法,能有效地組織人們的思路,有利于軟件的工程化開發(fā),提高編程工作的效率,降低軟件的開發(fā)成本。
渣男洗白手冊
陸七權奕珩
一個寢室4個0
好孕臨門
古玩之金瞳鑒寶
第一贅婿(秦立楚清音)
木葉之封火連天
暖風多情
一日看盡長安花
七十年代真夫妻