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

  • C語言程序設計
  • 郭一晶 薛春艷主編
  • 1723字
  • 2019-10-14 11:41:58

1.2 C程序的開發

1.2.1 C程序的編寫和運行

一般說來,C程序的開發步驟要經過分析、設計、編碼、編譯、連接、運行、調試等一系列步驟。每個步驟產生的文件類型和具體流程如圖1.2所示。

圖1.2 編寫C語言的步驟

1.程序分析

程序分析主要是明確程序需要什么功能,解決程序需要“做什么”的問題。

2.程序設計

程序設計是在程序分析的基礎上,對解決問題的方法、思路或算法進行整理的過程,解決程序“怎么做”的問題。在該階段,可以借助一些圖形化的表達方式進行描述,比如流程圖。

3.程序編碼

程序編碼是指根據C語言程序設計規范將程序設計階段整理好的思路轉換為源文件。C語言源文件的擴展名是.c。程序的編碼工作一般在IDE上面進行,也可以在文本編輯器上面進行。

4.程序編譯

C語言編譯器能夠識別C語言代碼中的詞匯、句子以及各種特定的格式,并將他們轉換成計算機能夠識別的目標文件,這個過程稱為編譯(Compile)。目標文件由段組成,擴展名是.obj。通常一個目標文件中至少有兩個段。

(1)代碼段:該段中所包含的主要是程序的指令。該段一般是可讀和可執行的,但一般卻不可寫。

(2)數據段:主要存放程序中要用到的各種全局變量或靜態的數據。一般數據段都是可讀、可寫、可執行的。

5.程序連接

由編譯程序生成的目標文件并不能立即就被執行,其中可能還有許多沒有解決的問題。例如,某個源文件中的函數可能引用了另一個源文件中定義的某個符號(如變量或者函數調用等);在程序中可能調用了某個庫文件中的函數等。所有的這些問題,都需要經連接程序的處理方能得以解決。

程序連接的主要任務就是將有關的目標文件彼此相連接,也就是將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的這些目標文件成為一個能夠被操作系統裝入執行的統一整體,也就是可執行文件。經過程序連接后,C源程序就最終被轉換成可執行文件,在Windows操作系統中,可執行文件的擴展名一般是.exe。

6.程序運行

程序運行就是執行程序,看看程序的運行結果是否正確。如果結果不正確就需要對源文件進行重新編輯,然后再次編譯、連接和運行。

7.程序調試

(1)程序調試指的是在程序沒有語法錯誤,但運行結果不符合預期時,采用適當的工具或者方法,反復找出程序存在的問題,進行修改,最終使程序符合要求的過程。程序調試是一個程序員必須掌握的技能。程序員調試程序的時候,應對程序的設計思路非常清楚,知道每一段、每一行程序所應起到的作用。調試的基本過程是;先根據程序的運行情況,進行大致的檢查;然后分析檢查的結果、確定可能出現問題的代碼范圍,再進行專項檢查;再分析檢查結果,如此反復,最后確定問題所在并進行修改、運行驗證結果。

(2)觀察了解程序的問題表現。首先是了解清楚程序運行情況,特別是了解程序的任務、程序的預期表現與程序工作的實際表現。對于經驗豐富的程序員可能不用后續檢查就能知道問題所在。經驗當然重要,但對于初學者而言,掌握正確的調試思路則更加重要,因為初學者很難通過觀察程序而發現問題所在。

(3)弄清程序的主要工作流程。在學習過程中設計的程序一般都不太復雜,從總體算法上總是可以劃分為幾個大的模塊(也可稱為步驟,可以是一段程序或一個子程序——函數):接收用戶的要求和任務(讀取相應的參數、輸入相應的數據)、對數據進行計算和處理、按格式要求輸出相應的結果。對于每一個大的模塊,又可以分為許多子模塊。

(4)進行大致的檢查,確定問題存在的模塊。檢查的任務,就是查看程序的實際工作狀態(屏幕輸出是否正確、各變量的值是否正確)與預期的設計是否一致,若不一致,則肯定有問題。對于較長、較復雜的程序,檢查時不應從開始一行一行檢查,這種方法效率低、不科學,也不易發現問題。正確的方法是:先分大模塊檢查,確定大模塊有無問題,再針對有問題的大模塊,檢查其內部的工作過程。在檢查過程中,用戶應根據自己的經驗,靈活調整檢查策略,提高工作效率,例如可以使用二分法定位故障,也可觀察后估計問題位置再進行檢查。

(5)檢查故障模塊,確定問題并解決。對于復雜故障模塊內部的運行檢查,可以再分子模塊(部分)進行分部檢查。檢查模塊的設計是否正確的基本思路是:一步一步運行程序,看程序的運行流程是否如設計期望,看每步程序的運行結果(屏幕輸出和相關變量)是否與設計的一致。

主站蜘蛛池模板: 班戈县| 延庆县| 根河市| 出国| 东平县| 婺源县| 宁安市| 高碑店市| 靖江市| 安平县| 兴宁市| 乐清市| 千阳县| 韶关市| 孙吴县| 永川市| 东海县| 铜梁县| 沙湾县| 弋阳县| 大厂| 波密县| 克什克腾旗| 澎湖县| 顺义区| 孝昌县| 广元市| 建水县| 类乌齐县| 普洱| 大同县| 报价| 大洼县| 三明市| 偏关县| 莱阳市| 芮城县| 台南县| 越西县| 嘉黎县| 石屏县|