




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、c語言上機操作指導(dǎo)程序設(shè)計是實踐性很強的過程,任何程序最終都必須在計算機上運行,以檢驗程序的正 確與否。因此在學(xué)習程序設(shè)計中,一定耍重視上機實踐環(huán)節(jié),通過上機可以加深理解c語言 的有關(guān)概念,以鞏固理論知識,另一方面也可以培養(yǎng)程序調(diào)試的能力與技巧。1. c語言程序的上機步驟按照c語言語法規(guī)則而編寫的c程序稱為源程序。源程序由字母、數(shù)字及其它符號等構(gòu) 成,在計算機內(nèi)部川相應(yīng)的ascii碼表示,并保存在擴展名為c”的文件中。源程序是 無法直接被計算機運行的,因為計算機的cpu只能執(zhí)行二進制的機器指令。這就需要把ascii 碼的源稈序先翻譯成機器指令,然后計算機的cpu才能運行翻譯好的程序。源程序翻譯
2、過程山兩個步驟實現(xiàn):編譯與連接。首先對源程序進行編譯處理,即把每 條語句用若干條機器指令來實現(xiàn),以生成山機器指令組成的目標程序。但目標程序還不 能馬上交計算機直接運行,因為在源程序中,輸入、輸出以及常用函數(shù)運算并不是用戶自 己編寫的,而直接調(diào)用系統(tǒng)函數(shù)庫中的庫函數(shù)。因此,必須把“庫函數(shù)”的處理過程連接 到經(jīng)編譯牛成的忖標程序中,牛成可執(zhí)行程序,并經(jīng)機器指令的地址重定位,便可由計算 機運行,最終得到結(jié)果。c語言程序的調(diào)試、運行步驟可以用圖a-1表示:語法錯誤連接錯誤運行錯誤v程序調(diào)試圖at c語言程序的調(diào)試、運行步驟圖a-1中,虛線農(nóng)示當某一步驟出現(xiàn)錯誤時的修改路線。運行時,無論是出現(xiàn)編譯錯 誤
3、、連接錯誤,還是運行結(jié)杲不對(源程序中有語法錯誤或邏輯錯誤),都礙要修改源程序, 并對它重新編譯、連接和運行,直至將程序調(diào)試正確為止。除了較簡單的情況,-般的程序很難一次就能做到完全正確。在上機過程中,根據(jù)出錯現(xiàn)象 找出錯誤并改正稱為程序調(diào)試。我們要在學(xué)習程序設(shè)計過程中,逐步培養(yǎng)調(diào)試程序的能力, 它不對能靠幾句話講淸楚,要靠自己在上機中不斷摸索總結(jié),它可以說是一種經(jīng)驗積累。程 序中的錯誤大致可分為三類:程序編譯時檢杳出來的語法錯誤;連接時出現(xiàn)的錯誤;程序執(zhí)行過程中的錯誤。編譯錯誤通常是編程者違反了c語言的語法規(guī)則,如保留字輸入錯謀、大括號不匹配、語句 少分號等等。連接錯誤一般山未定義或未指明要
4、連接的函數(shù),或者函數(shù)調(diào)用不匹配等因素引 起,對系統(tǒng)函數(shù)的調(diào)川必須要通過"include”說明。對丁編譯連接錯誤,c語言系統(tǒng)會捉供出錯信息,包括出錯位置(行號)、出錯提示信 息。編程者可以根據(jù)這些信息,找出和應(yīng)錯誤所在。有時系統(tǒng)提示的一大串錯誤信息,并不 衣示真的有這么多錯誤,往往是因為前面的一兩個錯誤帶來的。所以當你糾正了幾個錯誤后, 不妨再編譯連接一次,然后根據(jù)最新的出錯信息繼續(xù)糾正。有些程序通過了編譯連接,并能夠在計算機上運行,但得到的結(jié)杲不正確,這類在程序 執(zhí)行過程中的錯謀往往最難改正。錯誤的原因一部分是程序書寫錯誤帶來的,例如應(yīng)該使用 變量x的地方寫成了變量y,雖然沒有語法錯
5、誤,但意思完全錯了;另一部分可能是程序的 算法不止確,解題思路不對。還有一些程序有時計算結(jié)果止確,有時不止確,這往往是編程 時,對各種情況考慮不周所致。解決運行錯謀的首耍步驟就是錯誤定位,即找到出錯的位置, 才能予以糾正。通常我們先設(shè)法確定錯誤的大致位置,然后通過c語言提供的調(diào)試工具找出 真正的錯誤。為了確定錯誤的人致位置,可以先把程序分成兒人塊,并在每一塊的結(jié)朿位置,手工計 算一個或兒個階段性結(jié)果,然后用調(diào)試方式運行程序,到每一塊結(jié)束時,檢查程序運行的實 際結(jié)果與手工計算是否一致,通過這些階段性結(jié)果來確定各塊是否正確。對于出錯的程序塊, 可逐條仔細檢查各語句,找出錯誤所在。如果出錯塊程序較長
6、,難以一下子找出錯誤,可以 進一步把該塊細分層更小的塊,按照上述步驟進一步檢查。在確定了人致出錯位置灰,如果 無法直接看出錯謀,可以通過單步運行相關(guān)位置的兒條語句,逐條檢查,一定能找出錯謀的 語句。當程序出現(xiàn)計算結(jié)果有時正確有時不止確的情況時,其原因一般是算法對各種數(shù)據(jù)處理 情況考慮不全而。解決辦法最好多選兒組典型的輸入數(shù)據(jù)進行測試,除了普通的數(shù)據(jù)外,還 應(yīng)包含一些邊界數(shù)據(jù)和不正確的數(shù)據(jù)。比如確定正常的輸入數(shù)據(jù)范圍肩,分別以最小值、最 大值、比最小值小的值和比故大值大的值,多方血運行檢杳自己的程序。下血我們以vc+6.0為上機平臺,對c程序編譯、連接和調(diào)試作簡單介紹。建議一開始 學(xué)習上機時,把
7、注意力放在程序的編譯、連接和運行,已能運行為目標,而把調(diào)試部分放到 學(xué)習了第5章后再看,只有具有一定的程序語句量,調(diào)試才有作用。2. visual c語言集成環(huán)境c+語言是在c語言的基礎(chǔ)上發(fā)展而來,它增加了而向?qū)ο蟮木幊蹋蔀楫斀褡盍餍械? 種程序設(shè)計語言。visual c+是微軟公司開發(fā)的,而向windows編程的c+語言工具。它不 僅支持c+語言的編程,也兼容c語言的編程。由丁wc+被廣泛地用于各種編程,使用面很 廣。這里簡要地介紹如何在vc+下運行c語言程序。2. 1 啟動 vc+vc+是一個龐大的語言集成工具,經(jīng)安裝后將占用兒百兆磁盤空間。從“開始”一“程 序"一 “micr
8、osoft visual studio 6.0” 一 "microsoft visual c+ 6.0”,可啟動vc+, 屏幕上將顯示圖a-8所示的窗口。2. 2新建/打開c程序文件選擇“文件”菜單的“新建”菜單項,單擊如圖a-9所示的“文件”標簽, 選中“c+source f訂e”或“textfile” ,在右邊的“f訂e”文件命名文本框 中輸入要建立的程序文件名,后綴為c(如myfile. c),在右邊的“l(fā)ocation" 文件位置文本框中輸入該文件所在路徑,按“確定”。然后在編輯窗i屮輸入程序。如果沒有指定要建立程序文件的后綴,當輸入結(jié)束后,保存文件時,應(yīng)指定 擴展
9、名“c”,否則系統(tǒng)將按c卄擴展名“cpp”保存(選中“c+sowrcefile” ) 或按文本文件擴展名“txt”保存(選中“textf訂e”)。圖 a-8 vc+窗口文件編輯查看插入工程編譯工具窗口幫助e新建?l文件 工程i工作區(qū)i其它文檔iactive server page el binary file bitmap file q c/c+ header file廠a添加工程:i3矗 cursor file 回 html pagetricon file * macro file 垢i resource script resource template 11 sql script file
10、=1 text file文件lc目錄:|c:確定結(jié)東圖a-9新建文件如果程序已經(jīng)輸入過,可選擇“文件”菜單的“打開”菜單項,并在查找范圍中找到正 確的文件夾,調(diào)入指定的程序文件。23程序保存衣打開的vc+界而匕 可直接在編輯窗口輸入程序,由于完全是windows界而,輸入及 修改可借助鼠標和菜單進行,十分方便。當輸入結(jié)束后,保存文件時,應(yīng)指定擴展名“c”, 否則系統(tǒng)將按c+擴展名“.cpp”保存。如圖a-10所示。保存為保存在q):o d“ halc w c n firm u、i hardwareodebug住£148壓接式bnc頭組裝g 認識網(wǎng)卡gif<ods文件名): cp
11、ptl保存類型(i): |text file (*?*)三j圖a-10指定保存文件名24執(zhí)行程序首先要牛成可執(zhí)行文件。使用vc+“編譯”菜單中的“構(gòu)件”菜單項,如圖a-11所示,也可使用快捷鍵f7 o在編譯連接過程中vc+將保存該新輸入的程序,并生成一個同名的工作區(qū)。保存文件時須填入文件名,如“4t.c” o假如不指定擴展名.c, vc+會把擴 展名定義為.cpp,即c+程序。如果程序沒有錯誤,將在圖a-12信息窗口中顯示內(nèi)容: 0 error (s)0 warning(s)圖a-12編譯連接正確表示沒有任何錯課。有時出現(xiàn)兒個警告性信息(warning),不影響程序執(zhí)行。假如有致 命性錯誤(e
12、rror),如圖a-13所示,雙擊某行出錯信息,程序窗口中會指示對應(yīng)出錯位置, 根據(jù)信息窗口的捉示分別予以糾正。然后用“編譯”菜單中的“執(zhí)行”菜單項(或快捷鍵ctrl +【f5】)執(zhí)行程序。編譯連接生成可執(zhí)行程序 | (all global member< | $ mainprintchello?");翳禽屋! bl也mlconfiguration: cpp1 - win32 debugcompilingcpp1 .c d:yqfcpp1.c(4) linkingcpp1 .obj : errordebug/cpp1 .exe :earning c4013: 'prin
13、t undefirwd; assulnk2001: unresolved external spnbol _pri fatal error lnk1120: 1 unresolved externerror executing link.exe.cpp1.exe - 2 error(s), 1 warning(s)編譯k調(diào)試查找文件i 查找文傭q 11ln 1l col 1 |rec |col |ovr read圖a-13編譯連接出錯當運行c程序后,vc+將自動彈出數(shù)據(jù)輸入輸出窗口,如圖a-14所示。按任意鍵將關(guān)閉該 窗口圖a-14數(shù)據(jù)輸入輸出窗口對于編譯連接執(zhí)行操作,vc+還提供了一紐工具按
14、鈕,如圖at5所示。(globals)include "stdio.h" main()圖a-15編譯連接執(zhí)行工具按鈕組2. 5關(guān)閉程序工作區(qū)當一個程序編譯連接后,vc+系統(tǒng)自動產(chǎn)生相應(yīng)的工作區(qū),以完成程序的 運行和調(diào)試。若想執(zhí)行第二個程序時,必須關(guān)閉前一個程序的工作區(qū),然后通 過新的編譯連接,產(chǎn)生第二個程序的工作區(qū)。否則的話運行的將一直是前一個 程序。"文件”菜單提供關(guān)閉程序工作區(qū)功能,如圖a-16(a),執(zhí)行“關(guān)閉工作區(qū)”菜單功 能,然后在如圖a-16(b)對話框中選擇“否”。如果選擇“焰”將同時關(guān)閉源程序窗口。x cppl -創(chuàng)天中文7c*+ - cpj0文件
15、編輯魚看wa工;h新建 .ctrl+k孟打開.ctrl+0紡束打并工作區(qū)保存工年區(qū)1| 關(guān)閉工佑區(qū)|(3)(b)創(chuàng)夭中立vdhffla-16關(guān)閉程序工作區(qū)圖a-16關(guān)閉程序工作區(qū)2. 6命令行參數(shù)處理vc+是一個基于窗口操作的c+系統(tǒng),沒有提供命令行參數(shù)功能。我們需要在windows的 "ms-dos方式”窗口里以命令方式實現(xiàn)。具體步驟參考如下:(1)正確編譯連接,生成可執(zhí)行程序;(2)通過“我的電腦”或“資源管理器”找到所運行的c源稈序(設(shè)為a.c);(3)進入debug文件夾(它包含8. c程序的可執(zhí)行文件a. exe):(4)執(zhí)行“開始”菜單的“運行”,填入command,然后
16、“確定”;(5)在打開的“ms-dos方式”窗口中輸入:a參數(shù)1參數(shù)2 ,帶參數(shù)運行程序。2. 7程序調(diào)試vc+是一個完全基于windows的系統(tǒng),它的調(diào)試過程通過鼠標比較容易進行。(1)程序執(zhí)行到中途暫停以便觀察階段性結(jié)杲:方法一:使程序執(zhí)行到光標所在的那一行暫停。 在需暫停的行上單擊鼠標,定位光標; 如圖a-17所示,分別點擊菜單“編譯”一“開始調(diào)試” "run to cursor",或按ctrl +【f10】,程序?qū)?zhí)行到光標所在行會暫停。如果把光標移動到后血的某個位置,再按ctrl + f10,程序?qū)漠斍暗臅和|c繼續(xù)執(zhí)行到新的光標位置,第二次暫停。m a-i7執(zhí)行
17、到光標所在行暫停圖a-17執(zhí)行到光標所在行暫停方法二:在需暫停的行上設(shè)置斷點; 在需設(shè)置斷點的行上單擊鼠標,定位光標; 按“編譯微型條”中最右面的按鈕,如圖a-18所示,或按f9 0麟幽基!旨| inser i/reitio2 hr eo i nl (f9)圖a-18設(shè)置斷點被設(shè)置了斷點的行前而會有一個紅色圓點標志。與tc 一樣,不管是通過光標位置還是 斷點設(shè)置,其所在的程序行必須是程序執(zhí)行的必經(jīng)之路,亦即不應(yīng)該是分支結(jié)構(gòu)中的語句, 因為該語句在程序執(zhí)行屮受到條件判斷的限制,令可能因條件的不滿足而不被執(zhí)行。這時程 序?qū)⒁灰藞?zhí)行到結(jié)束或下一個斷點為止。(2)設(shè)置需觀察的結(jié)果變量按照上而的操作,使
18、程序執(zhí)行到指定位置時暫停,目的是為了查看有關(guān)的中間結(jié)果。 在如圖a-19中,左下角窗口中系統(tǒng)自動顯示了有關(guān)變量的值,其中valuel和value2的值 分別是3、1,而變量i、sum的值是不正確的,因為他們還未被賦值。圖中左側(cè)的箭頭表示 當前程序暫停的位置。如果還想增加觀察變量,可在圖中右下角的“name”框中填入相應(yīng)變 量名。圖a-19觀察結(jié)果變:圖a-19觀察結(jié)果變量(3)單步執(zhí)行當程序執(zhí)行到某個位置時發(fā)現(xiàn)結(jié)果已經(jīng)不止確了,說明在此z前肯定有錯誤存在。如果 能確定一小段程序可能有錯,先按上而步驟暫停在該小段程序的頭一行,再輸入若干個查看 變量,然斤單步執(zhí)行,即一次執(zhí)行一行語句,逐行檢查卜-來,看看到底是哪一行造成結(jié)杲出 現(xiàn)錯誤,從而能確定錯謀的語句并予以糾正。單步執(zhí)行按“調(diào)試條”中“step over”按鈕或f8,如圖a-20所示。如果遇到自定 義函數(shù)調(diào)用,想進入函數(shù)進行單步執(zhí)行,可按“step into”按鈕或【f11】。當想結(jié)束函數(shù) 的單步執(zhí)行,可按“step out”按鈕或shift + fll o對不是函數(shù)調(diào)用的語句來說, f11與【f8】作用相同。但一般對系統(tǒng)函數(shù)不要使用【f11】。朗議哥國i 0再剛怦 命*
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 福建三明2024~2025學(xué)年高一下冊期末模擬數(shù)學(xué)試題學(xué)生卷
- 互聯(lián)網(wǎng)平臺數(shù)據(jù)驅(qū)動決策的個性化教育解決方案考核試卷
- 形狀記憶纖維在智能建筑中的應(yīng)用案例分析考核試卷
- 合成氣制柴油技術(shù)環(huán)保技術(shù)集成與應(yīng)用考核試卷
- 產(chǎn)業(yè)升級中的區(qū)域創(chuàng)新能力建設(shè)考核試卷
- 部編教材三年級語文下冊各單元試卷(全冊)
- 2025年中國PT泵嘴試驗臺數(shù)據(jù)監(jiān)測報告
- 2025年中國PET不干膠數(shù)據(jù)監(jiān)測報告
- 2025年中國D-蛋氨酸數(shù)據(jù)監(jiān)測研究報告
- 2025年中國48頭超寬高速噴繪機數(shù)據(jù)監(jiān)測研究報告
- 信息安全培訓(xùn)《釣魚郵件防范技巧》
- 2025至2030中國燙印箔行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 部編版高一語文必修上冊教案計劃
- 臨時工請假管理制度
- 小學(xué)用電安全課件
- 2025年北京市高考英語試卷真題(含答案解析)
- 2025年中國浮萍項目投資可行性研究報告
- 商洛學(xué)院《大學(xué)學(xué)術(shù)綜合英語》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年高考英語全國二卷聽力試題答案詳解講解(課件)
- 高級采氣工理論練習卷附答案
- 打架斗毆等暴力事件處理流程圖
評論
0/150
提交評論