單元 14 · 從積木到文字程式

MakeCode JS/Python、積木背後的程式碼

14.1 積木的「真面目」是程式碼

Blockly 最了不起的設計:每一塊積木都能生成文字程式碼。MakeCode 可以直接切換「積木 / JavaScript / Python」三種檢視。

核心價值:學生看到同一支程式「積木長這樣、程式碼長這樣」,就自然完成了從圖形到文字的過渡——這正是「積木教到最後要轉文字」的關鍵橋樑。

14.2 積木 ↔ 程式碼對照表

積木JavaScriptPython(MicroPython)
on startfunction onStart() {}def on_start():
show string "Hi"basic.showString("Hi")display.scroll("Hi")
foreverbasic.forever(() => {})while True:
if 太暗if (light < 40) {}if light_level() < 40:
變數 scorelet score = 0score = 0
score += 1score += 1score += 1

14.3 轉換的「三步法」

  1. 先拼積木:用積木做出功能,確認行為正確。
  2. 切到 JavaScript/Python:看生成出來的程式碼。
  3. 對照修改:改程式碼,看積木同步變化。
為什麼有效:積木當「翻譯機」,學生在不知不覺中學會語法——比直接背語法痛苦少得多。

14.4 兩類積木對應兩種程式概念

要看懂「積木背後的程式碼」,先分辨積木的兩種類型——它們生成的程式碼型態完全不同:

積木類型長相對應程式概念生成結果
值積木(Value)左側有圓形凸出(output)表達式 Expression值,如 5 + 2score > 10
語句積木(Statement)上下有凹凸(previous/next)陳述句 Statement指令,如 score += 1;if (…) {…}
範例
「+ 積木」(值積木)
  └─> 生成:"a + b"(一個值,可被別處使用)

「如果積木」(語句積木)
  └─> 生成:"if (a > b) {
  ...
}"(一段執行的指令)
與 L6 的連結:在 Blockly 二次開發中,值積木的生成器回傳 [code, order]、語句積木回傳字串——這個差別決定了「括號自動化」是否正確(詳見 單元 21單元 22)。

14.5 Worked Example:計數器三段對照

範例
功能:按 A 加一,按 B 重設

積木:
  let score = 0
  on button A pressed → change score by 1, show number score
  on button B pressed → set score to 0

JavaScript:
  let score = 0;
  input.onButtonPressed(Button.A, () => {
      score += 1;
      basic.showNumber(score);
  });
  input.onButtonPressed(Button.B, () => {
      score = 0;
  });

觀察:積木 → JS 的對應一目了然。
「score += 1」是語句;「score > 10」是值。

14.6 練習

  1. 把「on shake → 顯示隨機 1~6」的積木切成 JavaScript。
  2. 在 Python 模式寫一支「無限迴圈顯示溫度」。
  3. 指出「score > 10」是值積木還是語句積木?為什麼?(答案:值積木,它回傳布林值)
  4. 說出積木程式對「轉文字程式」教學的三個好處。
看完這單元你應該能說出:
  • 把積木對照到 JavaScript/Python 程式碼。
  • 理解「積木背後的程式碼」的價值。
  • 完成積木 ↔ 文字程式的轉換練習。

延伸閱讀