C++ 入門指南 - 認識 C++ 語言

使用 C++ 語言寫程式,最簡單的方式就是開啟文字編輯器 (text editor) ,然後將原始程式碼逐字元一個一個打進文字編輯器中,然後依純文字檔案的編碼儲存檔案, C++ 程式的原始碼檔案採用 .cpp 的副檔名。




由於 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


usingnamespaceintvoidreturn 被稱為關鍵字 (keyword) ,所謂的關鍵字是語法功能的保留字 (reserved word) ,具有既定特殊的用法,例如 usingnamespace 為名稱空間的指令, 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) 之中,如果沒有使用 usingnamespace 的話,下面的 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

沒有留言: