由於 C++ 編譯器的版本眾多,各種編譯器支援不同的副檔名,因此除了 .cpp 之外,尚有 .cxx 、 .xp 、 .c 等,我們採用 GCC 編譯範例程式,副檔名使用常見的 .cpp 。
也可以利用具有語法高亮度顯示的文字編輯器,或是整合開發環境 (Integrated Development Environment, IDE) ,如下圖為 Mac 系統的 Xcode
使用本站的語法高亮度顯示,此範例程式 demo.cpp 如下
// 引入標準程式庫中相關的輸入、輸出程式 #include <iostream> // 引入標準程式庫中相關的字串程式 #include <string> // std 為標準程式庫的名稱空間 using namespace std; int main(void) { // 此行程式碼建立名稱為 m , string 型態的物件 // 小括弧為 string 的建構子 // 雙引號為字串字面常數 string m("There is no spoon."); // cout 為用來輸出的物件 // endl 為新行符號 \n cout << endl; cout << m << endl; cout << endl << endl; return 0; } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:demo.cpp 功能:示範 C++ 程式 作者:張凱慶 時間:西元 2012 年 10 月 */
我們先看到有特殊顏色標記的幾個字
using namespace int void return
using 、 namespace 、 int 、 void 、 return 被稱為關鍵字 (keyword) ,所謂的關鍵字是語法功能的保留字 (reserved word) ,具有既定特殊的用法,例如 using 與 namespace 為名稱空間的指令, int 為基本資料型態 (primitive data type) 中的整數 (integer) , void 被用來宣告 (declare) 空的參數列 (parameter list) 或沒有回傳值 (return value) 。 C++ 共有 84 個關鍵字,我們接下來會逐一介紹各個關鍵字的用法。
另外,雙引號為起來的內容則為另一種顏色
"There is no spoon."
這是字串字面常數 (string literal) ,所謂的字串就是文字資料,字串內容可以是任何輸入字元。
註解 (comment) 在語法高亮度系統也有特殊的顏色,連續兩個斜線為單行的注釋,斜線、星號開始到另一組星號、斜線結束的範圍則為多行的註解
// 引入標準程式庫中相關的輸入、輸出程式 // 引入標準程式庫中相關的字串程式 // std 為標準程式庫的名稱空間 // 此行程式碼建立名稱為 m , string 型態的物件 // 小括弧為 string 的建構子 // 雙引號為字串字面常數 // cout 為用來輸出的物件 // endl 為新行符號 \n /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:demo.cpp 功能:示範 C++ 程式 作者:張凱慶 時間:西元 2012 年 10 月 */
所謂的註釋就是在程式中輔助說明的文字,凡是註釋文字,也就單行連續兩個斜線之後的文字,或是多行斜線、星號範圍間的文字,這些文字都不屬於會被程式執行的部份,因此可用自然語言替程式說明,無須恪守 C++ 的語法規則。
其他沒有粗體,也沒有特殊顏色的文字都是識別字 (identifier) ,所謂的識別字是我們寫程式自行定義的名稱,如上例中的變數 (variable) m 。事實上,許多識別字已經是預設或是存在標準程式庫之中,預設如上面的 main() 、 string 、 std 、 cout 、 endl 等, main() 為函數 (function) 名稱,每個可執行的 C++ 程式都必須有個 main() 函數, void 則表示 main() 不需要參數 (parameter) ,其為空的參數列。
這裡, main() 的小括弧留空也同樣表示空的參數列。
標準程式庫提供許多已經寫好、測試無誤的程式,因此我們寫程式引入標準程式庫,也就是利用前置處理器 (preprocessor) 指令 #include 進來。
上例中, string 、 cout 、 endl 都屬於標準程式庫中的識別字, string 為類別 (class) 名稱, cout 為輸出到標準輸出裝置的物件 (object) , << 則是輸出運算子 (output operator) 。
這個範例很簡單,大體上我們可以分成五個區域來看,分別是
- 引入標準程式庫
- 宣告名稱空間
- 宣告 main() 函數
- 建立字串物件
- 於命令列印出訊息
C++ 把輸入與輸出的功能都放到標準程式庫 (standard library) 之中,因此使用相關程式需要先引入進來,這需要使用前置處理器指令 #include ,輸入與輸出相關的程式放在 iostream 裡,角括弧 <> 表示這是從標準程式庫中引入的。
同樣的,我們也有用到標準程式庫 string 的程式,因此也要用 #include 引入進來。
由於標準程式庫中的所有名稱都是定義在 std 名稱空間 (namespace) 之中,如果沒有使用 using 與 namespace 的話,下面的 main() 就得這樣寫
int main(void) { // std::string 為字串類別 std::string m("There is no spoon."); // std::cout 為用來輸出的物件 // std::endl 為新行符號 \n std::cout << std::endl; std::cout << m << std::endl; std::cout << std::endl << std::endl; return 0; }
可執行的 C++ 程式都需要有個 main() 函數,主要因為程式是由作業系統呼叫 main() 來執行的,因此我們自己設計程式時,都得把程式執行的部份放到 main() 當中。若程式檔案少了 main() 函數,這個程式檔案編譯後是無法被執行的。
下面建立一個 string 物件,這裡是用 string 的建構子 (constructor) 建立 string 物件,然後用字串字面常數當作建構子的參數,初始化 string 字串的內容為 There is no spoon. 。結尾需要用分號,一行分號結尾的程式就是一個陳述 (statement) ,陳述是程式執行的單位, C++ 程式是一行陳述執行完畢,才接著下一行陳述繼續執行。
最後在命令列印出空行,這是利用標準函數庫中的 cout 物件,後面空一格接輸出運算子 << ,最後是空行符號 endl ,最後以分號結束。
接下來兩行陳述亦同,每行陳述的開頭都是 cout ,當然也可以寫在同一行,如下
cout << endl << m << endl << endl << endl;
我們之後會開始學習設計自己的物件,也就是設計 class ,一種 class 也是一種型態(資料型態)。下面,我們繼續來看看如何編譯與執行吧!
中英文術語對照 | |
---|---|
文字編輯器 | text editor |
整合開發環境 | Integrated Development Environment, IDE |
關鍵字 | keyword |
保留字 | reserved word |
基本資料型態 | primitive data type |
整數 | integer |
宣告 | declare |
參數列 | parameter list |
回傳值 | return value |
字串字面常數 | string literal |
註解 | comment |
識別字 | identifier |
變數 | variable |
函數 | function |
參數 | parameter |
前置處理器 | preprocessor |
類別 | class |
物件 | object |
輸出運算子 | output operator |
標準程式庫 | standard library |
名稱空間 | namespace |
建構子 | constructor |
陳述 | statement |
您可以繼續參考
基礎篇
相關目錄
回 C++ 入門指南
回 C++ 教材目錄
回首頁
參考資料
Structure of a program
沒有留言:
張貼留言