Semorphe

程式從哪開始

前三課那幾行「不是你寫的程式碼」,這一課把它拆開。 · ⏱ 約 15 分鐘

你會學到三件事

  1. main起跑線
  2. #includeusing namespace 在做什麼
  3. return 0; 為什麼在最後

開始之前

前三課你只看得到自己放的積木。切到程式碼那一邊的話,你應該早就發現 上面還有幾行你沒寫過的東西

#include <iostream>
using namespace std;
int main() {
    cout << "Hello!" << endl;
    return 0;
}

從這一課起,積木那一邊也會把它們畫出來——淡淡的、拖不動的那幾塊。

它們一直都在,只是前三課先幫你收起來了。 收起來不是「不存在」——程式碼那一邊從第一課起就是完整的。

一、main 是起跑線

main 這個字很特別:電腦只會從 main 開始跑

你之後會寫很多段程式,而電腦不會亂猜要先跑哪一段——它固定找 main。 所以每一支 C++ 程式都要有一個,而且只有一個

int main() 下面那對大括號 { } 圈起來的,就是「要做的事」。 你前三課放進去的東西,全部都在那兩行中間。

二、#include 是「先把工具借來」

#include <iostream>

cout 不是 C++ 內建就有的字——它住在一個叫 iostream工具箱裡。 #include 就是「把那個工具箱搬進來」。

⚠️ 沒有它,cout 那一行會直接報錯:電腦不認得這個字。

而你不必自己記得要借哪一箱:你用了 cout,這一行就自己長出來了。 淡的那一塊旁邊會寫著理由——「因為你用了 cout」。

三、using namespace std; 是「不用每次寫全名」

cout 的全名其實是 std::coutusing namespace std; 這一行說: 「接下來 std:: 都可以省掉」。

有了它你才寫得成 cout,而不是每次都 std::cout

四、return 0; 是「回報一切正常」

程式跑完要跟作業系統說一聲「我結束了,而且沒出事」。 那個「沒出事」的訊號就是 0

⚠️ 所以 return 0; 一定在最後——它之後的東西不會跑。 (第 1 課「如果卡住了」那一格說的「主控台是空的」,就是這個原因。)

五、試試看:它們動不了

切到積木那一邊。那四塊淡的積木——引入函式庫使用命名空間定義函式 main回傳 0——拖拖看

它們不會動。而你自己的「輸出」那一塊照樣拖得動, 也照樣塞得進 main回傳 0 中間。

淡的 = 看得到、拆不壞。

⚠️ 如果你想自己動它們:狀態列上「骨架」那一格可以切成「完整」。 而這門課的其餘部分都假設你維持在「淡的」。

完成的樣子

#include <iostream>
using namespace std;
int main() {
    cout << "Hello!" << endl;
    return 0;
}

換你了

把「輸出」那一塊拖到 回傳 0下面,再按執行。

主控台會是空的——因為 return 之後的東西不會跑。 看完之後把它拖回去。

這一課你做了什麼

如果卡住了

你看到 多半是因為
積木那邊沒有淡的那幾塊 狀態列的「骨架」那一格切成「隱藏」了,切回「淡的」
淡的積木拖得動 那一格是「完整」,切回「淡的」
主控台是空的 你的那一行在 return 0; 下面——這一課就是要你看到這件事
在編輯器打開這一課 →