編程在現實生活中的應用
各位同學好!大家有沒有想過,一個簡單的程式如何能在現實世界中發揮作用,像開燈、對動作作出反應,甚至識別你的聲音?這正是我們在本章將要探討的內容。我們將會超越螢幕的限制,學習如何讓程式碼與實體裝置互動。這會讓編程變得非常有趣和實用! 如果這聽起來有點複雜,請不用擔心。我們會用簡單的例子和比喻,為大家逐一講解。讓我們開始吧!讓程式碼與現實世界互動
要讓我們的程式與實體物件互動,我們其實毋須從零開始。編程人員都很聰明,也「有點懶」(這是好的方面喔!),所以他們會創建一些工具包來讓事情變得更簡單。這些工具包稱為「模組」(modules)或「函式庫」(libraries)。甚麼是模組和函式庫?
想像一下,你正在用樂高積木(Lego)建造一個機械人。你毋須親手從微小的塑膠碎片中製作每個輪子和齒輪,只需直接取用預製的「車輪套件」或「摩打套件」即可。 「模組」和「函式庫」對於編程來說,原理正是如此。它們是預先編寫好的程式碼集合,用來處理複雜的任務。我們只需簡單地將它們「匯入」(import)到我們的程式中,就能使用它們提供的所有特殊工具(即「函數」functions)。- 比喻:函式庫就像一個工具箱。你毋須知道如何製造一把錘子;你只需要知道如何使用它來敲釘子。
從感應器捕捉數據
「感應器」(sensor)是一種能從實體環境中偵測和測量某些事物的裝置。我們的程式可以利用函式庫來讀取這些感應器的數據。例子一:光感應器
這感應器量度光的強度(亮度)。- 現實應用:你的智能手機會利用光感應器自動調節螢幕亮度。外面越光,螢幕就越亮;房間越暗,螢幕就越暗。
- 編程應用:我們可以從函式庫中使用一個函數,例如get_light_level(),它會回傳一個數值。數值低表示暗,數值高表示亮。
例子二:加速度感應器
這感應器量度加速度,包括移動、傾斜和晃動。- 現實應用:這正是你的手機螢幕在你橫向轉動時能自動旋轉的奧秘!健身追蹤器也用它來計算你的步數。
- 編程應用:加速度感應器的函式庫可能會提供像get_tilt_angle()這樣的函數,或者讓我們檢查裝置是否was_shaken(被晃動過)。
控制實體裝置
編程不單是接收資訊;它也關於發出指令,讓事情發生!例子:摩打
摩打是一種產生運動或震動的裝置。- 現實應用:你的遊戲控制器或手機裡的震動摩打,或是小型機械人上的輪子。
- 編程應用:我們使用函式庫來控制它。我們可以呼叫像motor.start(speed)這樣的函數來讓它運行,或者呼叫motor.stop()來讓它停止。
重點回顧
當我們處理硬件時,「模組」和「函式庫」就是我們最好的幫手。它們隱藏了所有複雜的電子細節,為我們提供簡單的指令,以便讀取感應器數據和控制像摩打這樣的裝置。等待事情發生:事件驅動編程
想想一個簡單的電腦遊戲。遊戲不會自己從頭到尾運行。它會等待你做些什麼,例如按下按鍵或點擊滑鼠。這種編程風格稱為「事件驅動」(event-driven)。甚麼是事件和事件處理器?
事件驅動的程式旨在回應「事件」。- 「事件」(Event)是程式可以偵測到的動作或發生情況。例如:按鈕被按下,或房間突然變暗。
- 「事件處理器」(Event Handler)是一段特定的程式碼,當其對應的事件發生時會自動運行。它會「處理」該事件。
事件處理器 = 行動(例如:學生到下一堂課室)
事件的類型
在實體編程中,事件通常來自兩個主要來源:一、用戶操作
這些是由人直接引起的事件。- 事件:按下裝置上的按鈕。
- 事件處理器:運行的程式碼可以是任何東西!它可能會點亮LED燈、播放聲音或啟動計時器。
二、感應器數值
這些事件由感應器偵測到的環境變化觸發。- 事件:光感應器讀數降至某個數值以下(表示天色突然變暗)。
- 事件處理器:程式碼可以自動點亮燈。這就是自動夜燈的工作原理!
不要犯這個錯誤!
一個常見的錯誤觀念是,認為事件驅動的程式會從頭到尾直線運行,然後停止。它不是這樣的!設定完成後,它會進入一個「監聽」循環,不斷等待事件發生。它時刻準備好作出反應。重點回顧
「事件驅動編程」讓我們的程式變得具互動性和響應性。它們不是簡單地遵循固定腳本,而是等待來自用戶或環境的觸發器(事件),然後運行特定的程式碼(處理器)作為回應。綜合應用:簡單的現實生活程式
現在,讓我們看看如何將函式庫和事件驅動編程結合起來,(從概念上)構建一些很酷和實用的裝置吧!例子一:簡單的語音轉文字顯示器
- 目標:當你對着麥克風說出一個詞語時,該詞語會顯示在小螢幕上。
- 工具:一個帶有麥克風、螢幕和「語音識別」模組的裝置。
- 工作原理:
1. 程式會使用語音識別函式庫,透過麥克風進行聆聽。
2. 「事件」是函式庫成功識別到所說的詞語。
3. 「事件處理器」會取得該詞語的文字,並將其發送到螢幕上顯示。
例子二:動作控制機械人
- 目標:透過傾斜連接到機械人的裝置,控制一個簡單的兩輪機械人移動。
- 工具:一個帶有「加速度感應器」的裝置,以及連接到兩個摩打的接口。
- 工作原理:
1. 程式會持續循環,從加速度感應器函式庫中讀取傾斜數據。
2. 如果你將裝置向前傾斜,程式會讀取加速度感應器數值的變化。我們可以將這種變化視為一個「事件」。
3. 「事件處理器」會利用傾斜數據計算速度,並指示摩打函式庫驅動兩個摩打向前移動。向左傾斜可能使左摩打減速而右摩打加速,從而實現轉彎。
你知道嗎?
這與許多現代玩具的核心原理相同,例如遙控車或無人機,你只需傾斜智能手機即可操控它們!例子三:「神奇8號球」搖搖樂
- 目標:當你搖晃裝置時,它會在螢幕上顯示一個隨機答案(例如「是」、「否」、「可能」)。
- 工具:一個帶有「加速度感應器」和螢幕的裝置。
- 工作原理:
1. 程式會等待。直到事件發生,它才會執行任何動作。
2. 加速度感應器函式庫可以偵測到「搖晃」手勢。這就是我們的「事件」。
3. 針對「搖晃事件」的「事件處理器」會運行。它的任務是從清單中隨機選擇一個答案並顯示在螢幕上。