【C++ 筆記】簡介 / 環境安裝 / 基本語法 - part 1 === 目錄(Table of Contents): [TOC] --- 很感謝你點進來這篇文章。 你好,我並不是什麼 C++、程式語言的專家,所以本文若有些錯誤麻煩請各位鞭大力一點,我極需各位的指正及指導!!本系列文章的性質主要以詼諧的口吻,輕鬆的自學程式語言,如果你喜歡,麻煩留言說聲文章讚讚吧! 簡介(Introduction) --- > C++ 是一種高階語言,它是由 Bjarne Stroustrup(比雅尼·史特勞斯特魯普 > )於 1979 年在貝爾實驗室開始設計和開發的。C++ 進一步擴充並完善了 C 語言,是一種物件導向的程式設計語言。C++ 可運作於多種平台上,如 Windows、MAC 作業系統以及 UNIX 的各種版本。 而 Bjarne Stroustrup 又被稱為是 C++ 之父。 以上是 C++ 的簡短介紹,接著讓我們進入環境安裝的部分。 環境安裝(Environment) --- **Visual Studio**:目前普遍認為在 C++ 編寫上最方便的編輯器軟體。 另外推薦:**Dev-C++**、**Code::Blocks** 兩大軟體,其中最推薦使用的是 Code::Blocks,因為除了是 APCS 指定軟體以外,也是接下來由筆者制定講義之一系列當中最常使用的軟體。 雖說 Visual Studio 算是蠻多開發者們所使用的軟體之一,但是因為這個軟體對於 CPU、記憶體的耗損會有很大的影響,在教學上並不方便使用。 那另外也有線上編譯器可供我們使用,像是這個網站:https://www.onlinegdb.com/online_c++_compiler 線上編譯器的好處是可以不用開啟軟體就直接寫程式,但缺點是並不適合拿來開發,如果你只是想要學學 C++ 而已也就還好。 那接下來讓我們繼續環境安裝的部分: ### Code::Blocks --- ![image](https://hackmd.io/_uploads/SJr0DlkEA.png) 首先我們先到這個網站:https://www.codeblocks.org/downloads/binaries/ 在這邊就依據你個人的作業系統來進行下載安裝,像我個人的作業系統就是使用 windows 11,那麼就直接到下面的 windows 介面來。 ![image](https://hackmd.io/_uploads/BkWPFxyN0.png) 那 windows 當然也有分 32 bit、64 bit,不過現今的電腦硬體主流大多都是 64 bit 而非 32 bit,如果要下載的話,那麼正常來說點紅圈圈起來的地方即可。 ![image](https://hackmd.io/_uploads/S1doKxJVC.png) 當我們點進來以後,那麼 SOURCEFORGE 這個網站就會自動幫我們移轉到下載的地方,大約等待五秒即可開始下載。 下載好,打開後會像下面這張圖所示: ![image](https://hackmd.io/_uploads/SJkgcxkER.png) 直接點下一步: ![image](https://hackmd.io/_uploads/HJ7M9lkVR.png) 再點 I Agree: ![image](https://hackmd.io/_uploads/rJD7cgyVR.png) 這邊設定不用管他,直接下一步。 ![image](https://hackmd.io/_uploads/S1wEqxJNA.png) 如果你對路徑有異議的話,當然可以更改一下,不過本人建議維持原路徑還是好一點,總之下一步(install)。 ![image](https://hackmd.io/_uploads/SyFY9gJER.png) 然後接下來就直接進入到安裝過程了。 ![codeblocks6](https://hackmd.io/_uploads/SyF7sgJ4R.png) 之後因為我這個軟體早就安裝好了,所以打開後沒跳出這個畫面,稍微借用一下別人的圖XD 上面這張圖我們點一下那個黑字,然後點右邊的 Set as default 即可。 ![codeblocks7](https://hackmd.io/_uploads/SJ2PseJVR.png) 點 OK 之後會跳出如上圖,同樣照著圖片的點即可,這個意思是說要不要將所有 C/C++ 的檔案與 Code::Blocks 連結,也就是如果有個檔名叫做 abc.cpp (.cpp 為 C++ 副檔名),你雙擊點開以後也會順帶幫你打開 Code::Blocks 進去編輯。 ![image](https://hackmd.io/_uploads/HJdAse1VC.png) 打開以後呢,你會發現,欸?怎麼都是英文?我英文文盲啊! 從古至今有句話是這麼說的:~~學程式之前,英文先學好啊!~~ 一 胡適 ~~胡適:我沒說過。~~ ![image](https://hackmd.io/_uploads/BkHchgJVC.png) 不鬧了,反正如果我們要新增一個空白檔案的話,那麼請來到軟體的左上角 [file] -> [Empty file] 打開一個空檔案。 ![image](https://hackmd.io/_uploads/S1hpnxk40.png) 然後就有一個檔案叫做 Untitled1,也是我們熟悉的"未命名"檔案。 此時我們按下 ctrl + S 快捷鍵(表示儲存檔案),會跳出檔案總管跟你說:「哈囉,請問你的文件要放在哪裡呢?」 ![image](https://hackmd.io/_uploads/SJvHTeJER.png) 人性是懶惰的,我相信你一定會直接按下右下角的「存檔(S)」,然後接下來就是一大堆的 Untitled12345678.c!! 阿各位讀者,修但幾勒,在這邊有個重點要提醒您:副檔名記得將 .c 改成 .cpp 唷!這樣才是 C++ 的格式,不然到時候跑 C++ 就 GG 了。 存好檔以後,也讓我們進入到下一個章節了: C++ 基本語法 --- 首先來介紹 C++ 的基本架構: ![image](https://hackmd.io/_uploads/SJeLRg14A.png) 在這之前,你可能會疑惑,為什麼你的字體那麼大?我的字體好小啊,眼睛快脫窗了!! 沒關係,請你按住你的 ctrl 鍵不要放,然後將你的滑鼠滾輪向上滑,就能達到跟我一樣的效果了。 如果我們要執行程式碼的話,可以直接按下你鍵盤上的 F9 按鈕,直接編譯執行程式碼。或是你懶得按,只想動滑鼠就請看下圖: ![image](https://hackmd.io/_uploads/SJ1ZWvkVR.png) 不過值得注意的是,這個 F9 按鈕你按一次就行了,前提是你沒有改動程式碼的話,還是按下普通的綠色三角形按鈕即可,快捷鍵是 ctrl+F10。(以上快捷鍵僅限 Code::Blocks 軟體) 好的,首先讓我們一行一行慢慢介紹: 1. ***第一行:引入標頭檔。*** 標頭檔的副檔名叫做 .h,那第一行完整的標頭檔就叫做 iostream.h,不過第一行它卻不是寫 #include <iostream.h> 的,為什麼?(有關於這部分有興趣自己查看看吧 :))另外這個標頭檔的作用是管理「輸出」、「輸入」的,i = input、o = output、stream = 串流。 總之標頭檔你就把它想像成是 C++ 當中能夠發揮功能的零件吧! 2. ***第二行:using namespace std; 告訴編譯器使用 std 命名空間。*** 好的,在說明這個之前,我先請各位看看沒有使用命名空間的寫法: ![image](https://hackmd.io/_uploads/rk4mzW1ER.png) 有看出差別了嗎?前一個圖跟上圖比較,上圖刪除了命名空間的指令,並在 cout 前面加上了 std::。 這個 std 即為 C++ 當中的標準函式庫(Standard Library),那函式庫這個東西就裝了非常多的標頭檔在裡面,所以函式庫就像是一個圖書館,裡面裝了很多書(標頭檔)在裡面。 那為什麼需要命名空間這個東西呢?其實很簡單,就一句話而已:太麻煩啦! 不過你想想,每次打指令前都要打上 std:: 是不是挺煩的?而我們在第二行直接宣告命名空間,告訴編譯器說我們要使用 std 命名空間,就能夠直接省略這個步驟。 而命名空間比較正式的說法是這樣: > 命名空間的作用是可以區分不同函式庫中相同名稱的函式。 3. ***第四行:int main() 為程式一開始執行的地方。*** int main() {} 這個東西是一個函式,至於函式是什麼各位目前還不太需要了解,只需知道他是「主」函式,為 C++ 程式碼執行程式碼的中心。 4. ***第五行:cout << "Hello World"; 表示在終端上輸出*** cout,先念 c、再念 out,這個就是表示在終端(就是那個命令提示字元的視窗)上進行輸出的動作。輸出就是把文字顯示在終端上。 執行後圖如下: ![image](https://hackmd.io/_uploads/HkVlzPJ4R.png) 而在這邊我想要提醒各位一個非常重要的地方是: ***C / C++ 每一條語句的最後面請加上分號!!*** ***C / C++ 每一條語句的最後面請加上分號!!*** ***C / C++ 每一條語句的最後面請加上分號!!*** 因為很重要所以說三次,但是例外就是像引入標頭檔、函式這類的不用特別加上分號。 啊?你說為什麼要加上分號,沒辦法,這個就是 C / C++ 的規定,代表一個語句的結束。 5. ***第五行:return 0; 表示程式到此結束*** return 0;(C++ 98 標準開始可以不用加,也就是現在你可加可不加,因為編譯器在編譯執行時會自動幫你加上去) 表示讓 int main(){} 主程式函式結束,並且回傳 0 這個值,執行後結果請看下圖: ![image](https://hackmd.io/_uploads/HJf1EDyVC.png) 阿如果我們將 return 0; 改成 return 1; 呢? ![image](https://hackmd.io/_uploads/B1wZNvJNA.png) 看起來……沒什麼變化對吧?是的沒錯~但有時候這種 return 0;、return 1; 常常會用來表示程式碼執行正確或是錯誤的訊息讓我們知道,0 表示完全沒問題,1 就是有問題。但你要注意的是 1 並不是絕對的數值。 ### C++ 的一些小細節 --- cout 時因為是輸出,所以後面要使用 <<,因為要將資料"插入"標準輸"出"流。 cin 時因為是輸入,所以後面要使用 >>,因為要將資料"提取"自標準輸"入"流。 cin 的小小例子: ```cpp= #include <iostream> using namespace std; int main() { int x; cin >> x; cout << "The Number is : " << x; return 1; } ``` 註:int x; 為一個變數。 輸出結果如下圖: ![image](https://hackmd.io/_uploads/ryMBqvkNA.png) ### 註解(註釋:Comment) --- C++ 跟 C 的註解是一樣的: * // - 單行註解 * /* ... */ - 多行註解 總結(Conclusion) --- C++ 基本架構: ```cpp= #include <iostream> using namespace std; int main(){ cout << "Hello World"; return 0; } ``` #include <> 表示引入標頭檔 using namespace std; 表示使用命名空間 std(iosteam.h 放在 std 標準函式庫裡面,使用命名空間主要是為了節省麻煩) int main(){} 為 C++ 當中的主要程式執行處 cout << 作為輸出,輸出於終端上。 <-> cin >> 作為輸入,從終端輸入資料。 return 0; 表示一個函式結束。(C++ 98 標準開始可以不用加,也就是現在你可加可不加,因為編譯器在編譯執行時會自動幫你加上去) return 0;、return 1; 這樣的設計可以讓程式設計師知道程式碼錯誤還是沒錯,沒錯就是 0、有就是 1,1 值並不是絕對的。 ***記得,每個語句都必須加上分號!!*** ***記得,每個語句都必須加上分號!!*** ***記得,每個語句都必須加上分號!!*** 參考資料 --- [C++基礎語法介紹 - HackMD](https://hackmd.io/@Scott-Chou/rkbl5dzCO) [IT Lab艾鍗學院技術Blog: [C/C++程式] Code::Blocks 整合開發環境的安裝與使用](https://blog.ittraining.com.tw/2018/01/dev-c-codeblocks.html) [C++ 基本语法 | 菜鸟教程](https://www.runoob.com/cplusplus/cpp-basic-syntax.html) [C++ 的命名空間 | 就是愛程式](https://atedev.wordpress.com/2007/01/01/c-%E7%9A%84%E5%91%BD%E5%90%8D%E7%A9%BA%E9%96%93/) [C++標準函式庫 - 維基百科,自由的百科全書](https://zh.wikipedia.org/zh-tw/C%2B%2B%E6%A8%99%E6%BA%96%E5%87%BD%E5%BC%8F%E5%BA%AB) [What does "<<" and ">>" mean in C++ for cout/cin? - Stack Overflow](https://stackoverflow.com/questions/7757278/what-does-and-mean-in-c-for-cout-cin)