Semorphe

程式從哪開始

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

你會學到三件事

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

開始之前

🎯 從這一課起,版面預設是「對照」——程式碼與積木並排。 前三課積木那一邊夠用了;而從這裡開始,兩邊一起看才看得懂在拆什麼。 你隨時可以改回去(狀態列右邊那一格),改了不會被搶回來。

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

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

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

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

🟢 先把編輯器打開,跟著下面一起做:跟著做

一、main 是起跑線

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

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

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

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

那一行長這樣:

1#include <iostream>
引入函式庫iostream(輸入輸出)1

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

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

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

畫布上那一塊寫著「引入函式庫 …」,下一行那一塊寫著「使用命名空間 std」。

⚠️ 而積木盤裡找不到這兩塊——那是刻意的:它們是工具替你放的, 你不必(也不用)自己拖一顆出來。你寫 cout,它就出現;你不寫,它就不見。

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

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

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

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

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

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

五、試試看:它們動不了

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

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

淡的 = 看得到、拆不壞。

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

完成的樣子

這一課的參考做法——程式碼每一行的號碼,就印在對應的那塊積木上。

1#include <iostream>2using namespace std;3int main() {4    cout << "Hello!" << endl;5    return 0;6}
"Hello!"換行0回傳印出定義函式 回傳型別int(整數)main使用命名空間std引入函式庫iostream(輸入輸出)12345

換你了

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

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

到編輯器做這一題:練習:把印出搬到 return 下面,看它不跑

做一個

印出泡麵的四個步驟,一步一行,照這個順序:

燒水
放麵
等三分鐘
開動

做完按執行,裁判會說對。

🔴 然後把中間那兩行對調(「放麵」和「等三分鐘」換位置),再按一次執行。

兩件事會同時發生:

輸出跟著換了       ← 電腦照著你寫的順序做,它不會幫你排
裁判說不對         ← 而那正是這一題要你看到的

先等三分鐘、再放麵——這份步驟變得很奇怪,而電腦一點意見都沒有。 它不知道什麼叫「對的順序」,它只知道「你寫的順序」。

⚠️ 如果對調之後輸出沒有變,那你搬到的不是你以為的那兩塊——再看一次。

到編輯器做這一題:做一個:四個步驟,換一行就不對了

這一課你做了什麼

如果卡住了

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