# 第一堂課 總之先把上課會用到的網站註冊一下 然後在Hackmd紀錄你的帳密 like this: ``` 帳:214019@stu.hdsh.ilc.edu.tw 密:1l4xu,4ai6z83 ``` 可以的話用你自己的帳號就好 Hackmd連結: [https://hackmd.io/](https://hackmd.io/) Hydro連結: http://120.101.182.21/d/hd112/register 設好帳密 然後開始你的程式漫遊 http://120.101.182.21/d/hd112/domain/join --- # Hello, World! ## 競賽中的 C++ 編程習慣 在競賽編程中,我們強調 **簡潔** 和 **高效**。因此,我們經常會用一些特定技巧來加速編程,例如使用 `bits/stdc++.h` 和 `namespace std`。今天我們會學習如何用這些技術來寫出最簡單的 C++ 程序——「Hello, World」。 --- ## 寫一個「Hello, World」程序 ### 程序代碼 ```cpp #include <bits/stdc++.h> // 引入所有標準庫 using namespace std; // 省略 std:: 的使用 int main() { cout << "Hello, World!" << "\n"; // 輸出 Hello, World! return 0; // 程序正常結束 } ``` ## 程序結果 當你執行這個程序時,螢幕上會顯示: ``` Hello, World! ``` ### 看不懂,對吧?這就是魔法! 讓我們一起來了解每一行代碼的意思。 --- ## 講解 ### 什麼是 `bits/stdc++.h`? `bits/stdc++.h` 是 C++ 中的 **標頭檔**,它包含了所有標準的 C++ 庫。在競賽編程中,為了節省時間,我們常常會使用這個標頭檔來一次性引入所有需要的函數庫,而不用一一單獨引入。 **標準引入方式 vs `bits/stdc++.h`:** - 標準引入需要逐個包含庫,例如: ```cpp #include <iostream> #include <vector> #include <algorithm> ``` - 使用 `bits/stdc++.h` 可以一次性引入所有庫: ```cpp #include <bits/stdc++.h> ``` **注意**:這種方式通常只在競賽中使用,因為它會引入許多不必要的庫,可能會導致編譯速度變慢。在日常開發中,還是建議只引入所需的庫。 --- ### `namespace std;` 是什麼? 在 C++ 中,我們經常使用標準庫中的功能,例如 `cout` 和 `cin`,但這些函數位於 `std` 命名空間中。因此每次使用時,我們都需要加上 `std::` 前綴。 ### 使用 `std::` 前綴的方式 ```cpp #include <iostream> int main() { std::cout << "Hello, World!" << std::endl; return 0; } ``` 這樣寫顯得有些冗長,所以我們可以使用 `using namespace std;`,將 `std` 命名空間中的所有內容直接引入,這樣就可以省去 `std::`。 ### 使用 `namespace std;` 的方式 ```cpp #include <iostream> using namespace std; int main() { cout << "Hello, World!" << endl; return 0; } ``` --- ### `cout` 是什麼? `cout` 是 C++ 的標準輸出流,來自於標準輸入輸出庫 `iostream`。它的作用是將內容輸出到螢幕上。在這裡,我們用它來顯示 `Hello, World!`。 **例子:** ```cpp cout << "Hello, World!"; ``` 這行代碼會將引號內的文字顯示在螢幕上。 --- ### `\n` 是什麼? `\n` 是 **換行符**,它告訴電腦在輸出完文字後跳到下一行。你可以把它看作是按下鍵盤的「Enter」鍵。 **例子:** ```cpp cout << "Hello, World!" << "\n"; ``` 這行代碼會顯示 `Hello, World!`,並且將游標移到下一行。 --- ### `return 0;` 是什麼? `return 0;` 是 C++ 中用來表示程序成功執行完畢的語句。當程序到達這一行時,它會告訴電腦:**"一切都順利完成了,程序可以結束了。"** 在 `main()` 函數中,`return 0;` 是標準的結尾。如果程序執行成功,系統會收到 0,表示沒有發生錯誤。 --- ## 小知識 - **`bits/stdc++.h` 的優點**:它可以加快編程速度,不用每次都記得引入不同的庫,非常適合競賽環境。 - **`using namespace std;` 的意義**:在競賽中,為了節省時間和減少代碼長度,這是常用的做法。 --- ## 課後練習 1. 修改這個程序,讓它輸出你的老師的名字而不是「Hello, World!」。 2. 輸出你的輸入 自己查 ---