導航:首頁 > 軟體知識 > 結構化程序使用哪個語句更便捷

結構化程序使用哪個語句更便捷

發布時間:2023-07-31 23:29:27

『壹』 結構化設計方法及編程語言有何特點它們有哪幾種基本控制結構

結構化程序的概念首先是從以往編程過程中無限制地使用轉移語句而提出的。轉移語句可以使程序的控制流程強制性的轉向程序的任一處,在傳統流程圖中,就是用上節我們提到的"很隨意"的流程線來描述這種轉移功能。如果一個程序中多處出現這種轉移情況,將會導致程序流程無序可尋,程序結構雜亂無章,這樣的程序是令人難以理解和接受的,並且容易出錯。尤其是在實際軟體產品的開發中,更多的追求軟體的可讀性和可修改性,象這種結構和風格的程序是不允許出現的。為此提出了程序的三種基本結構。

在討論演算法時我們列舉了程序的順序、選擇和循環三種控制流程,這就是結構化程序設計方法強調使用的三種基本結構。演算法的實現過程是由一系列操作組成的,這些操作之間的執行次序就是程序的控制結構。1996年,計算機科學家Bohm和Jacopini證明了這樣的事實:任何簡單或復雜的演算法都可以由順序結構、選擇結構和循環結構這三種基本結構組合而成。所以,這三種結構就被稱為程序設計的三種基本結構。也是結構化程序設計必須採用的結構。

1. 順序結構
順序結構表示程序中的各操作是按照它們出現的先後順序執行的,其流程如圖1-6所示。圖中的s1和s2表示兩個處理步驟,這些處理步驟可以是一個非轉移操作或多個非轉移操作序列,甚至可以是空操作,也可以是三種基本結構中的任一結構。整個順序結構只有一個入口點a和一個出口點b。這種結構的特點是:程序從入口點a開始,按順序執行所有操作,直到出口點b處,所以稱為順序結構。上一節圖1-2表示的就是一個順序結構的流程圖。事實上,不論程序中包含了什麼樣的結構,而程序的總流程都是順序結構的。例如,在圖1-3、圖1-4和圖1-5所表示的流程圖中,其總體結構流程都是自上而下順序執行的。

2.選擇結構
選擇結構表示程序的處理步驟出現了分支,它需要根據某一特定的條件選擇其中的一個分支執行。選擇結構有單選擇、雙選擇和多選擇三種形式。
雙選擇是典型的選擇結構形式,其流程如圖1-8所示,圖中的s1和s2與順序結構中的說明相同。由圖中可見,在結構的入口點a處是一個判斷框,表示程序流程出現了兩個可供選擇的分支,如果條件滿足執行s1處理,否則執行s2處理。值得注意的是,在這兩個分支中只能選擇一條且必須選擇一條執行,但不論選擇了哪一條分支執行,最後流程都一定到達結構的出口點b處。前面的圖1-3中就採用了雙選擇結構流程圖。

當s1和s2中的任意一個處理為空時,說明結構中只有一個可供選擇的分支,如果條件滿足執行s1處理,否則順序向下到流程出口b處。也就是說,當條件不滿足時,什麼也沒執行,所以稱為單選擇結構,如圖1-7所示。

多選擇結構是指程序流程中遇到如圖1-9所示的s1、s2、……、sn等多個分支,程序執行方向將根據條件確定。如果滿足條件1則執行s1處理,如果滿足條件n則執行Sn處理,總之要根據判斷條件選擇多個分支的其中之一執行。不論選擇了哪一條分支,最後流程要到達同一個出口處。如果所有分支的條件都不滿足,則直接到達出口。有些程序語言不支持多選擇結構,但所有的結構化程序設計語言都是支持的,C語言是面向過程的結構化程序設計語言,它可以非常簡便的實現這一功能。本書在第五章將詳細介紹各種形式的選擇結構應用問題。

3.循環結構
循環結構表示程序反復執行某個或某些操作,直到某條件為假(或為真)時才可終止循環。在循環結構中最主要的是:什麼情況下執行循環?哪些操作需要循環執行?循環結構的基本形式有兩種:當型循環和直到型循環,其流程如圖1-10所示。圖中虛線框內的操作稱為循環體,是指從循環入口點a到循環出口點b之間的處理步驟,這就是需要循環執行的部分。而什麼情況下執行循環則要根據條件判斷。

當型結構:表示先判斷條件,當滿足給定的條件時執行循環體,並且在循環終端處流程自動返回到循環入口;如果條件不滿足,則退出循環體直接到達流程出口處。因為是"當條件滿足時執行循環",即先判斷後執行,所以稱為當型循環。其流程如圖1-10(a)所示。
直到型循環:表示從結構入口處直接執行循環體,在循環終端處判斷條件,如果條件不滿足,返回入口處繼續執行循環體,直到條件為真時再退出循環到達流程出口處,是先執行後判斷。因為是"直到條件為真時為止",所以稱為直到型循環。其流程如圖1-10(b)所示。本章圖1-5用迭代法求和的流程圖就是一個典型的直到型循環結構。
同樣,循環型結構也只有一個入口點a和一個出口點b,循環終止是指流程執行到了循環的出口點。圖中所表示的S處理可以是一個或多個操作,也可以是一個完整的結構或一個過程。

整個虛線框中是一個循環結構。
通過三種基本控制結構可以看到,結構化程序中的任意基本結構都具有唯一入口和唯一出口,並且程序不會出現死循環。在程序的靜態形式與動態執行流程之間具有良好的對應關系。

1.3.2 N-S流程圖

N-S流程圖是結構化程序設計方法中用於表示演算法的圖形工具之一。對於結構化程序設計來說,傳統流程圖已很難完全適應了。因為傳統流程圖出現得較早,它更多地反映了機器指令系統設計和傳統程序設計方法的需要,難以保證程序的結構良好。另外,結構化程序設計的一些基本結構在傳統流程圖中沒有相應的表達符號。例如,在傳統流程圖中,循環結構仍採用判斷結構符號來表示,這樣不易區分到底是哪種結構。特別是傳統流程圖由於轉向的問題而無法保證自頂而下的程序設計方法,使模塊之間的調用關系難以表達。為此,兩位美國學者Nassi和Shneiderman於1973年就提出了一種新的流程圖形式,這就是N-S流程圖,它是以兩位創作者姓名的首字母取名,也稱為Nassi Shneiderman圖。

N-S圖的基本單元是矩形框,它只有一個入口和一個出口。長方形框內用不同形狀的線來分割,可表示順序結構、選擇結構和循環結構。在N-S流程圖中,完全去掉了帶有方向的流程線,程序的三種基本結構分別用三種矩形框表示,將這種矩形框進行組裝就可表示全部演算法。這種流程圖從表達形式上就排除了隨意使用控制轉移對程序流程的影響,限制了不良程序結構的產生。
與順序、選擇和循環這三種基本結構相對應的N-S流程圖的基本符號如圖1-11所示。圖1-11(a)和圖1-11(b)分別是順序結構和選擇結構的N-S圖表示,圖1-11(c)和圖1-11(d)是循環結構的N-S圖表示。由圖可見,在N-S圖中,流程總是從矩形框的上面開始,一直執行到矩形框的下面,這就是流程的入口和出口,這樣的形式是不可能出現無條件的轉移情況。下面用N-S流程圖表示前面例1-2中求函數值m的演算法,其流程如圖1-12所示。

值得注意的是,N-S流程圖是適合結構化程序設計方法的圖形工具,對於非結構化的程序,用N-S流程圖是無法表示的。
例如在例1-3中,求任意兩個正整數的最大公約數,其演算法是非常經典的,圖1-5中用傳統流程圖表示了該演算法,但是這個演算法卻無法直接用N-S流程圖表示。因為該演算法的關鍵是執行一個循環結構,但圖1-5表示的循環結構既不是當型循環,也不是直到型循環,這樣,用N-S流程圖就無法表示。如果將例1-3中的演算法稍作調整,使流程圖採用單選擇結構形式,其中的條件改為r≠0,這樣就可以用直到型循環的N-S流程圖表示這個演算法。圖1-13是表示例1-3的N-S流程圖。

N-S流程圖是描述演算法的重要圖形工具之一,在結構化程序設計中得到了廣泛應用。在此僅作簡單介紹,旨在拋磚引玉。在實際軟體開發中,有興趣的讀者可參閱有關軟體工程或軟體開發技術等方面的著作。

1.3.3 結構化程序設計方法

結構化程序設計方法是公認的面向過程編程應遵循的基本方法和原則。結構化程序設計方法主要包括:①只採用三種基本的程序控制結構來編製程序,從而使程序具有良好的結構;②程序設計自頂而下;③用結構化程序設計流程圖表示演算法。

有關結構化程序設計及方法有一整套不斷發展和完善的理論和技術,對於初學者來說,完全掌握是比較困難的。但在學習的起步階段就了解結構化程序設計的方法,學習好的程序設計思想,對今後的實際編程是很有幫助的。

1.結構化程序設計特徵
結構化程序設計的特徵主要有以下幾點:
(1) 以三種基本結構的組合來描述程序;
(2) 整個程序採用模塊化結構;
(3) 有限制地使用轉移語句,在非用不可的情況下,也要十分謹慎,並且只限於在一個結構內部跳轉,不允許從一個結構跳到另一個結構,這樣可縮小程序的靜態結構與動態執行過程之間的差異,使人們能正確理解程序的功能;
(4) 以控制結構為單位,每個結構只有一個入口,一個出口,各單位之間介面簡單,邏輯清晰;
(5) 採用結構化程序設計語言書寫程序,並採用一定的書寫格式使程序結構清晰,易於閱讀;
(6) 注意程序設計風格。

2. 自頂而下的設計方法
結構化程序設計的總體思想是採用模塊化結構,自上而下,逐步求精。即首先把一個復雜的大問題分解為若干相對獨立的小問題。如果小問題仍較復雜,則可以把這些小問題又繼續分解成若乾子問題,這樣不斷地分解,使得小問題或子問題簡單到能夠直接用程序的三種基本結構表達為止。然後,對應每一個小問題或子問題編寫出一個功能上相對獨立的程序塊來,這種象積木一樣的程序塊被稱為模塊。每個模塊各個擊破,最後再統一組裝,這樣,對一個復雜問題的解決就變成了對若干個簡單問題的求解。這就是自上而下,逐步求精的程序設計方法。

確切地說,模塊是程序對象的集合,模塊化就是把程序劃分成若干個模塊,每個模塊完成一個確定的子功能,把這些模塊集中起來組成一個整體,就可以完成對問題的求解。這種用模塊組裝起來的程序被稱為模塊化結構程序。在模塊化結構程序設計中,採用自上而下,逐步求精的設計方法便於對問題的分解和模塊的劃分,所以,它是結構化程序設計的基本原則。

例1-9: 求一元二次方程:
ax2+bx+c=0
的根。
分析:先從最上層考慮,求解問題的演算法可以分成三個小問題,即:輸入問題、求根問題和輸出問題。這三個小問題就是求一元二次方程根的三個功能模塊:輸入模塊M1、計算處理模塊M2和輸出模塊M3。其中M1模塊完成輸入必要的原始數據,M2模塊根據求根演算法求解,M3模塊完成所得結果的顯示或列印。這樣的劃分,使求一元二次方程根的問題變成了三個相對獨立的子問題,其模塊結構如圖1-14所示。
分解出來的三個模塊從總體上是順序結構。其中M1和 M3模塊是完成簡單的輸入和輸出,可以直接設計出程序流程,不需要再分解。而M2模塊是完成求根計算,求根則需要首先判斷二次項系數a是否為0。當a=0時,方程蛻化成一次方程,求根方法就不同於二次方程。如果a≠0,則要根據b2-4ac的情況求二次方程的根。可見M2模塊比較復雜,可以將其再細化成M21和M22兩個子模塊,分別對應一次方程和二次方程的求根,其模塊結構如圖1-15所示。
此次分解後,M21子模塊的功能是求一次方程的根,其演算法簡單,可以直接表示。M22是求二次方程的根,用流程圖表示演算法如圖1-16所示,它由簡單的順序結構和一個選擇結構組成,這就是M22模塊最細的流程表示。然後,按照細化M22模塊的方法,分別將M1、M21和M3的演算法用流程圖表示出來,再分別按圖1-15和圖1-14的模塊結構組裝,最終將得到細化後完整的流程圖。
可見,編製程序與建大樓一樣,首先要考慮大樓的整體結構而忽略一些細節問題,待把整體框架搭起來後,再逐步解決每個房間的細節問題。在程序設計中就是首先考慮問題的頂層設計,然後再逐步細化,完成底層設計。使用自頂向下、逐步細化的設計方法符合人們解決復雜問題的一般規律,是人們習慣接受的方法,可以顯著地提高程序設計的效率。在這種自頂而下、分而治之的方法的指導下,實現了先全局後局部,先整體後細節,先抽象後具體的逐步細化過程。這樣編寫的程序具有結構清晰的特點,提高程序的可讀性和可維護性。

3. 程序設計的風格
程序設計風格從一定意義上講就是一種個人編寫程序時的習慣。而風格問題不象方法問題那樣涉及一套比較完善的理論和規則,程序設計風格是一種編寫程序的經驗和教訓的提煉,不同程度和不同應用角度的程序設計人員對此問題也各有所見。正因為如此,程序設計風格很容易被人們忽視,尤其是初學者。結構化程序設計強調對程序設計風格的要求。因為,程序設計風格主要影響程序的可讀性。一個具有良好風格的程序應當注意以下幾點:
(1) 語句形式化。程序語言是形式化語言,需要准確,無二義性。所以,形式呆板、內容活潑是軟體行業的風范;
(2) 程序一致性。保持程序中的各部分風格一致,文檔格式一致;
(3) 結構規范化。程序結構、數據結構、甚至軟體的體系結構要符合結構化程序設計原則;
(4) 適當使用注釋。注釋是幫助程序員理解程序,提高程序可讀性的重要手段,對某段程序或某行程序可適當加上注釋;
(5) 標識符貼近實際。程序中數據、變數和函數等的命名原則是:選擇有實際意義標識符,以易於識別和理解。要避免使用意義不明確的縮寫和標識符。例如:表示電壓和電流的變數名盡量使用v和i,而不要用a和b。要避免使用類似aa、bb等無直觀意義的變數名。

閱讀全文

與結構化程序使用哪個語句更便捷相關的資料

熱點內容
有什麼可以增強數據流量 瀏覽:338
陝西哪裡有古幣交易市場 瀏覽:294
淘寶如何刪除評價後的信息 瀏覽:283
如何評估自動駕駛技術 瀏覽:754
景區要身份證哪些信息 瀏覽:757
京東小程序怎麼看直播 瀏覽:585
如何打開流量數據 瀏覽:40
單片機cpu怎麼燒程序 瀏覽:908
底妝產品有哪些bb 瀏覽:25
信息大廈在福田站哪個出口 瀏覽:429
文件如何改回未知程序 瀏覽:532
網上的交易安全性怎麼樣 瀏覽:953
疫情信息送達平均只需要多少小時 瀏覽:873
程序員學什麼專業好就業 瀏覽:976
賣稻穀在哪裡交易 瀏覽:678
版權代理包括哪些 瀏覽:191
市場上如何區分布偶貓的價格 瀏覽:280
ebank是什麼交易 瀏覽:704
怎麼找市場經理 瀏覽:81
小學信息學奧賽有什麼用 瀏覽:940