程式從哪開始
前三課那幾行「不是你寫的程式碼」,這一課把它拆開。 · ⏱ 約 15 分鐘
你會學到三件事
main 是起跑線
#include 與 using namespace 在做什麼
return 0; 為什麼在最後
開始之前
🎯 從這一課起,版面預設是「對照」——程式碼與積木並排。
前三課積木那一邊夠用了;而從這裡開始,兩邊一起看才看得懂在拆什麼。
你隨時可以改回去(狀態列右邊那一格),改了不會被搶回來。
前三課你只看得到自己放的積木。切到程式碼那一邊的話,你應該早就發現
上面還有幾行你沒寫過的東西:
#include <iostream>
using namespace std;
int main() {
cout << "Hello!" << endl;
return 0;
}
從這一課起,積木那一邊也會把它們畫出來——淡淡的、拖不動的那幾塊。
它們一直都在,只是前三課先幫你收起來了。
收起來不是「不存在」——程式碼那一邊從第一課起就是完整的。
🟢 先把編輯器打開,跟著下面一起做:跟著做
一、main 是起跑線
main 這個字很特別:電腦只會從 main 開始跑。
你之後會寫很多段程式,而電腦不會亂猜要先跑哪一段——它固定找 main。
所以每一支 C++ 程式都要有一個,而且只有一個。
int main() 下面那對大括號 { } 圈起來的,就是「要做的事」。
你前三課放進去的東西,全部都在那兩行中間。
二、#include 是「先把工具借來」
那一行長這樣:
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}
換你了
把「印出」那一塊拖到 回傳 0 的下面,再按執行。
主控台會是空的——因為 return 之後的東西不會跑。
看完之後把它拖回去。
到編輯器做這一題:練習:把印出搬到 return 下面,看它不跑
做一個
印出泡麵的四個步驟,一步一行,照這個順序:
燒水
放麵
等三分鐘
開動
做完按執行,裁判會說對。
🔴 然後把中間那兩行對調(「放麵」和「等三分鐘」換位置),再按一次執行。
兩件事會同時發生:
輸出跟著換了 ← 電腦照著你寫的順序做,它不會幫你排
裁判說不對 ← 而那正是這一題要你看到的
先等三分鐘、再放麵——這份步驟變得很奇怪,而電腦一點意見都沒有。
它不知道什麼叫「對的順序」,它只知道「你寫的順序」。
⚠️ 如果對調之後輸出沒有變,那你搬到的不是你以為的那兩塊——再看一次。
到編輯器做這一題:做一個:四個步驟,換一行就不對了
這一課你做了什麼
- 你知道了電腦固定從
main 開始跑
- 你知道
#include 是把工具借進來,而它是自己長出來的
- 你知道
return 0; 是「回報一切正常」,而它一定在最後
- 你確認了淡的積木拖不動,而你自己的積木塞得進去
如果卡住了
| 你看到 |
多半是因為 |
| 積木那邊沒有淡的那幾塊 |
狀態列的「骨架」那一格切成「隱藏」了,切回「淡的」 |
| 淡的積木拖得動 |
那一格是「完整」,切回「淡的」 |
| 主控台是空的 |
你的那一行在 return 0; 下面——這一課就是要你看到這件事 |
在編輯器打開這一課 →