歡迎來到輸入與輸出的精彩世界!
你有沒有想過,電子遊戲是怎樣知道你按下了按鈕?或者自動門是怎樣知道要為你打開呢?在這一章,我們將會一起探索電腦如何接收來自外界的資訊、如何處理這些資料,以及如何顯示或執行結果的奇妙過程!
如果一開始覺得電腦術語有點深奧,千萬不用擔心。透過生活中的有趣例子和好玩的編程專題,你很快就會成為電腦小專家!
核心概念:「輸入—處理—輸出」(IPO)循環
每一個電腦系統、機械人和程式,都遵循一個簡單的三步驟循環,稱為 IPO 循環(IPO Cycle):
• 1. 輸入(Input): 使用者或感應器傳入(into)電腦的資訊、數據或訊號。
• 2. 處理(Process): 電腦的大腦(演算法)運用這些資訊進行思考、計算或遵循指令規則。
• 3. 輸出(Output): 從電腦傳出(out)的結果,例如圖像、聲音、燈光或實體動作。
生活小比喻:烤多士(吐司)
我們可以把多士爐想像成一個電腦系統:
• 輸入: 你把麵包放進去,然後按下拉桿。
• 處理: 計時器開始倒數,發熱線逐漸變熱。
• 輸出: 香噴噴、暖烘烘又酥脆的多士彈了出來!
重點提示: 沒有輸入,電腦就沒有資料可以運作;沒有處理,電腦就無法做出決定;而沒有輸出,我們就永遠無法看到或聽到結果!
各式各樣的輸入形式
輸入是指觸發程式執行動作或為程式提供資訊的任何數據或訊號。輸入可以直接來自人類,也可以來自周圍的實體環境。
1. 使用者輸入(來自你的直接操作!)
這些是你在玩遊戲或使用程式時,向電腦發出指令的方式:
• 按鍵: 按下空白鍵、方向鍵,或在鍵盤上輸入字母來控制角色或輸入文字。
• 滑鼠與指標操作: 點擊按鈕、拖放物件,或在螢幕座標(即 \(x, y\) 位置)上移動滑鼠。
• 觸控螢幕手勢: 在平板電腦或手機螢幕上輕點、滑動或捏合縮放。
• 文字與數字提示: 當程式發問時輸入答案(例如 Scratch 中的「詢問 [你叫甚麼名字?] 並等待」積木,會把你輸入的內容存入「詢問的答案」積木中)。
• 音訊/語音: 透過咪高峰(麥克風)收集聲音(例如在遊戲中測量拍手聲有多大,或是錄製你的聲音)。
2. 感應器輸入(實體運算 Physical Computing)
電腦不只是放在書桌上;它們還可以內置在智能裝置中,例如 BBC micro:bit 或 Crumble 控制板。這些裝置會使用實體輸入:
• 按鈕與開關: 按下 micro:bit 上的 A 鍵 或 B 鍵,或者撥動電路上的開關。
• 光線感應器(光敏電阻 LDR): 測量房間的明暗程度(用於自動夜燈)。
• 溫度感應器: 檢測空氣的冷熱程度。
• 動作感應器(加速度計): 偵測裝置何時被搖晃、傾斜或移動。
• 濕度感應器: 檢測土壤是濕還是乾,用於自動植物澆水系統。
你知道嗎? 街燈到了晚上會自動亮起,可不是甚麼魔法——而是因為它內置了微型光線感應器(一種輸入),能夠偵測太陽何時落山!
重點提示: 輸入可以是使用者的操作(如點擊或打字),也可以是來自周圍世界的感應器讀數(如光線、傾斜度或溫度)。
各式各樣的輸出形式
輸出是指電腦完成處理指令後,所產生的動作、訊號、聲音或顯示內容。
1. 視覺輸出(我們看得見的事物)
• 螢幕圖像: 角色在螢幕上移動、更換造型、放大,或顯示對話泡泡(使用「說出」或「思考」積木)。
• 計分板與文字: 在螢幕上顯示玩家的最終得分或提示訊息。
• 單個 LED 燈: 小燈泡亮起、熄滅或閃爍。
• 彩色燈光(NeoPixels / Sparkles 全彩 LED): 實體電路上的彩色燈在紅、綠、藍色之間變換。
• LED 點陣顯示屏: 由排列成網格的燈光組成,例如 BBC micro:bit 上的 \(5 \times 5\) LED 螢幕,可以顯示笑臉、數字或滾動文字。
2. 聽覺輸出(我們聽得見的事物)
• 揚聲器(喇叭)與蜂鳴器: 播放音效(例如角色跳躍時的「啵」一聲)、播放音符、發出警告嗶嗶聲,或大聲朗讀文字。
3. 動態與實體輸出(會移動或震動的事物)
• 馬達(電機): 帶動機械人的輪子轉動,讓自走車向前行駛。
• 伺服馬達(舵機): 轉動指定的角度,例如升起停車場的自動閘桿。
• 震動/觸覺回饋: 當遊戲角色撞到牆壁時,微型馬達會讓遊戲手掣(手把)震動。
重點提示: 輸出讓電腦能夠透過視覺(螢幕和 LED)、聽覺(揚聲器和蜂鳴器)以及動作(馬達和伺服馬達)與世界溝通互動。
在演算法與程式碼中運用輸入與輸出
現在讓我們來看看,在編程專題中輸入和輸出是如何緊密連接在一起的!
1. 事件驅動的輸入(Event-Driven Inputs)
在 Scratch 等圖像化積木編程語言中,程式通常會等待某個事件(即輸入)來觸發一組指令:
• 當 [空白] 鍵被按下 \(\implies\) 播放音效 [Laser]
• 當此角色被點擊 \(\implies\) 造型換成 [下一個造型]
• 當晃動時(在 micro:bit 上) \(\implies\) 顯示隨機數字
2. 條件驅動的輸入:選擇結構(Selection)
我們可以使用選擇結構(即 如果... 那麼... 否則... 積木)來檢查輸入,並決定要產生甚麼輸出:
• 如果 <按下鍵 [向上鍵]?> 那麼 y 改變 \(10\)
• 如果 <溫度 \(> 25\)> 那麼 開啟馬達 [ON](啟動風扇降溫!)
3. 將輸入儲存在變數中
變數(Variable)就像電腦記憶體中有名字的儲物盒,用來存放數據。當使用者提供輸入時,我們通常會將它存放在變數中,以便稍後使用:
• 步驟 1: 電腦發問:「你叫甚麼名字?」(輸入提示)
• 步驟 2: 使用者輸入:"Maya"(輸入數據)
• 步驟 3: 程式將變數 PlayerName 設為 詢問的答案(儲存輸入)
• 步驟 4: 角色說出:「Hello Maya!」(輸出)
4. 預測與測試輸出:除錯(Debugging)
優秀的電腦科學家一定會測試自己的程式!你應該設定測試輸入,檢查輸出是否符合預期:
• 測試輸入: 按下向右鍵。
• 預期輸出: 角色向右移動 \(10\) 步。
• 實際輸出: 角色向上移動了 \(10\) 步。(糟糕!我們發現了程式錯誤,需要除錯修復!)。
重點提示: 輸入能夠觸發事件或檢查條件,而將它們儲存在變數中,可以幫助程式產生我們想要的精確輸出。
常見錯誤與需要避免的陷阱
小小程式設計師要注意避開以下常見的思維誤區喔!
• 誤區 1:把電腦螢幕混淆為輸入裝置。
事實: 普通電腦螢幕是輸出裝置,因為它是用來顯示圖像的。觸控螢幕則很特別,因為它同時具備輸入裝置(感應你的觸摸)和輸出裝置(顯示畫面)的雙重功能!
• 誤區 2:以為電腦會「完全自動」思考和行動。
事實: 自動化裝置(如自動感應門或花園自動灑水器)並沒有人類的大腦。它們只是在運行預先編寫好的演算法,等待特定的感應器輸入(如動態或濕度訊號),然後才觸發對應的輸出。
• 誤區 3:忘記了「處理」這個步驟。
事實: 如果沒有運算指令,輸入不會瞬間自動變成輸出。如果你請使用者輸入兩個數字,除非你的演算法中包含加法運算積木,否則電腦不會自動把它們相加!
• 誤區 4:把儲存裝置與輸入/輸出混淆。
事實: USB 記憶棒(隨身碟)和硬碟是用來儲存資料(保存檔案以備後用)的,而不是直接用來感應外界資訊(輸入)或呈現動作結果(輸出)。
快速複習:測測你的小宇宙!
來動動腦筋,完成以下快速配對挑戰,看看你掌握了多少:
將輸入與對應的感應器配對:
1. 搖晃遊戲手掣 \(\implies\) 加速度計/動作感應器
2. 檢測睡房光線是否昏暗 \(\implies\) 光線感應器(光敏電阻 LDR)
3. 輸入你的秘密密碼 \(\implies\) 鍵盤(按鍵)
將輸出與對應的裝置配對:
1. 在 micro:bit 上顯示笑臉 \(\implies\) \(5 \times 5\) LED 點陣螢幕
2. 讓玩具車在地毯上向前行駛 \(\implies\) 馬達
3. 獲勝時播放勝利音樂 \(\implies\) 揚聲器/蜂鳴器
記住這個黃金法則: 輸入傳進去,演算法進行處理,然後呈現出輸出!