所謂的程序化程式設計,就好像不斷的把程序 (procedure) 堆起來,程式就先執行堆在最上面的,執行完就拿掉,然後執行下面一個。物件導向程式設計卻有很大不同,物件 (object) 是分散的,不需要堆疊起來,程式也就是各個物件間的互動
接下來我們以一個簡單的小程式說明 C++ 的基本概念 :)
#include <iostream> int main() { std::cout << "^_^" << std::endl; return 0; } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:simple.cpp 功能:簡單的程式範例 作者:張凱慶 時間:西元 2010 年 10 月 */
C++ 程式的原始碼 (source code) 副檔名可用 .cc 、 .cxx 、 .cpp 、 .cp 或 .C ,我們所採用的是 .cpp 。先來編譯 (compile) 執行看看吧
Unix-like 的作業系統中,命令列環境下可以直接使用 GCC 的工具 g++ 指令編譯 C++ 原始程式碼,若使用 MS-Windows 或其他作業系統,可能需要額外安裝編譯器來進行編譯。
GCC 編譯 C 或 Objective-C 程式都是用 gcc 指令。
第 1 行
#include <iostream>
這是從 C++ 的標準程式庫 (standard library) 引入輸入或輸出 (I/O) 的功能。 #include 為 C++ 的前置處理器 (preprocessor) 之一,用來引入標頭檔 (header file) 所宣告 (declaration) 的內容,我們後續才會介紹標頭檔的作用,以及如何設計自己的標頭檔。
角括號 < > 圍起來的是標準程式庫中的 iostream ,由於 C++ 的輸入或輸出的功能都被放在標準程式庫之中,所以要在螢幕上顯示訊息,就需要引入這個處理輸入或輸出的標頭檔。
角括號 < > 跟數學所用的小於、大於運算子是相同的符號。
第 3 行到第 7 行
int main() { std::cout << "^_^" << std::endl; return 0; }
這是 main() 函數的宣告及定義。所謂的函數 (function) 是 C++ 程式的基本單位, main 為預設的名稱,也是 C++ 程式執行的起點,因此每個可執行的 C++ 程式原始碼都應該包含一個函數 main() 。函數,就像數學中的函數一樣,代入某些數,然後可以求得某一數,代入的數在程式語言中被稱為參數 (parameter) ,而求得的數被稱為回傳值 (return value) 。
函數名稱後的小括弧 () 就是接受參數的地方,我們的這個例子不需要參數,因此留空白。函數前的 int 為關鍵字 (keyword) 之一。所謂的關鍵字是用為程式語言的語法功能, int 是 C++ 的基本內建型態 (primitive built-in type) 之一,意思為整數 (integer) ,像是 1 、 -90 之類的數字,這裡放在函數名稱前,表示 main() 的回傳值型態為 int ,也就是整數。
main() 底下的一組大括弧 { } 則是函數主體 (function body) ,也就是函數功能實際定義的地方。這個程式實際的工作只有兩行,其中,我們先看到第 6 行
return 0;
return 也為關鍵字之一,用為函數回傳數值之用,通常會放在函數主體定義的最後面。這裡的意思是說,若程式執行成功, main() 便回傳整數 0 給作業系統。
注意, return 空一格才接回傳值整數 0 ,其後接分號,代表這是一個陳述 (statement) 。陳述為 C++ 程式實際執行的單位,當 main() 被作業系統呼叫後,程式由依 main() 中從上到下的陳述順序,逐一執行。
分號 ; 表示陳述的結尾,不可省略。
第 5 行
std::cout << "^_^" << std::endl;
cout 為 ostream 型態 (type) 的物件, ostream 型態則是在標準程式庫中所定義的,為從標準輸出裝置 (standard output) 輸出串流 (stream) 之用,標準輸出裝置通常是指螢幕。前面有 std:: ,這是說 cout 是由名稱空間 (namesapce) std 所定義的,而 :: 為範疇解析運算子 (scope resolution operator) ,接在名稱空間之後,其後才是所用之名稱。
cout 發音為 see-out 。
嗯,這輸出機制已經使用相當多 C++ 的特性,包含物件、運算子、名間空間等,詳細細節先不用擔心,我們陸續都會學到,現在需要認識的就是怎麼去使用這些東西囉! :)
類似的, << 為輸出運算子 (output operator) ,這是用來把接在後面的數值 (value) 輸出到標準輸出裝置,而雙引號圍起來的為字串字面常數 (string literal) ,這是說輸出 "^_^" ,也就是在命令列印出笑臉 ^_^ 。
然後再接一組輸出運算子 << ,表示後面還有其他數值要輸出。這裡輸出的是 endl ,這也是在 std 中定義的名稱,表示一個特殊的值,在命令列印出 ^_^ 後,游標跳到下一行開始。
最後,第 9 行到第 14 行
/* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:simple.cpp 功能:簡單的程式範例 作者:張凱慶 時間:西元 2010 年 10 月 */
利用 /* 和 */ 回起來的地方,這是 C++ 多行註解 (comment) 的方式,編譯器 (compiler) 會忽略所有的註解文字,因此註解文字沒有額外的語法規則,也就是說,用任何方式寫註解都可以囉!
利用 /* */ 的多行註解,註解中不可再有其他註解。
C++ 也有單行註解的方式,就是用連續兩個斜線 // ,如
// 這是註解的第一行 // 這是註解的第二行
註解是在程式中附加的說明文字,不同開發團隊會有不同的註解方式。我們所提供的註解主要仍是供教學說明之用。
中英文術語對照 | |
---|---|
程式語言 | programming language |
物件導向 | object-oriented |
程式 | program |
程序化程式設計 | procedural programming |
物件導向程式設計 | object-oriented programming |
程序 | procedure |
物件 | object |
原始碼 | source code |
編譯 | compile |
標準程式庫 | standard library |
輸入或輸出 | I/O |
前置處理器 | preprocessor |
標頭檔 | header file |
宣告 | declaration |
函數 | function |
參數 | parameter |
回傳值 | return value |
關鍵字 | keyword |
基本內建型態 | primitive built-in type |
整數 | integer |
函數主體 | function body |
陳述 | statement |
型態 | type |
標準輸出裝置 | standard output |
串流 | stream |
名稱空間 | namesapce |
範疇解析運算子 | scope resolution operator |
輸出運算子 | output operator |
數值 | value |
字串字面常數 | string literal |
註解 | comment |
編譯器 | compiler |
您可以繼續參考
基本概念
標記
基本資料型態
相關目錄
回 C++ 快速導覽
回 C++ 教材
回首頁
參考資料
C++ reference
cplusplus.com
Cprogramming.com C++ Tutorial
C++ Primer, Fourth Edition, Stanley B. Lippman...
本文於 2013 年 1 月更新
沒有留言:
張貼留言