- C++程序設計實驗教程
- 史巧碩 劉洪普
- 5533字
- 2019-10-14 11:55:26
二、相關知識
1.Visual C++ 6.0集成開發環境簡介
(1)啟動Microsoft Visual C++ 6.0。
選擇“開始”→“所有程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”菜單命令,或雙擊桌面上名為“Microsoft Visual C++ 6.0”的快捷方式圖標,從而進入Microsoft Visual C++ 6.0集成開發環境。
(2)Visual C++ 6.0主窗口。
Visual C++ 6.0主窗口包括標題欄、菜單欄、工具欄、工作區窗口、編輯窗口區、輸出窗口和Build MiniBar工具欄,如圖1.1所示。其中,Build MiniBar工具欄中的工具,在編譯和連接程序時會經常使用。在工具欄區右擊,可從快捷菜單中選擇或取消工具欄、工作區窗口Workspace和輸出窗口Output的顯示。

圖1.1 主窗口
2.在Visual C++中編寫一個基于控制臺的應用程序
一個項目包含多個文件,在創建項目時系統會在指定的文件夾中創建項目文件夾,并將項目中包含的文件存放在該文件夾下。所以,在創建項目前,最好創建一個文件夾存放編寫的C++程序,這里預先在E盤建立了存放項目的文件夾Examples。
(1)創建項目。
①選擇“File”→“New”菜單命令,彈出“New”對話框。在“New”對話框中,選擇“Projects”選項卡(默認),如圖1.2所示,從列出的項目類型清單中選擇“Win32 Console Application”選項,創建一個基于控制臺的應用程序;在“Project name”下的文本框中輸入新建項目名,如test;在“Location”下的文本框中顯示將要生成的項目文件夾的存放位置,可單擊右側的“…”按鈕,修改項目文件夾的保存位置,否則默認存放位置為Visual C++的安裝目錄下的MyProjects文件夾。最后單擊“OK”按鈕,打開“Win32 Console Application-Step 1 of 1”對話框,如圖1.3所示。

圖1.2 “New”對話框
②該對話框提供了四種項目的類型,選擇不同的選項,意味著系統會自動生成一些程序代碼,為項目增加相應的功能。這里選擇“An empty project”選項,則生成一個空白的項目。單擊“Finish”按鈕,彈出“New Project Information”對話框,顯示出將要創建項目的有關信息,如圖1.4所示。

圖1.3 “Win32 Console Application-Step 1 of 1”對話框

圖1.4 New Project Information對話框
③單擊“OK”按鈕完成項目的創建,此時在選定的存儲位置處,即在E:\Examples文件夾下創建名為test的項目文件夾,里面存放了項目中的各個文件,包括工作區文件test.dsw、項目文件test.dsp、參數文件test.opt等以及Debug文件夾,并且在工作區窗口中打開該項目。
(2)創建源程序文件。創建一個項目之后,就可以在該項目中創建源程序了。
①選擇“File”菜單中的“New”命令,彈出“New”對話框,選擇“Files”選項卡,如圖1.5所示,其中列出了可創建的文件類型。
選擇“C++ Source File”選項,新建C++源程序文件;在“File”編輯欄中輸入新建文件名,如test1;注意選中“Add to project”復選框,以便將創建的源文件添加到項目中。單擊“OK”按鈕,創建了源文件test1.cpp,并在右邊的文件編輯窗口將其打開,此時就可以開始輸入程序代碼,如圖1.6所示。
②在右側窗口中輸入例1.1中的源程序代碼,如圖1.7所示。編輯完源文件后,單擊工具欄中的“Save”按鈕保存源文件。

圖1.5 “New”對話框中的“Files”標簽

圖1.6 在項目中創建了源程序文件test1.cpp
【例1.1】編寫程序,該程序在控制臺上顯示信息"Hello world"。
源程序:

注意:
單擊文本編輯窗口的關閉按鈕 ,可將正編輯的源文件test1.cpp關閉。若需要再次打開,可在工作區窗口選擇“FileView”選項卡,將文件夾展開,雙擊“Source Files”,可看到源文件test1.cpp,雙擊該文件,即可將其在右面的編輯窗口打開。
(3)編譯源程序文件。
單擊工具欄上的“Compile”按鈕或按【Ctrl+F7】組合鍵,則在Output窗口顯示編譯結果。此時源程序中沒有錯誤,顯示無錯誤,成功生成目標程序test1.obj,如圖1.8所示。

圖1.7 輸入test1.cpp的源代碼

圖1.8 對程序進行編譯
(4)連接生成可執行程序。
單擊工具欄上的“Build”按鈕或按【F7】鍵,則連接生成可執行程序test.exe,可在Output窗口看到成功生成可執行程序的信息,如圖1.9所示。如果連接出錯,則在輸出窗口顯示錯誤信息。
編譯生成的目標程序(.obj)和連接生成的可執行程序(.exe)存放在項目文件夾test下的Debug文件夾中,如圖1.10所示。

圖1.9 對程序進行連接

圖1.10 Debug文件夾
(5)運行程序。
生成可執行程序后,單擊工具欄上的“Execute Program”按鈕或按【Ctrl+F5】組合鍵,運行該程序。程序的運行結果會顯示在一個DOS窗口,如圖1.11所示。
(6)打開和修改已有程序。
若要打開和修改以前編寫好的程序,需要用Visual C++重新打開,在完成修改后,再編譯、連接、運行。一個程序對應一個項目,要打開一個程序,就是要打開它對應的項目的工作區文件(.dsw),并不是打開它的源程序文件(.cpp),請初學者一定要注意。

圖1.11 程序運行結果
選擇“File”菜單中的“Open Workspace”命令,打開“Open Workspace”對話框,選擇驅動器、文件夾和項目工作區文件,單擊“打開”按鈕即可打開程序。或在項目文件夾中雙擊相應的工作區文件(擴展名為.dsw,例test.dsw),也可打開程序。
【例1.2】打開例1.1中的test.dsw,修改test1.cpp,在控制臺上顯示兩行信息"Hello world"和"This is my first program"。
源程序:

在打開的test1.cpp源程序中,修改程序代碼,如圖1.12所示,修改后的程序運行結果如圖1.13所示,可以看到在屏幕上輸出了兩行信息。

圖1.12 修改后的源程序

圖1.13 程序運行結果
3.查看和修改編譯、連接錯誤
編譯的目的是將C++源程序轉換為機器指令代碼。在編譯過程中,如果遇到程序中有語法錯誤,則會在底部的Output窗口中顯示相應的錯誤信息,提示程序員修改程序。作為初學者,剛編寫好的程序含有錯誤是很正常的,即使是非常熟練的專業程序員也很難一次就編寫出完全沒有錯誤的源程序。實際上重要的不是程序中是否有錯誤,而是如何將這些錯誤找到并進行修改。一般來說,一個源程序從輸入到通過編譯,往往要重復很多次編譯、修改、再編譯的過程。
若無錯誤,則編譯成功,生成目標程序。如果出現了錯誤,則會在Output窗口顯示錯誤的類型、錯誤所在行以及錯誤的原因。此時,雙擊錯誤信息或按【F4】鍵,則會在編輯窗口的左側出現一個箭頭指示發現錯誤的語句行,以便修改源程序。應該說C++的編譯器雖然可以查出錯誤,但是對錯誤的說明可能并不十分準確,而且一個實際錯誤往往會引出若干條錯誤說明,因此在檢查錯誤時,應首先查看第一個錯誤出現的位置,在改正了該錯誤后,可以先進行編譯,此時往往會發現錯誤的數目已經大大減少。重復此過程直到所有的錯誤均已修改,然后再連接、運行程序。
在連接階段也可能出現一些錯誤提示,與編譯錯誤提示信息不同的是連接錯誤不指出錯誤發生的詳細位置,這是因為連接的對象是目標程序,與源程序格式有很大差別,不容易確定錯誤的準確位置。
連接階段出現的錯誤一般比較少,大多數是因為在程序中調用了某個函數,而連接程序卻找不到該函數的定義。初學者經常發生的連接錯誤是程序中沒有主函數或有兩個主函數,前者是因為把主函數名main拼錯了,如寫成了mian;后者是因為編制下一個新程序時沒有新建項目,而只新建了源程序文件,使得一個項目中有了兩個主函數。在找到連接錯誤的原因并修改以后,一定要重新編譯后才能再次進行連接。
【例1.3】編寫程序,計算并輸出邊長為2和3的長方形的面積。
源程序:

步驟:
①參照例1.1,創建C++項目,選擇Win32 Console Application,項目名稱為area,保存位置為E:\Examples。如果還打開著上一個程序,在“New”對話框中默認選項卡是“Files”,一定選擇“Projects”選項卡,為新程序創建一個新項目。
②創建C++源程序,命名為rec.cpp。
③輸入源程序代碼,為說明如何查看和修改編譯和連接問題,按如下代碼進行輸入:

④編譯。單擊工具欄上的“Compile”按鈕,編譯源程序文件。從底部的輸出窗口可看到有5條編譯錯誤。雙擊輸出窗口中的第一條錯誤,或按【F4】鍵,在源程序編輯窗口中出現一個箭頭,指向該錯誤對應的代碼行,如圖1.14所示。該錯誤信息為:‘td’:does not exist or is not a namespace,因此需將該行中的td修改為std,而后再次單擊“Compile”按鈕
,顯示只有一條錯誤,再次雙擊此錯誤信息,箭頭指向a=2;那一行,如圖1.15所示。錯誤信息missing‘;’before identifier‘a’,表示在標識符a之前缺少分號,因此需在上一行的int a,b,s后添加分號。修改完畢后再次單擊“Compile”按鈕
,編譯成功,生成目標文件rec.obj。

圖1.14 第一次編譯后的結果

圖1.15 第二次編譯后的結果
⑤連接。單擊工具欄上的“Build”按鈕或使用【F7】鍵進行連接,此時在Output窗口中顯示有兩條連接錯誤,如圖1.16所示。錯誤信息顯示unresolved external symbol _main,檢查源程序中的main函數的定義發現誤將main寫成了mian,由于C++程序中必須有且只能有一個主函數main(),在連接過程中未找到main()函數,從而造成了連接錯誤。修改完成后再次進行連接,如圖1.17所示,連接成功,生成了area.exe文件。

圖1.16 第一次連接后的結果

圖1.17 第二次連接后的結果
⑥運行。單擊工具欄上的“Execute Program”按鈕或使用【Ctrl+F5】組合鍵,運行程序,程序運行結果如圖1.18所示。

圖1.18 程序運行結果
說明:
在完成一個程序的編譯、連接和運行后,若需要再創建一個新程序,此時需要重新創建項目、創建源文件,不能在同一個項目中添加兩個包含main()主函數的源文件,否則會出現連接錯誤。
如果源程序文件沒有經過編譯,而直接單擊工具欄上的“Build”按鈕 進行連接,系統會自動進行編譯,編譯無誤后才能連接。同樣的,如果沒有編譯、連接而運行程序,系統也要依次進行編譯、連接后才能運行程序。
4.查看和修改運行錯誤
有些程序在編譯、連接時都沒有錯誤,能夠運行,但是得到的運行結果卻和預期的結果不同,例如,計算結果錯誤、死循環(進入循環后無法終止循環)、對只讀的內存空間進行寫操作等,這類錯誤就是運行錯誤,運行錯誤也稱為邏輯錯誤。通常導致運行錯誤的原因有如下幾種:
①程序書寫錯誤,例如,在循環結構中修改循環控制變量的表達式應該寫作i++,卻寫作了i--。
②程序的算法有誤,對各種情況考慮不周。
③數組元素的下標越界,對未分配的內存空間進行寫數據的操作等。
運行時的錯誤通常比較隱蔽,不容易發現,需要檢查程序的算法、邏輯以及執行過程是否正確等。此時,可使用調試工具跟蹤程序的執行,以便找出程序中的真正錯誤。
常用的調試手段為:
(1)設置斷點(Breakpoint)。
所謂斷點,實際上就是告訴調試器在何處暫時中斷程序運行,以便查看程序的狀態以及瀏覽和修改變量的值等。在程序中設置和清除斷點可使用如下方式:
①按快捷鍵【F9】。
②單擊Build工具欄中的按鈕。
③在需要設置(或清除)斷點的位置上右擊,在彈出的快捷菜單中選擇“Insert/Remove Breakpoint”命令。
利用上述方式可以將斷點設置在程序源代碼中指定的一行上,或者某函數的開始處,或指定的內存地址上。一旦斷點設置成功,則斷點所在代碼行的最前面的窗口頁邊距上將顯示一個紅色的實心圓。
(2)單步跟蹤。
當程序在斷點處暫停時,就進入了單步跟蹤狀態。通過單步跟蹤,可以逐條語句或逐個函數地執行程序,每執行完一條語句或一個函數,程序就暫停,因此可逐條語句或逐個函數地檢查它們的執行結果。
對程序的單步跟蹤執行有以下幾個選擇:
①Step Into(【F11】):執行一條語句,如果此語句中有函數調用,則進入該函數內部,在該函數的第一行代碼處暫停。
②Step Over(【F10】):執行一條語句,如果此語句中有函數調用,則把整個函數視為單步一次執行。
③Step Out(【Shift+F11】):繼續執行程序,當遇到斷點或返回函數調用者時暫停。如果當前執行位置是在某一函數內,可使程序快速跳出該函數。
④Run to Cursor(【Ctrl+F10】):將光標定位在某行代碼上并使用這個命令,程序會執行到斷點或光標定位的那行代碼暫停。
⑤Stop Debugging(【Shift+F5】):程序運行終止,回到編輯狀態。
(3)Watch窗口。
當程序暫停時,除了可以控制它的執行,還可以通過監視窗口來查看和修改各個變量的值。為了更好地進行程序調試,調試器提供一系列的窗口,用來顯示各種不同的調試信息。借助View菜單下的Debug Windows子菜單可以訪問它們。事實上,當用戶啟動調試器后,Visual C++ 6.0的開發環境會自動顯示出Watch和Variables調試窗口,且Output窗口自動切換到Debug頁面。綜合使用監視窗口和單步跟蹤功能,可找出程序中隱藏的邏輯錯誤。
以上是程序調試的一些基本方法。當然,Visual C++ 6.0功能強大的調試器還能調試斷點、異常、線程、OLE以及遠程調試等,且支持多平臺和平臺間的開發,有興趣的讀者可進一步查閱相關資料。
5.熟悉Visual C++ 6.0集成環境其他常用操作
(1)程序的打開與關閉。
要打開一個程序,只要打開其項目的工作區文件(擴展名為.dsw)即可。選擇File→Open Workspace菜單命令,打開“Open Workspace”對話框,選擇驅動器、文件夾和項目工作區文件,單擊“打開”按鈕打開程序;或者,從File→Resent Workspaces級聯菜單中選擇最近操作過的工作區文件;還可以從Windows資源管理器窗口找到存放項目的文件夾,雙擊其中的工作區文件(擴展名為.dsw,例test.dsw),可打開程序。
注意:
一個程序對應一個項目,要打開一個程序,就是要打開它對應的項目的工作區文件(.dsw),并不是打開它的源程序文件(.cpp),請初學者一定要注意。
使用“File”→“Save Workspace”菜單命令,可保存當前打開的項目。
選擇“File”→“Close Workspace”菜單命令,可將當前打開的項目關閉。
(2)工作區窗口(Workspace)。
工作區窗口一般位于Visual C++ 6.0主窗口的左側,如果沒有顯示,可在菜單欄或工具欄區的空白處右擊,從快捷菜單中選擇“Workspace”命令將其打開,也可以選擇“View”菜單下的“Workspace”命令。使用同樣的方法可控制輸出窗口Output的顯示。
打開例1.1的工作區文件test.dsw,在工作區窗口中選擇“FileView”選項卡,單擊頂層“test files”前的“+”或雙擊其前的圖標,將其展開;再單擊“Source Files”前的“+”,顯示出項目中已經創建的源程序文件。對項目的很多操作都可在工作區窗口中進行,例如:
①打開文件。雙擊test1.cpp源程序文件,可在右邊的文本編輯窗口將其打開。
②刪除文件。單擊test1.cpp文件選中它,選擇“Edit”→“Delete”菜單命令或直接按【Del】鍵,將該文件從項目中刪除,但文件依然存放在硬盤上。
③將已有的文件添加到項目中。選擇“Project”→“Add To Project”→“Files…”菜單命令,或者在工作區窗口中的“Source Files”文件夾上右擊,從快捷菜單中選擇“Add Files to Folder”命令;在彈出的“Insert Files into Project”對話框中,選擇test1.cpp文件,單擊“OK”按鈕,將文件添加到項目中。
④在工作區窗口右擊源程序文件test1.cpp,從快捷菜單中選擇“Compile test.cpp”命令進行編譯。
(3)熟悉Build MiniBar工具欄。
在操作中,使用工具欄比菜單更為方便。在編制程序過程中,經常要進行程序的編譯、連接和運行,可使用Build MiniBar工具欄中的按鈕來操作,還可以使用更快捷的熱鍵,如圖1.19所示。

圖1.19 Build MiniBar工具欄
如果Visual C++ 6.0中沒有顯示Build MiniBar工具欄,可在工具欄區右擊,從快捷菜單中選擇“Build MiniBar”命令將其顯示出來。
- Spring Boot 2實戰之旅
- JSP網絡編程(學習筆記)
- Visual FoxPro程序設計教程
- R語言編程指南
- 精通軟件性能測試與LoadRunner實戰(第2版)
- 名師講壇:Java微服務架構實戰(SpringBoot+SpringCloud+Docker+RabbitMQ)
- 零基礎輕松學SQL Server 2016
- AppInventor實踐教程:Android智能應用開發前傳
- 小程序從0到1:微信全棧工程師一本通
- PHP項目開發全程實錄(第4版)
- 深入理解Kafka:核心設計與實踐原理
- R語言實戰(第2版)
- Android 5從入門到精通
- HTML5+CSS+JavaScript深入學習實錄
- 數據庫基礎與應用實驗教程:Visual FoxPro 6.0