2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

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

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

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

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

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

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

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

8、表示三種基本結(jié)構(gòu)的語句,所以用結(jié)構(gòu)化程序設(shè)計方法設(shè)計的模塊從結(jié)構(gòu)到程序的實現(xiàn)是直接轉(zhuǎn)換的,只需用相應(yīng)的語句結(jié)構(gòu)代替標(biāo)準的控制結(jié)構(gòu)即可。筆者在實際應(yīng)用中,總結(jié)出以下幾點實用技巧。 </p><p>  一、通過引申法廓清思路,選準目標(biāo) </p><p>  “引申法”就是通過對某一結(jié)論的合理引申,結(jié)合已經(jīng)解決的問題,因勢利導(dǎo),在此基礎(chǔ)上解決相關(guān)聯(lián)的其他問題?!耙攴ā笨梢耘囵B(yǎng)人們在程序設(shè)計方

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

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

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

12、序邏輯結(jié)構(gòu)清晰,易讀易懂,并且容易驗證程序的正確性。 </p><p>  三、借助求異法引導(dǎo)新思路,啟迪新思維 </p><p>  結(jié)構(gòu)化程序設(shè)計方法的基本思路是:把一個復(fù)雜的問題的求解過程分階段進行,每個階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。一個固定的問題,解決的方法可能不唯一,如果能啟發(fā)人們多角度、多側(cè)面去尋求解決問題的辦法,則可激發(fā)思考的積極性,提高其學(xué)習(xí)興致。對一個

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

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

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

16、下優(yōu)惠:凡是購買10件以上者,打9折;20件以上者,8.5折優(yōu)惠;30件以上者,8折優(yōu)惠,40件以上者,7.5折優(yōu)惠。如用習(xí)慣上的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(“網(wǎng)友應(yīng)付優(yōu)惠后款額Y為:y);} </p><p>  顯然,這段程序冗長,一旦情況有變化,難以擴展。轉(zhuǎn)換為switch語句結(jié)構(gòu)后,程序就變得相對簡單: </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(“網(wǎng)友應(yīng)付優(yōu)惠后款額Y為:y);} </p><p>  兩種方法可謂異曲同工,但是對于

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

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

溫馨提示

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

評論

0/150

提交評論