- C語言程序設計實訓教程與水平考試指導
- 肖捷 陳雪芳
- 1472字
- 2019-09-30 13:17:56
1.1 C語言程序的上機步驟
按照C語言語法規則編寫的程序稱為源程序,由字母、數字及其他符號等構成的字符序列,并保存在擴展名為.c的文件中(注意:C++的源程序文件的擴展名為.cpp)。源程序無法直接被計算機運行,需要把源程序翻譯成機器指令,然后才能被計算機運行。
源程序翻譯過程由兩個步驟實現:編譯與連接。編譯就是把每一條語句用若干條機器指令來實現,以生成由機器指令組成的目標程序(擴展名為.obj的文件),計算機還不能直接運行目標程序。連接就是把“庫函數”的處理過程連接到經編譯生成的目標程序中,生成可執行程序(擴展名為.exe的文件),交由計算機運行,最終得到結果。C語言程序的調試、運行步驟可以用圖1-1表示。

圖1-1 C語言程序的調試、運行步驟
在圖1-1中,虛線表示當某一步驟出現錯誤時的修改路線。無論是出現語法錯誤、連接錯誤,還是運行錯誤,都需要修改源程序,并對它重新編譯、連接和運行,直至將程序調試正確為止。
程序中的錯誤大致可分為3類:語法錯誤、連接錯誤和運行錯誤。
語法錯誤:也稱編譯錯誤,編譯程序時檢查出來的錯誤。通常是編程者違反了C語言的語法規則,如保留字輸入錯誤、大括號不匹配、語句少分號等。
連接錯誤:連接程序時檢查出現的錯誤。一般由于未定義或未指明要連接的函數,或者函數調用不匹配等因素引起,對系統函數的調用必須通過include說明。
對于語法錯誤和連接錯誤,C語言系統會提供出錯信息,包括出錯位置(行號)、出錯提示信息。編程者可以根據這些信息,找出相應錯誤所在。有時系統提示的一大串錯誤信息,并不表示真的有這么多錯誤,而是由前面的一兩個錯誤帶來的。所以糾正了幾個錯誤后,不妨再編譯連接一次,然后根據最新的出錯信息繼續糾正。對初學者來說,最好的辦法是每次只改正第1個錯誤,再重新編譯和連接,根據最新的出錯信息繼續糾正。
運行錯誤:也稱語義錯誤或邏輯錯誤,在執行程序過程中出現了結果錯誤。有些程序通過了編譯連接,并能夠在計算機上運行,但得到的結果不正確,這類在程序執行過程中的錯誤往往最難改正。錯誤的原因多種多樣,可能是程序書寫錯誤產生的,也可能是程序的算法不正確,解題思路不對造成的,這就需要編程者調試程序。
調試程序就是找出錯誤所在位置并糾正錯誤的過程。解決運行錯誤的首要步驟是錯誤定位,即找到出錯的位置,才能予以糾正。通常先設法確定錯誤的大致位置,然后通過C語言提供的調試工具找出真正的錯誤。為了確定錯誤的大致位置,可以先把程序分成幾大塊,并在每一塊的結束位置,手工計算一個或幾個階段性結果,然后用調試方法運行程序,到每一塊結束時,檢查程序運行的實際結果與手工計算是否一致,通過這些階段性結果來確定各塊是否正確。對于出錯的程序塊,可逐條仔細檢查各語句,找出錯誤所在。如果出錯塊程序較長,難以一下子找出錯誤,可以進一步把該塊細分成更小的塊,按照上述步驟進一步檢查。在確定了大致出錯位置后,如果無法直接看出錯誤,可以通過單步運行相關位置的幾條語句,逐條檢查,一定能找出錯誤的語句。
當程序出現計算結果有時正確有時不正確的情況時,其原因一般是算法對各種數據處理情況考慮不全面。解決辦法最好多選幾組典型的輸入數據進行測試,除普通的數據外,還應包含一些邊界數據和不正確的數據。比如確定正常的輸入數據范圍后,分別以最小值、最大值、比最小值小的值和比最大值大的值,多方面運行檢查自己的程序。
下面以VC++ 6.0為上機平臺,對C程序編譯、連接和調試作簡單介紹。建議一開始學習上機時,把注意力放在程序的編譯、連接和運行,以能運行為目標,而把調試部分放到學習了第5章后再看,只有具有一定的程序語句量,調試才有作用。
- 精通Nginx(第2版)
- C++案例趣學
- 解構產品經理:互聯網產品策劃入門寶典
- Instant 960 Grid System
- OpenStack Cloud Computing Cookbook(Fourth Edition)
- 微信公眾平臺開發:從零基礎到ThinkPHP5高性能框架實踐
- Python編程與幾何圖形
- 軟件品質之完美管理:實戰經典
- INSTANT Sinatra Starter
- Learning Docker Networking
- 從Excel到Python數據分析:Pandas、xlwings、openpyxl、Matplotlib的交互與應用
- 從程序員角度學習數據庫技術(藍橋杯軟件大賽培訓教材-Java方向)
- Solr權威指南(下卷)
- Isomorphic Go
- Mastering R for Quantitative Finance