官术网_书友最值得收藏!

  • C語言程序設計
  • 姚嵩
  • 1680字
  • 2021-01-18 11:06:19

1.6 解決問題與程序設計

有了適用的程序語言,該如何著手編寫程序呢?程序設計是一種智力勞動,編程序就是解決問題。初學程序設計時寫的是很簡單的程序,與做一道數學應用題或物理練習題有類似之處。編程序時面對的是一個需要解決的問題,要完成的是一個符合題目要求的程序。一般來說,解決問題的過程可分為3步:第一步是分析問題,設計一種解決方案;第二步是通過程序語言嚴格描述這個解決方案;第三步是在計算機上試用這個程序,運行它,看是否真能解決問題。如果在第三步發現錯誤,那么就需要仔細分析錯誤原因,弄清楚并后退到前面步驟去糾正錯誤。如果發現程序有問題,那就要修改它,然后重新編譯運行和檢查;如果發現求解方案有誤,那就需要修改方案,重編程序,……

這個工作過程的第一步與在其他領域里解決問題類似,只是考慮問題的基礎不同。在程序設計中,需要從計算和程序的觀點出發,這將引出許多新問題,這是本書討論的一個重要方面。第二步和第三步是程序設計的特殊問題。由于程序語言的各種結構有明確定義的功能,把頭腦中形成的解決方案變為程序語言描述,往往也不是直截了當的,而需要經過仔細考慮和規劃。另外,程序語言有嚴格規定的形式,把想清楚的程序按符合規定的形式寫出來,也需要做不少工作,在這個過程中也可能犯錯誤。前面關于程序中可能的錯誤與排除的討論,應主要關注第二步和第三步之間的小循環,這個方面有許多新東西需要學習。至于發現問題的解決方案有錯誤,則需要根據對所發現問題的深入分析而得出。

在程序設計領域里,在解決小問題與解決大問題或是為完成練習而寫程序與為解決實際應用而寫程序之間并沒有鴻溝。開發大的實際程序或軟件系統,增加的主要是前期工作。即首先要把問題分析清楚,弄明白到底要做什么,這方面還需要進一步學習。

本課程涉及的東西很多,包括知識的記憶和靈活掌握,解決問題的思維方法,具體處理的手段和技巧,還有許多實際工作和操作技能問題。本書把幾個重要方面列在這里。

(1)分析問題的能力,特別是從計算和程序的角度分析問題的能力。應逐漸學會從問題出發,通過逐步分析和分解,把原問題轉化為能用計算機通過程序方式解決的問題。在此過程中構造出一個解決方案。這方面的研究沒有止境,許多專業性問題都需要用計算機解決,為此,參與者既需要熟悉計算機,也需要熟悉專業領域。將來的世界特別需要這種兼容型的人才。雖然課程和教科書里的問題很簡單,但它們卻是通向解決復雜問題的橋梁。

(2)掌握所用的程序語言,熟悉語言中的各種結構,包括其形式和意義。語言是解決程序問題的工具,要想寫好程序,必須熟悉所用語言。應注意,熟悉語言絕不是背誦定義,這個熟悉過程只有通過程序設計的實踐才能完成。就像上課再多也不能學會開車一樣,僅靠看書、讀程序、抄程序不可能真正學會寫程序。要學會寫程序,就需要反復地親身實踐從問題到程序的整個過程,開動腦筋,想辦法處理遇到的各種情況。

(3)學會寫程序。雖然寫過程序的人很多,但會寫程序、能寫出好程序的人就少得多了。經過多年的程序設計實踐,人們對什么是“好程序”有了許多共同認識。例如,解決同樣問題,寫出的程序更簡單就是一個目標,這里可能有計算方法的選擇問題、有語言的使用問題,其中需要確定適用的程序結構等。除了程序本身是否正確外,人們還特別關注寫出的程序是否具有良好的結構,是否清晰,是否易于閱讀和理解,當問題中有些條件或要求改變時,程序是否容易修改而滿足新的要求,等等。后面許多章節里會反復提到這些問題。

(4)檢查程序錯誤的能力。初步寫出的程序常會包含一些錯誤,雖然語言系統能幫人們查出其中的一些,并通告發現錯誤的位置,但確認實際錯誤和實際位置,確定如何改正,這些永遠是編程者自己的事。對于系統提出的各種警告、系統無法檢查的錯誤等的認定就更依靠人的能力了。這種能力也需要在學習中有意識地鍛煉。

(5)熟悉所用工具和環境。程序設計要用一些編程工具,要在具體的計算機環境中進行,熟悉工具和環境也是這個學習中很重要的一部分。目前大部分讀者可能要用某種集成開發環境做程序實習,熟悉這種環境的使用也很重要,能大大提高人們的工作效率。

主站蜘蛛池模板: 普陀区| 富平县| 全椒县| 遵义市| 宽城| 横山县| 天津市| 忻城县| 汉川市| 周口市| 霍林郭勒市| 马山县| 永顺县| 德兴市| 博乐市| 玉树县| 新干县| 麻阳| 莱阳市| 乌苏市| 峡江县| 攀枝花市| 浦县| 福贡县| 丽江市| 桂阳县| 深圳市| 和龙市| 阳新县| 连平县| 吐鲁番市| 孝昌县| 普格县| 永寿县| 肃宁县| 丹阳市| 德格县| 昌宁县| 青河县| 铜川市| 岳普湖县|