编程在现实生活中的应用
同学们好!大家有没有想过,一个简单的程序如何在现实世界中发挥作用,像开灯、对动作作出反应,甚至识别你的声音?这正是我们在本章将要探讨的内容。我们将超越屏幕的限制,学习如何让代码与实体设备互动。这会让编程变得非常有趣和实用!如果这听起来有点复杂,请不用担心。我们会用简单的例子和比喻,为大家逐一讲解。让我们开始吧!让代码与现实世界互动
要让我们的程序与实体对象互动,我们其实无需从零开始。编程人员都很聪明,也“有点懒”(这是好的方面喔!),所以他们会创建一些工具包来让事情变得更简单。这些工具包称为“模块”(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. 针对“摇晃事件”的“事件处理器”会运行。它的任务是从清单中随机选择一个答案并显示在屏幕上。