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

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章后再看,只有具有一定的程序語句量,調試才有作用。

主站蜘蛛池模板: 凤城市| 永和县| 濮阳市| 正镶白旗| 张家川| 凤城市| 乌什县| 高雄县| 彰武县| 萝北县| 长乐市| 石阡县| 凉城县| 神农架林区| 顺平县| 嫩江县| 诏安县| 文成县| 定南县| 康平县| 中山市| 新沂市| 五寨县| 山西省| 达日县| 永兴县| 吉隆县| 宜兰县| 襄城县| 伊吾县| 延庆县| 来凤县| 双鸭山市| 县级市| 新干县| 衡阳县| 合阳县| 柳林县| 年辖:市辖区| 方正县| 齐河县|