---
# System prepended metadata

title: 第一堂課
tags: [C++講義]

---


# 第一堂課
總之先把上課會用到的網站註冊一下 然後在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. 輸出你的輸入 自己查
---