程式設計(二) 參考書目: 1. 洪維恩,C++ 教學手冊 第三版,旗標出版圖書公司。 2 程式設計(二) 參考書目: 1.洪維恩,C++ 教學手冊 第三版,旗標出版圖書公司。 2. Walter Savitch, Absolute C++ (4th Edition), Pearson Education, Inc., 2010. 3. Paul J. Deitel and Harvey M. Deitel, C++ How to Program, 7rd Edition, Prentice Hall, 2009.(中文版 C++ 程式設計藝術 第五版 全華書局) 1. C++ 導論 Chih-Hung Wang
緣起 C/C++ C語言是於1972年所發展出來的語言 C++ 於1980年開始發展 將物件導向(object oriented)加入C語言中 稱為「C with classes」程式語言
C++ 的特色 (1/3) C++具有下列的幾項特色: 向下相容C語言
C++ 的特色 (2/3) 具物件導向技術的語言 物件導向程式設計(OOP)具有的相關技術 「封裝」 「繼承」 「多型」 靈活的程式流程控制
C++ 的特色 (3/3) 高效率且可攜性佳的語言 程式碼的再利用 C++在執行前必須先經過編譯,執行效率遠高於直譯式語言 可在修改少許程式碼的情況下,便能在不同的作業系統執行 程式碼的再利用 可依據原有類別所提供的功能,再加上新的需求,進而設計 出新的類別,便是程式碼的「再利用」 程式碼的再利用可減少程式碼的開發時間與費用
規劃與實作 (1/2) 1. 規劃程式 常用的流程圖符號 繪製流程圖的範例
規劃與實作 (2/2) 2. 撰寫程式碼及註解 3. 編譯程式 4. 連結程式 5. 偵錯與測試 6. 程式碼的修飾與儲存 語意錯誤(semantic error) 語法錯誤(syntax error) 6. 程式碼的修飾與儲存
程式碼的編輯到執行 (1/2) 第一個C++程式
程式碼的編輯到執行 (2/2) 下面的視窗為鍵入程式碼之後的情形 : 程式碼經過編譯與執行後的執行結果
簡單的C++程式 (1/2)
簡單的C++程式 (2/2) main() 函數的傳回值型態及引數型態的設定
關於ANSI/ISO C++的標準 C++標頭檔可能有下面四種型態 C語言的標頭檔:以「.h」結尾 C++語言的標頭檔:以「.h」結尾 ANSI/ISO C++新標準的標頭檔:沒有副檔名 從C移植過來的標頭檔,沒有副檔名,字首加小寫的c 新版的ANSI/ISO C++必須利用using namespace來設定 名稱空間為std
#include指令及標頭檔 (1/2) 標頭檔(header file)永遠被含括在程式碼的起頭處 右圖為含括動作前後的比較
#include指令及標頭檔 (2/2) 標頭檔的內容
編譯與執行過程的解說 原始程式編譯及連結的過程
主函數、大括號、區塊與主體(1/2) 主函數main() 大括號、區塊及主體 main() 是程式執行的開端 每個C++程式必須有一個main(),而且只能有一個 大括號、區塊及主體 區塊從左大括號({)開始,到右大括號(})結束 指令敘述結束時,以分號「;」做結尾
主函數、大括號、區塊與主體(2/2) 下面的範例說明什麼是程式區塊
變數 (1/2) 變數的宣告 變數的資料型態 資料型態有char, int, bool, long, short, float與double等 數值型態變數可分為有號(sign)或是無號(unsigned)
變數 (2/2) 變數名稱與限制 通常會以變數所代表的意義來取名。 自訂變數的名稱不能使用到關鍵字。 變數名稱的字元可以是英文字母、數字或底線。 名稱中不能有空白字元,且第一個字元不能是數字
變數的設值 方法1 在宣告的時候設值 方法2 宣告後再設值 方法3 在程式中的任何位置宣告並設值
為什麼要宣告變數 直譯式語言不需要宣告變數 編譯程式可找到錯誤的變數名稱,避免變數名稱誤用 將變數集中宣告時,在系統維護上也就容易得多
名稱空間 04 using namespace std; 是用來設定名稱空間為 std。在 ANSI/ISO C++ 最新規範中, C++ 標準函數庫裡所包含的函數、類別及物件均是定義在 std 這個名稱空間內,所以必須指名其使用之名稱空間為 std,以便使用 C++ 所提供之標準程式庫。(以後會詳述) 如 endl, cin 及 cout 之使用 09 std::cout<<“I have” <<num << “ apples.”<<std::endl;
cout與串接運算子<< C++是採cout與「串接運算子<<」來輸出 以cout顯示字串:
換行輸出的範例 下面是把字串換行輸出的範例
識別字 (1/2) 識別字是使用者用來命名變數或者是函數的文字 變數與函數的名稱均是識別字(identifier) 為識別字命名時,只要能代表變數的意義即可
識別字 (2/2) 識別字的習慣命名原則
關鍵字 關鍵字(keyword)是編譯程式本身所使用的識別字 C++使用的關鍵字:
錯誤的分類 錯誤分為 語法錯誤(syntax error) 語意錯誤(semantic error)。 語法錯誤就是語法不符合C++的規定 語法正確,但執行結果不符合要求
語法錯誤 下面是有語法錯誤的程式
語意錯誤 執行結果不符合要求,可能犯了語意錯誤
程式碼請用固定字距 (1/2) 下面的程式碼是用固定字距
程式碼請用固定字距 (2/2) 下面的程式碼是用比例字距
將程式碼縮排 (1/2) 有縮排的程式碼可提高可讀性
將程式碼縮排 (2/2) 下面的例子因為撰寫風格的關係,閱讀起來較為困難
註解 註解有助於程式的閱讀與偵錯。 以「/*」開始,「*/」結尾,將欲註解的文字括起來
使用註解的目的 在程式碼起始處加入一段說明文字 將變數、函數、類別或是程式碼的作用寫出 在除錯的過程中,避免重複輸入,浪費時間
另一個 C++ 例子
Arithmetic Operators (更多範例) Display 1.4 Named Constant (1 of 2) Standard Arithmetic Operators Precedence rules – standard rules
Arithmetic Operators: Display 1.4 Named Constant (2 of 2)
補充教材 Code::Blocks 使用介紹 Code::Blocks 為 open source 的 IDE。 跨平台 Windows、Mac OS X、Linux 等 之IDE。 支援多種編譯器 GCC / MinGW、 Microsoft Visual C++ Intel ICC … 下載網站 http://www.codeblocks.org/