1.1 第一支程式:Hello World
我們先從最簡單的程式開始:印出一行「Hello World」。它幾乎是每個人寫的第一支程式,麻雀雖小卻五臟俱全——透過它,你會認識每支 C++ 程式都長一樣的最小結構。
#include <iostream>
using namespace std;
int main() {
cout << "Hello World" << endl;
return 0;
}
執行結果:
Hello World
先別急著看懂每一行——先動手讓它跑起來! 親手看到「Hello World」蹦出來,後面再回頭讀解說會更有感覺:
- 打開線上編輯器(AA 競程的學生用 AACPOJ 內建編輯器,其他人用 OnlineGDB;第一次用、不熟操作的話,先看 附錄 H:OnlineGDB 圖解教學)
- 把上面的 Hello World 程式碼整段貼進去
- (用 OnlineGDB 的話)右上角的 Language 記得選 C++17(AA 競程預設都用這個版本)
- 按 Run(執行)
- 看看下方是不是印出
Hello World
跑出來了嗎?恭喜你執行了人生第一支 C++ 程式!接下來我們就一行一行來看,它各自在做什麼。
這短短幾行裡,只有 cout 那行是「真正做事」的,其他都是幾乎每支 C++ 程式都長一樣的標準框架:
¶#include <iostream>
- 它在做什麼:
#include <某某>就是「把一個叫某某的標頭檔(header file)拿進來用」——標頭檔是 C++ 預先準備好、裝著各種現成功能的檔案。這裡拿進來的iostream(input/output stream,輸入/輸出)裡面,就有等一下要用的cin(讀入)和cout(印出)。 - 什麼時候要寫:只要程式會用到
cin或cout,開頭就一定要有這一行。 - 小知識:C++ 把很多現成功能分門別類放在不同的標頭檔裡,要用哪一類就
#include哪一個。例如以後要用max、min找最大/最小值時,會用到#include <algorithm>。現在先記得「要用cin/cout就寫#include <iostream>」即可。
¶using namespace std;
- 它在做什麼:
cout、cin、endl這些名字,完整寫法前面其實都要加std::(也就是std::cout、std::cin、std::endl)。開頭寫了using namespace std;,之後就可以省略std::,直接寫cout、cin、endl。 - 現在怎麼辦:照著抄就好,細節之後再了解。
不寫的話有多麻煩? 上面範例的第 5 行,本來可以簡單寫成:
cout << "Hello World" << endl;
但少了 using namespace std;,就得把每個名字前面都補上 std:::
std::cout << "Hello World" << std::endl;
一支程式裡常常有好多行 cout、cin,每一個都要加 std:: 會很囉嗦。所以我們習慣在開頭寫一次 using namespace std;,後面就都省事了。
¶int main()
- 它在做什麼:
main是程式的起點——電腦執行你的程式時,就是從main裡的第一行開始做。 - 它是一個「函式」:
main其實是一個函式(function)。現在你只要先認得一個外型——一個名稱後面接著一對小括號(),就代表一個函式(像這裡的main(),之後會用到的max()、swap()也是)。函式究竟是什麼、怎麼自己寫一個,留到第七單元再詳細介紹;這裡先知道「main()是程式開始執行的那個函式」就夠了。 - 規則:
- 每個 C++ 程式都必須有一個
main - 你想讓電腦做的事,都寫在它的大括號
{ }之間 - 做完後用
return 0;收尾(下面說明)
- 每個 C++ 程式都必須有一個
¶cout << "Hello World" << endl;
- 把文字印到螢幕上,
endl表示換行。這是整支程式裡唯一「真正做事」的一行。
¶return 0;
- 它在做什麼:放在
main的最後,告訴電腦「程式正常結束了」。0代表「一切正常」,其他非 0 的數字(像return 1;)都代表「出了問題」。 - 可以省略:在
main裡,就算不寫return 0;,電腦也會自動幫你補上、當作正常結束。所以這一行寫或不寫都可以,競程裡很多人會直接省略它。
換你了——動手 AC 練習! 你已經會用 cout 印東西了,下面〈相關練習〉的題目,都只要印出一段指定的文字就能通過:訣竅是把上面 Hello World 的 "Hello World",換成題目要你輸出的內容,其他框架(#include、main…)完全不用動。去體驗一下「寫完 → 提交(Submit)→ 看到 AC(通過)」的感覺吧!(還不知道怎麼把程式碼交到評測系統?下一節〈1.2 第一次提交線上評測系統〉就會手把手教你提交。)