C++程式碼需要透過編譯器編譯成執行檔才能執行,傳統使用Dev-C++,參加APCS檢定需要使用Code::Block,Code::Block的操作請參考以下影片。
目前流行使用線上編輯程式碼,可以線上編輯C++或Python程式,登入帳號後進行儲存,可以在手機、平板與電腦上使用,例如:
GDB online(https://www.onlinegdb.com/),該網站可以選擇是否要登入帳號,不登入帳號無法儲存程式,教學上學生撰寫簡單程式,不需要儲存,教學上使用很方便。
replit(https://replit.com/)需要登入帳號,可以儲存程式。
以下介紹Dev-C++
1-1 Dev-C++下載
下載網址 https://sourceforge.net/projects/orwelldevcpp/
1-2 介面語系修改
點選「工具->環境選項」,再選取「介面」頁籤,在Language選取「Chinese(TW)」,不要選「Chinese」會變成簡體字。
1-3 程式碼字體大小
點選「工具->編輯器選項」,可以選取字型與大小,可以選取新增行號。
1-4 操作環境介紹
新增檔案,點選「檔案->開新檔案->原始碼」
儲存檔案,點選「檔案->儲存」
1-5 第ㄧ個程式
本程式範例main函式只有兩行,第4行「cout << “Hello,C++” << endl」印出「Hello,C++」後換行,endl表示換行,第5行(system(“pause”))中斷程式執行,程式執行到此等待使用者按任意鍵繼續。
程式的架構
C++語言在撰寫時有一定的架構,如本範例。
(1)首先包含系統函式庫,這樣程式就不用所有功能皆需要自己撰寫,利用系統現有的函式庫直接呼叫使用,例如:在螢幕顯示「Hello」,可以使用cout物件,該物件由iostream提供,所以第1行就將iostream包含(include)進來,程式執行要中斷使用system函式,該函式由cstdlib提供,但可以不用包含cstdlib也可以使用。
(2)使用標準命名空間(std),因為輸入(cin)與輸出(cout)屬於標準命名空間,所以加入一行「using namespace std;」,若不加上這一行每個輸入(cin)要改成(std::cin),每個輸出(cout) 要改成(std::cout)才知道輸入(cin)與輸出(cout)屬於標準命名空間。
(3)C++語言定義程式第一個開始執行的程式為main函式,所以需先寫一個main函式,函式名稱main後接一對小括號,表示main為函式,函式需要指定開始與結束的位置,C語言定義使用一對大括號刮起來,左大括號「{」表示函式開始,右大括號「}」表示函式結束
(4)main主函式中的每行結束需加上分號「;」,表示程式一行結束,左大括號與右大括號後面不需要加上分號「;」,而左大括號與右大括號內所包夾的每行程式皆需加上分號「;」,而#include後面不加上分號「;」。
1-6 程式編譯與執行
程式編譯,用於將原始碼產生執行檔,點選「執行->編譯」。
程式執行,將執行檔使用命令提示字元程式執行,點選「執行->執行」。
1-7 程式除錯
讓程式可以一行一行執行,設定中斷點(點選要中斷程式的最左邊灰色部分,出現紅點與紅色橫線),點選「除錯->除錯」。
1-8 養成良好的撰寫程式習慣
編輯C語言程式時,可以遵守以下注意事項,讓程式可以正確編譯與容易閱讀。
(1)區塊中每一行結束需要加「分號」
左大括號與右大括號所包夾的範圍被稱為區塊,左大刮號「{」表示區塊開始,而右大刮號「}」表示區塊結束,函式、條件判斷(if-else)與迴圈(for或while)後面可以新增區塊,區塊中的每一行結束時,需要加上分號(;)表示該行結束,如前節範例,main函式區塊中每一行結束加上分號,如下圖,但左大刮號與右大刮號後面不加分號(;)。
(2)程式碼縮行
程式中大部分的換行與空格都沒有意義,程式中需要適當的換行與空格,讓後續維護程式的人更容易閱讀。想想看若main主程式中每一行程式都不換行,程式可以正常編譯,但對於後續維護程式的工程師會造成困擾,程式碼不易閱讀。
程式碼以縮行方式表示屬於同一區塊,縮行表示每行開始的空白字數,縮行相同字數表示屬於同一的區塊,幫助程式設計師更容易閱讀程式碼,如下圖,標示為「①」表示未縮行屬於同一區塊,「②」縮行2個字元〈可以縮行2到4個字元,沒有統一規定,也可以縮行自己想要的字元數〉,表示為main函式區塊。C語言並未強迫一定要縮行,不縮行程式編譯也不會有問題。
(3)註解
於程式碼中可以新增說明文字,解釋程式碼的運作情形,這些說明文字需轉換成註解,若是一行的註解,可以使用「//」,表示從「//」後的文字是註解,若是整個區塊都忽略,則使用「/*」與「*/」所包夾的區域,整個區域都成為註解。
1-9 函式庫介紹網站C++ reference(英文)
以下為本章教學影片。