980 likes | 1.12k Vues
第二章 建立主控台應用程式. 章節目錄 (1). 2-1-1 程式的註解. 2-1-2 前置處理指令. 2-1-3 使用名稱空間. 2-1 程式語言的基本架構. 2-1-4 主程式. 2-1-5 保留字和識別字. 2-1-6 資料的輸入和輸出. 2-2-1 認識程式碼編輯器. 2-2 建立 Visual C++ 第一個專案. 2-2-2 利用命令提示字元執行程式. 2-2-3 以 CLR 編譯 C++ 程式. 2-3-1 基本資料型別. 2-3 資料類型和變數. 2-3-2 變數和常數. 2-3-3 變數的生命週期.
E N D
章節目錄(1) 2-1-1 程式的註解 2-1-2 前置處理指令 2-1-3 使用名稱空間 2-1 程式語言的基本架構 2-1-4 主程式 2-1-5 保留字和識別字 2-1-6 資料的輸入和輸出 2-2-1 認識程式碼編輯器 2-2 建立Visual C++ 第一個專案 2-2-2 利用命令提示字元執行程式 2-2-3 以CLR編譯C++程式 2-3-1 基本資料型別 2-3 資料類型和變數 2-3-2 變數和常數 2-3-3 變數的生命週期
章節目錄(2) 2-4-1 算術運算子 2-4-2 指派運算子 2-4-3 關係運算子 2-4 運算子 2-4-4 邏輯運算子 2-4-5 遞減和遞減運算子 2-4-6 運算子的優先順序 2-5-1 型別自動轉換 2-5 型別轉換 2-5-2 強迫型別轉換
本章學習目標: • 介紹程式語言的基本架構,包含名稱空間的宣告和標頭檔的引用。 • 認識識別字和關鍵字。 • 介紹算術運算子、關係運算子、邏輯運算子和遞增、遞減運算子。 • 運算式中資料型別的轉換。
2-1 程式語言的基本結構 • 對Visual C++ 2005 Express Edition版本的工作環境有了初步認識後,接下來介紹C/C++語言的基本架構。 • 無論是那一種程式語言,都是由一行行的敘述組成。 • 在這些敘述中,可以加入變數的宣告,加入條件判斷,或是執行運算。 • 一個程式中到底包含那些?我們將為你進一步探討!
2-1-1 程式的註解 我們先透過一個簡易的程式來瞭解基本架構: 表示許解文字 前置處理指令 宣告名稱空間 _tmain()為主函式 輸出格式
程式組成 • 由圖2-1可以瞭解程式的結構分成好幾個部份: • 註解 • 前置處理指令 • 名稱空間 • _tmain()主函式 • 輸出格式 • 除此之外,當然也包含了 • 流程控制、函式和類別等,我們將在後面章節陸續介紹
認識程式的註解 • 首先,說明程式註解 • 一個好的程式會在需要的地方加入註解,方便日後的閱讀。 • 例如,我們在程式第一行加入註解來說明程式的名稱和程式的用途。當程式進入編譯程序時,便會忽略此註解,不會導致程式發生錯誤。 • 一般來說,我們將註解分成 • 單行註解 • 多行講解
單行註解 • 以兩個斜線「//」字元來表示單行註解。 • 在程式敘述後面加入註解,說明此行敘述的作用 • 或者直接將註解放在程式碼最前端,如圖2-1的第一行也是一個單行註解。
多行註解 若要加強閱讀效果,也可以使用多行註解 • 多行註解以「/*」為開始,再以「*/」為結束 • 使用者可以依據需要加入註解文字 • 圖2-1中,程式碼第7~9行就是多行註解文字。 回程式基本架構
2-1-2 前置處理指令 • 前置處理指令能讓編譯器在執行編譯前,利用指令將相關的檔案內容加入程式碼中 • 一般常見的指令為「include」敘述,使用時必須在敘述前端加入「#」符號,稱為「前置處理指令」(Preprocessor directive) • 這些引入的檔案通稱為「標頭檔」(header file)。 • Visual C++提供了不同作用的標頭檔,在後面的章節還會繼續討論。
使用標題檔 回程式基本架構 • 有了這樣的概念,再參閱圖2-1: • 程式碼第4行加入的「iostream」標頭檔,用來處理資料的輸入或輸出。 • 然後透過程式碼第11、12行的cout物件來輸出內容。如果沒有引用此標頭檔,編譯時就會顯示錯誤訊息,以下圖2-2來說明: 編譯易顯示的錯誤訊息
2-1-3 使用名稱空間 • 名稱空間的功能是為了讓不同區域的相同名稱不會因為重覆性而產生衝突。 • 由於C++標準函式庫中提供了不同用途的函式,為了避免程式的函式名稱與標準函式庫的名稱相同,C++提供名稱空間,標準函式庫的所有函式都存放在「std」這個名稱空間。 • 當我們使用cout物件時,必須使用範圍解析運算子「::」來存取,程式碼必須寫成「std :: cout」。 • 不過這樣的撰寫方式並不是很方便,因此C++提供using directive作法, • 因此在程式碼第5行加上名稱空間的宣告,如下所示:
使用std名稱空間 回程式基本架構 • 告知編譯器,目前的函式屬於std名稱空間。那麼,程式碼中就不需要同時標示函式名稱和名稱空間。 • 如此一來,利用cout物件輸出內容時,就能直接撰寫如下: • 若未使用名稱空間,則利用cout物件輸出內容時,結果如下:
2-1-4 主程式. • 所有的程式都會有一個執行程式的進入點。 • 以C/C++語言來說,程式進入點主要是透過main()主函式。 • 表示程式執行時會先找出main()主函式作為程式的進入點,若程式中沒有main()主函式,則會產生錯誤訊息! • 對Visual C++ 2005來說,則是以_tmain()主函式作為程式的進入點。 • _tmain()主函式包含函式名稱_tmain()和函式主體(body)。 • 由「{」右大括號為函式的開始,「}」左大括號為函式的結束;大括號的內容屬於函式主體,由{ }包含的敘述稱為區塊(Block)。
主程式.. • 一般來說,所有的函式都是由函式名稱和函式主體所構成,當函式主體沒有任何敘述時,表示此函式不會做任何動作。 • 除了_tmain()主函式之外,C/C++原有的main()函式也會在後面的範例中繼續使用。 • 而Visual C++ 2005為了處理Unicode的問題,也提供wmain()主函式,其用法和main()相同,會在後面章節做介紹。
2-1-5 識別字和關鍵字 • 在Visual C++ 2005中,無論是我們宣告的變數、常數、函式名稱或是類別名稱,通常將這些名稱稱為「識別字」(identifier)。 • 這些識別字必須由英文字母、底線和數字組成。使用這些識別字時必須注意幾件事情: • 識別字的第一個字元必須由英文字母或是底線符號來做為開頭。例如:myObj、_studentName。 • 其他的識別字元可由英文字母、阿拉伯數字和底線符號所組成。 • 識別字的英文字母有大小寫之分,字母和字母之間不能有空白符號。 • 識別字可區分為使用者自行定義和系統提供,儘可能少用單一底線_或兩個底線__來做為開頭,它通常是C++語言關鍵字的範圍。 • 識別字長度可達32個字元,不能使用關鍵字來做為識別字的名稱。
關鍵字(keyword). 除了識別字之外,另一種是關鍵字(keyword),這在C/C++語言中有特殊用途,做為程式設計或呼叫使用,下表2-1為一些常用的關鍵字。
關鍵字(keyword).. 在上述關鍵字中,如果是以「__」雙底線為開頭的,通常是系統強制保留。
2-1-6 資料的輸入和輸出 • 一般來說,撰寫的程式要與使用者產生互動時,需要透過介面來提供使用者進行資料的輸入,或是輸出程式的執行結果。 • 輸入裝置包含鍵盤、滑鼠等週邊硬體,以及硬碟中的檔案; • 而輸出裝置亦包含螢幕、印表機等硬體和硬碟中的檔案。
輸出、輸入敘述 以下範例將示範常用的輸出、輸入敘述: 在C++中處理資料輸入及輸出最常用的方法就是cin與cout物件。後面範例將會使用它們來執行資料的輸出入程序。
cin物件及>>運算子: • 無論是cin或cout物件,在使用前都必須引入「iostream」標頭檔。 • cin是一個類別式的物件,不是指令。 • 使用cin必須配合輸入重載運算子「>>」來進行,我們稱之「標準輸入器」。 • 下面程式碼片段說明其用法:
使用cin物件 • 使用cin物件來取得輸入資料時,如果字串中含有空白,cin物件會停止讀取資料。 • 為了改善上述情形,cin物件提供getline()成員函式,處理由鍵盤輸入含有空白的字串,直到按下Enter鍵,會在字串末端自動加上「\0」結束字元。語法如下: • str:使用者輸入的字串。 • int n:用來設定輸入字串的最大長度。 • char ch:此參數可省略,用來設定輸入字串的結束字元
使用cin敘述 舉例說明:
cout物件及<<運算子: • 同樣地,cout也是一個類別式的物件,它配合輸入重載運算子「<<」進行輸出的動作,我們稱為「標準輸出器」 • 此外,還有一個物件「endl」,將輸出於螢幕上的資料進行「換行」工作。它的用法與「\n」有異曲同工之妙!
cout物件程式碼片段 • 以上只說明C++基本架構使用的概念。接下來將會慢慢帶領讀者有更深入瞭解。
2-2 建立Visual C++第一個專案 • 對於Visual C++ 2005的程式結構有了基本概念後,我們建立一個Win32主控台應用程式,執行步驟如下: • 點選Win32 • 執行「檔案/新增/專案」指令 • 點選「Win32主控台應用程式」 • 輸入專案名稱「ShowData」 • 設定儲存位置 • 取消此項目的勾選 • 按「確定」鈕
步驟2:進入Win32應用程式精靈 按「下一步」鈕
步驟3:設定應用程式 • 對於Visual C++ 2005的程式結構有了基本概念後,我們建立一個Win32主控台應用程式,執行步驟如下: • 選取「主制台應用程式」 • 選取「先行編譯標題檔」 • 按「完成」鈕
加入文字編輯器工具列 「原始程式檔」資料夾有兩個檔案 程式碼編輯視窗 步驟4:專案建置完成的畫面
執行步驟說明: • 步驟1:取消「為方案建立目錄」的勾選,只會建立單純的專案。 • 步驟2、3:透過Win32應用程式精靈的引導來完成步驟4的畫面。 • 步驟4:除了可以看到方案總管之外,視窗中央是程式碼編輯視窗,而工具列則新加入一個「文字編輯器」。文字編輯器的主要作用是讓我們撰寫程式時,用於註解程式,進行程式碼縮排動作,讓程式增加閱讀性。
2-2-1 認識程式碼編輯器 • 雖然應用程式精靈幫我們完成了一些程序,但仍需加入一些程式碼才能讓程式執行 • 請先將滑鼠移向程式碼編輯視窗,按下滑鼠形成插入點時,在方案總管視窗上方會顯示一個「程式碼檢視」的按鈕
程式解說 第4行:加入處理輸入、輸出資料的iostream標頭檔。 第5行:名稱空間的宣告。 第10行:「主程式」通常使用Win32應用程式精靈,選擇先行編譯標頭檔時,會以_tmain()主函式做為程式的進入點。 然後第11、12行利用cout物件來輸出字串內容。
執行「建置/建置方案」指令或按F7按鍵 建置程式碼 • 輸入程式碼後,將專案進行編譯的動作,請執行下列步驟: • 步驟1:進行編譯
檢視「輸出」視窗表示程式碼沒有任何錯誤 步驟2:檢視編譯結果 從「輸出」視窗檢視編譯結果
執行「偵錯/啟動但不偵錯」指令或按「Ctrl + F5」按鍵來啟動程式 步驟3: 以「啟動但不偵錯」指令來執行程式。
步驟4: 呼叫「命令提示字元」視窗顯示輸出結果如下圖:
執行步驟說明: • 執行「步驟1」建置專案過程中,會在此專案底下自動產生一個「Debug」資料夾,然後把專案底下的相關檔案進行編譯、連結,然後產生一個「ShowData.exe」的執行檔。 • 然後利用「步驟2」輸出視窗來顯示編譯過程,編譯的相關資訊會記錄於「BuildLog.htm」檔案中。
執行「檔案/新增/檔案」指令 2-2-2 利用命令提示字元執行程式 • 我們也能利用Visual C++ 2005 Express Edition撰寫一個簡單的C++程式,其步驟如下:
選取「Visual C++」 • 選取「C++檔」 • 按「開啟」鈕 步驟2:新增C++檔案
程式碼:Ch02\Native\data.cpp 完成上述動作後,我們在程式碼編輯視窗輸入下列程式碼: • 程式碼非常簡短,利用Visual C++ 2005來建立一個data.cpp檔案,利用C/C++原有的main()主函式來做為程式進入點。 • 此處並沒有加入名稱空間,直接以「std :: cout」來做為輸出內容。
儲存檔案 我們將程式碼進行儲存,其步驟如下所示: • 儲存於「Native 」資料夾 • 檔名「data.cpp」 • 按「儲存」鈕
編譯程式 • 完成檔案的儲存後,編譯data.cpp檔案須利用「命令提示字元」視窗來進行。 • 首先,啟動命令提示字元視窗,請按下「開始」功能鍵,執行「所有程式」→「Visual C++ 2005 Express Edition」→「Visual Studio Tools」→「Visual Studio 2005 命令提示字元」,接著在「命令提示字元」執行以下動作: • 輸入編譯「 cl/EHsc data.cpp」命令 如果沒有任何錯誤會輸出這兩個檔案 • 執行檔案「data.exe」 輸出結果
程式編譯後 • data.cpp檔案經過編譯後,若無任何錯誤,會產生data.obj目的檔和data.exe執行檔。只要輸入「data」就會執行檔案並輸出結果。
cl/EHsc編譯指令.. • 圖2-4中的第一行命令『cl/EHsc data.cpp』是用來編譯程式碼,語法為: • cl:cl.exe是編譯命令,為C/C++的編譯器和連結器,它只能在Windows 2000、Windows XP和Windows Server 2003作業系統上執行。 • option:表示選項命令,使用時必須加入斜線「/」字元,例如「/EHsc」是編譯時加入的選項命令,使用時英文字母有大小寫之分。 • file:為欲編譯的原始程式碼,此處是「data.cpp」檔案。
Cl/EHsc編譯指令.. • 一般來說,編譯時比較好的作法是加入例外處理動作。 • 因此,「EH」即是處理例外狀況模型 • 『sc』參數是產生例外狀況時讓編譯器回傳錯誤訊息 • 在「命令提示字元」視窗下進行程式碼的編譯時,都會以「cl/EHsc」來執行(有關例外處理,我們以後面的章節來介紹說明)。
2-2-3 以CLR編譯C++程式 • 在範例data.ccp中,程式碼撰寫都是利用Visual C++ 2005 Express來進行! • 如果只是很單純的檔案,也可以直接呼叫「記事本」來撰寫,並將程式碼以CLR編譯器來進行編譯!執行下列步驟: • 啟動記事本撰寫程式 • 切換到「NETprg 」目錄
開啟記事本軟體 • 按「是」按鈕 步驟2:開啟記事本
程式碼:CH02\NETprog\data2.cpp • 我們故意在程式碼第4行最後不加入結束的「;」分號符號。接著儲存程式碼,執行「檔案/儲存檔案」指令 • 再切換到「Visual Studio 2005 命令提示字元」視窗。