Semorphe

讀進來

讓程式問使用者要資料,而不是自己寫死。 · ⏱ 約 20 分鐘

這一課會用到的操作

看不清楚?每一段都會一直重播。

點齒輪,關掉「初始值」——點宣告積木左上角的齒輪,浮出的小視窗裡把「初始值」的勾點掉,積木上的等號消失,程式碼那一邊從 int n = 0; 變成 int n;

你會學到三件事

  1. 怎麼讓程式等使用者打字(cin)
  2. 為什麼 cin 的箭頭方向跟 cout 相反
  3. 一個變數可以先取名字、之後才裝東西

開始之前

第 2 課的程式是這樣:

int age = 16;

16 還是寫死的。你想換一個數字,還是得回去改程式。

這一課要讓使用者決定那個數字。

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

一、先留一個空位

到目前為止,取名字和裝東西都寫在同一行。其實可以分開:

1int n;
宣告int(整數)變數n1

這一行的意思是「我要一個叫 n 的位子,裝整數,但現在還沒東西」。

⚠️ 這時候 n 裡面裝的是垃圾——不是 0,是上一個用過這塊記憶體的人 留下來的東西。所以留了空位就要記得填,別急著印它。

🔴 積木那一邊:那顆齒輪

前兩課的宣告積木長這樣:「宣告 int 變數 age = 16」。 而這一課要的是沒有那個「= 16」——所以你得把它關掉:

🎬 這一段有影片——本頁最上面「這一課會用到的操作」那一格, 整個過程會一直重播。看不清楚的話就照著下面三步走:

  1. 在宣告那顆積木的左上角,找到一顆小小的齒輪,點它一下
  2. 積木旁邊會浮出一個小視窗,裡面有一顆寫著「參數」的積木, 而它上面那一行是 n 初始值 ✓
  3. 點那個 ✓,把勾取消掉

勾一取消,積木上的 = 和後面那個洞就消失,剩下「宣告 int 變數 n」 ——而程式碼那一邊當場從 int n = 0; 變成 int n;。

🟢 兩邊是同一件事:你在積木上關掉一格,程式碼就少一段。 再點一次齒輪、把勾點回去,它就回來了。

積木上看得到的每一格,都是「可以有、也可以沒有」的 ——而齒輪就是決定要不要有它的地方。

⚠️ 而旁邊那對 + - 是另一件事:它們加的是變數個數, 不是初始值。按一下 +,同一行就變成 int n, m;——兩個名字、一次宣告。

🟢 兩顆按鈕,兩個問題:

⚙️  這一格【要不要有】      初始值、else、步進…
+- 這一格【要幾個】        幾個變數、印幾樣東西、幾個引數

二、把使用者打的東西讀進來

在 int n; 後面加一行 cin >> n;,再把後面那一行印出來:

1int main() {2    int n;3    cin >> n;4    cout << "你打的是 " << n << endl;5    return 0;6}
變數n"你打的是 "變數n換行印出讀取輸入 →宣告int(整數)變數n234

cin >> n; ——console input,讀進來。

注意箭頭的方向:

cout << n     資料從 n 【流出去】給螢幕
cin  >> n     資料從鍵盤 【流進來】裝進 n

箭頭永遠指著資料要去的地方。 記這一件事就好,不用分別背兩個。

三、跑跑看

按「執行」,程式會停住,主控台出現一個等你打字的地方。

打 7,按 Enter:

你打的是 7

再跑一次,打別的數字——程式一個字都沒改,結果不一樣了。

這就是輸入的意義:程式描述的是「怎麼做」,資料是使用者給的。

⚠️ 另外注意 "你打的是 " 最後有一個空格。 沒有那個空格,印出來會是 你打的是7,擠在一起。 引號裡面的空格是算數的。

完成的樣子

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

1#include <iostream>2using namespace std;3int main() {4    int n;5    cin >> n;6    cout << "你打的是 " << n << endl;7    return 0;8}
變數n"你打的是 "變數n換行印出讀取輸入 →宣告int(整數)變數n456

把積木打散,自己排回去:排回去:把剛才那支程式的積木排好

換你了

讀進兩個數字,然後把它們都印出來:

第一個是 3
第二個是 8

提示:cin >> a >> b; 可以一次讀兩個(中間用空白或 Enter 分開), 你也可以老老實實寫兩行 cin。兩種都對。

到編輯器做這一題:練習:讀進兩個數字

做一個

讀進三個數字,倒著印出來(各一行)。

裁判餵 1 2 3 進去,印出來要長這樣:

3
2
1

🔴 這一題不用算任何東西——它考的是「三個變數各自記住一個值」。 ⚠️ 想一下:如果只用一個變數,做得到嗎?為什麼?

到編輯器做這一題:做一個:倒著印出三個數字

這一課你做了什麼

如果卡住了

你看到 多半是因為
程式沒停就跑完了 cin 那行漏了,或箭頭寫成 << 了
印出一個很怪的大數字 忘了 cin,印的是還沒填過的垃圾值
打了字沒反應 要按 Enter,程式才知道你打完了
文字和數字擠在一起 引號裡面少一個空格
在編輯器打開這一課 →