淺析結構化程序的設計技巧_第1頁
已閱讀1頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  淺析結構化程序的設計技巧</p><p>  摘 要:結構化程序設計方法可以概括為自頂向下、逐步求精和模塊化,將原來較為復雜的問題化簡為一系列簡單模塊的設計方法。本文從結構程序設計的基本特點入手,簡要分析了在結構化程序設計中靈活運用若干技巧對提高程序設計的穩(wěn)定性和可靠性的應用價值。 </p><p>  關鍵詞:結構化程序設計 數據結構 算法 設計技巧 </p&

2、gt;<p>  近年來,計算機程序設計技術已從結構化程序設計技術逐步向對象程序設計技術過渡,特別是當設計一個較大規(guī)模的應用程序時,面向對象設計思路成為首選。縱觀計算機軟件技術的發(fā)展,在局部功能的實現(xiàn)上及功能模塊的設計上,結構化程序設計仍然有其不可替代的獨特魅力。在結構化程序設計中(以C語言為例),巧妙地運用一些設計技巧,對增強程序的穩(wěn)定性和可靠性,簡化程序操作步聚,提高程序的運行效率十分有效。 </p>&

3、lt;p>  結構化程序設計的概念最初是由荷蘭學者E?W?DUKSTRA等人在20世紀60年代提出的,它的基本思路是:以模塊化設計為中心,將原來較為復雜的問題簡化為一系列簡單模塊的設計,也就是將一個大的計算任務劃分為若干個較小的任務,這些小任務均由函數來完成。函數既可以是C語言定義的標準庫函數,也可以是自定義函數。在實際應用程序中,一個具備一定規(guī)模的C語言程序往往由多個函數組成,其中必有一個命名為main的主函數,由main來調用

4、其他函數。必要時,其他函數還可以調用另外的函數,同一函數可以被一個或多個函數調用一次或多次。 </p><p>  結構化程序設計把程序歸結為用順序結構、選擇結構和循環(huán)結構等三種基本結構來描述的邏輯問題。順序結構的程序流程是按語句的書寫順序依次執(zhí)行;在C語言中,有4種語句是順序執(zhí)行的:即空語句、表達式語句、函數調用語句及復合語句;選擇結構是對給定條件進行判斷,根據判斷結果決定執(zhí)行兩分支中的一個分支或多分支中的一個

5、分支,選擇語句有if語句和switch語句;循環(huán)結構是在給定條件成立的情況下,反復執(zhí)行某個程序段,循環(huán)語句有for,while和do-while語句以及一些輔助流程轉向語句如continue,break,go to等等。以上三種結構通過流程控制語句來實現(xiàn)。流程控制語句在程序設計中起著十分重要的作用,通過三種基本控制結構的合理調配使結構化程序具有唯一的入口和出口,不會出現(xiàn)死循環(huán),而且程序的靜態(tài)形式與動態(tài)執(zhí)行形式之間具有良好的對應關系。 &

6、lt;/p><p>  從以上結構化程序的基本特點分析,結構化程序設計主要強調的是程序。程序=算法+數據結構+程序設計方法+語言工具和環(huán)境,其中算法是靈魂,是解決“做什么”和“怎么做”的問題;數據結構是加工對象;語言是工具;編程需要采用合適的方法。具體解決主要問題包含以下幾個步驟: </p><p>  分析問題,找出解決問題的模型→根據模型設計出適合計算機特點的處理方法即算法→進行編程程序,

7、以實現(xiàn)算法→上機編輯(.c)、編譯(.obj)、連接(.exe)、運行所編制的程序,直到得出正確結果→對結果進行分析,整理出文字材料。 </p><p>  程序設計的任務不只是編寫出一個能得到正確結果的程序,還應考慮程序的質量,否則編寫的程序就會出現(xiàn)質量低下、可靠性差、開發(fā)周期長、維護費用高等不良后果,即所謂的的“軟件危機”,它會嚴重阻礙計算機應用的發(fā)展。由于大多高級語言都支持結構化程序設計方法,其語法上都含有

8、表示三種基本結構的語句,所以用結構化程序設計方法設計的模塊從結構到程序的實現(xiàn)是直接轉換的,只需用相應的語句結構代替標準的控制結構即可。筆者在實際應用中,總結出以下幾點實用技巧。 </p><p>  一、通過引申法廓清思路,選準目標 </p><p>  “引申法”就是通過對某一結論的合理引申,結合已經解決的問題,因勢利導,在此基礎上解決相關聯(lián)的其他問題。“引申法”可以培養(yǎng)人們在程序設計方

9、面的發(fā)散思維,提高程序設計的應變能力。問題是活的,但程序是有章可循的;語法是有限的,可解決的問題是無限的。程序設計相當一部分工作是分析問題,找到解決問題的方法,再以相應的語言寫出代碼。要熟練掌握一些簡單的算法,根據不同的問題,再靈活應用。如用100元錢買100只雞,公雞、母雞、小雞分別是5元、3元、1元一只。在數學上解三元一次方程,三個未知數,兩個方程好像解不出來。通過“窮舉法”,我們要費好大一番工夫才能算出結果,但是通過計算機“引申”

10、編程運算卻不用一秒鐘即可解決問題。只有在分析實際向題的基礎上,以清晰的思路去設計算法,才能舉一反三,以不變應萬變。通過“引申”法,我們可使初學者對函數設計的關鍵問題有清晰的認識,利于從統(tǒng)籌全局的角度去考慮問題,體現(xiàn)了程序設計逐步求精的思路。 </p><p>  二、利用框架法培養(yǎng)全局思維和算法的整體設計能力 </p><p>  其具體體現(xiàn)在兩方面。一是在有了一點編程基礎后要利用偽代碼或

11、流程圖,從算法設計的角度講解編程思路,而不應拘泥于語法細節(jié),不分主次、逐條語句地講解代碼。這樣可以層次分明,突出算法設計的關鍵,利于培養(yǎng)編程思路。二是在學習重點章節(jié)函數時,由于新的算法已很少,主要是學習用函數調用的方法來重新編制以前所熟悉的程序,我們可以把著眼點放在函數的設計框架上,體現(xiàn)參數設計、返回值設計等關鍵問題,而無需細講函數體的實現(xiàn)細節(jié)。結構化構造減小了程序的復雜性,提高了可靠性、可測試性和可維護性,使用少數的基本結構,就可使程

12、序邏輯結構清晰,易讀易懂,并且容易驗證程序的正確性。 </p><p>  三、借助求異法引導新思路,啟迪新思維 </p><p>  結構化程序設計方法的基本思路是:把一個復雜的問題的求解過程分階段進行,每個階段處理的問題都控制在人們容易理解和處理的范圍內。一個固定的問題,解決的方法可能不唯一,如果能啟發(fā)人們多角度、多側面去尋求解決問題的辦法,則可激發(fā)思考的積極性,提高其學習興致。對一個

13、初學計算機語言的人來說,最重要的就是要有正確的程序流程概念,不僅要懂得,而且要靈活應用。由此可見,用結構化方法設計的結構是清晰的,有利于編寫出結構良好的程序。在C語言中一題多解的情況有很多,有意識地引導新思路,鼓勵新方法,以培養(yǎng)人們在編程中的求異思維,而不是死記硬背,墨守成規(guī)。結構化程序設計強調程序設計風格和程序結構的規(guī)范化,提倡清晰的結構。   四、選準切入口,合理劃分功能模塊“分而治之” </p><p>

14、  結構化程序設計的關鍵在于功能模塊的選定和劃分。模塊化設計的思想實際上是一種“分而治之”的思想,把一個大任務分為若干個子任務,每一個子任務的劃分以相對簡單為前提。劃分子模塊時我們應注意模塊的獨立性,即:使一個模塊完成一項功能,耦合性愈少愈好。具體應用時從問題本身入手,自頂向下,逐步細化,精益求精,將解決問題的步驟分解為由基本程序結構模塊組成的通過程序流程圖、N-S圖、PAD圖表格等表示的結構化程序框圖。在實踐應用中往往會出現(xiàn)以下幾個問

15、題:一是用戶要求難以在系統(tǒng)分析階段準確定義,致使系統(tǒng)在交付使用時產生許多問題。二是用系統(tǒng)開發(fā)每個階段的成果來進行控制,不能適應事物變化的要求。三是系統(tǒng)的開發(fā)周期較長。 </p><p>  為解決這些問題,我們要求模塊的設計要簡潔明了,語句的選用要直觀,不要拖泥帶水。下面是一段小程序,從中可以看出一些語句選用的技巧。 </p><p>  某淘寶商城為鼓勵更多網友光臨本店,對新老網友給出如

16、下優(yōu)惠:凡是購買10件以上者,打9折;20件以上者,8.5折優(yōu)惠;30件以上者,8折優(yōu)惠,40件以上者,7.5折優(yōu)惠。如用習慣上的if嵌套語句編寫程序如下: </p><p><b>  Main() </b></p><p>  {float x,y; </p><p>  printf(“請輸入優(yōu)惠購額款X:\n”); </p>

17、<p>  scanf(“%f”,&x); </p><p><b>  if(x<10) </b></p><p><b>  y=x; </b></p><p>  else if(x<20) </p><p><b>  y=0.9*x; </

18、b></p><p>  else if(x<30) </p><p>  y=0.85*x; </p><p>  else if(x<40) </p><p><b>  y=0.8*x; </b></p><p><b>  else </b><

19、/p><p>  y=0.75*x; </p><p>  printf(“網友應付優(yōu)惠后款額Y為:y);} </p><p>  顯然,這段程序冗長,一旦情況有變化,難以擴展。轉換為switch語句結構后,程序就變得相對簡單: </p><p><b>  Main() </b></p><p> 

20、 {float x,y; </p><p><b>  Int t; </b></p><p>  Printf(“請輸入優(yōu)惠購額款X:\n”); </p><p>  Scanf(“%f”,&x); </p><p>  If(x>=40) </p><p><b>  

21、t =4; </b></p><p><b>  elst </b></p><p>  t=(in)(x/10); </p><p>  switch(t) </p><p>  {case 0:y=x;break; </p><p>  case1:y=0.9*x;break; &

22、lt;/p><p>  case2:y=0.85*x;break; </p><p>  case3:y=0.8*x;break; </p><p>  case4:y=0.75*x;break;} </p><p>  printf(“網友應付優(yōu)惠后款額Y為:y);} </p><p>  兩種方法可謂異曲同工,但是對于

23、程序的調試性和可維護性卻有天壤之別。在結構化程序的編程實踐中,我們要查找某些錯誤比較困難,所以要盡可能避免出現(xiàn)這些問題。編程技巧需要在編制和調試結構化程序時不斷總結和完善,力求找出最簡便、最直觀的方法。 </p><p>  總之,結構化程序設計方法在實際應用中有許多技巧可以合理運用,這需要我們對算法和數據結構展開深入分析,尋找最佳結合點,有的放矢,對癥下藥;更需要在實踐中不斷總結和積累。在編寫過程中我們覺得有些

24、程序沒什么問題,但是一上機調試,就出現(xiàn)這樣或那樣的問題,這說明程序還不完善,還需要調整或改進。當今,高效率和快節(jié)湊的生活與工作方式對程序的設計提出了更高的要求和更苛刻的標準,我們只有不斷創(chuàng)新設計理念和方法,才能編制出更多高質量、高性能、低故障的優(yōu)質程序。 </p><p><b>  參考文獻: </b></p><p>  [1]林銳等編著.高質量程序設計指南[M]

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論