最新消息:

micro:bit项目:请输入你的手机号码?

Micro Bit 少儿编程 2253浏览 0评论

很多老师、同学可能会问:为什么要学习数字的增减、循环呢?学这个到底有什么实际的用处?

今天就来揭晓这个问题的答案!数学自有数学的用处,一切都是为了今天这个有实际意义的项目活动——“请输入你的手机号码?”,这是一个有交互(输入、输出),类似机器提问、人来作答的micro:bit编程项目活动。

0~9可以看成是十进制基本数字的循环(不进位),在需要输入数字,比如输入手机号码时,需要用的数字,就是0~9。在需要输入文本时,会是更加奇怪、庞大的数字循环,比如0~25(或者1~26)。如果你需要开发一种输入法,需要输入英语字母(仅大写字母或仅小写字母),就是26个数字的循环(每个数字与字母一一对应)。如果考虑大小写字母要区分,就是52个数字的循环。如果除了字母还考虑数字,那就是62个,以此类推。这些就是数字增减、循环的实际意义和用途。

在micro:bit 5×5的点阵屏幕上,要显示比较大的数字循环或者比较多的字母,会显得不怎么舒服。所以,我认为这个项目活动——输入11位的手机号码,基本上也已经到极限了。我接下来考虑设计输入字母的教学内容,会引入processing,来和micro:bit结合,这样在电脑屏幕上,就能显示更多的信息了。也可以选择Scratch进行程序开发,而选择processing,是因为相比Scratch,我更喜欢Processing!

以下,就让我们开始学习项目活动《请输入你的手机号码?》吧——

项目活动任务(需要micro:bit实现的功能):使micro:bit通过按钮A、B,实现选择、输入11位手机号码的数字,完成输入后自动显示此手机号码一遍。

micro:bit程序运行演示视频:

(进阶)micro:bit项目活动:请输入你的手机号码? https://www.zhihu.com/video/895211462769938432

视频中,输入的手机号码为13712345678,然后我们也看到显示完毕后,micro:bit马上重置、复位,重新提示输入新的手机号码。

接下来就让我们开始编程吧!

MakeCode篇:

方法1:

(进阶)micro:bit项目活动:请输入你的手机号码?

程序扼要说明:

01 声明变量i,并赋值为0(初始化)。变量i用以计量已通过按钮输入的手机号码的“位数”(个数)。

(进阶)micro:bit项目活动:请输入你的手机号码?

02 声明数组n[ ],手机号码是由11个数字组成的,这11个数字将按顺序储存在数组n[ ]内。

数组“进阶”选项卡内:

(进阶)micro:bit项目活动:请输入你的手机号码?

将变量n指定为数组类型,并将所有数组元素初始化为0:

(进阶)micro:bit项目活动:请输入你的手机号码?

03 事件on button A pressed,实现数字0~9的递增、循环

(进阶)micro:bit项目活动:请输入你的手机号码?

04 事件on button B pressed触发后,以变量i为索引值(index),把被按钮B选中的变量“显示数字”内的当前数字,储存在数组元素n[ i ]内。

(进阶)micro:bit项目活动:请输入你的手机号码?

05 变量i自增1,功能为:将数组的索引值移到下一位。

(进阶)micro:bit项目活动:请输入你的手机号码?

11个数字的数组内索引值为0~10,储存到数组内,对应的数组元素为n[0]~n[10]。

06 通过条件结构,判断变量i当前值的大小,即能判断出11位数字有没有全部输入。

条件为i>=11,或者也可以把条件改为i>10,在整数情况下,这两个条件是等价的。

(进阶)micro:bit项目活动:请输入你的手机号码?

07 当条件满足后,先清空屏幕上的数字(清屏),然后再显示滚动字幕“CALL:”

(进阶)micro:bit项目活动:请输入你的手机号码?

08 使用指定循环次数的循环(即for循环),将数组n[ ]中的元素依次在点阵上显示。

即:在屏幕上依次显示刚刚输入的11位手机号码,用“CALL:XXXXXXXXXXX”的形式,模拟打电话拨号的情景。

(进阶)micro:bit项目活动:请输入你的手机号码?

09 在for循环结束后,用reset()方法,重置、复位micro:bit开发板,实现新的一次“请输入你的手机号码?”。

(进阶)micro:bit项目活动:请输入你的手机号码?
(进阶)micro:bit项目活动:请输入你的手机号码?

MakeCode实现方法1,编程完毕。

 

方法2:

即把按钮“事件”改变成forever无限循环,这个我们之前在学习续篇之后,已有经验。

(进阶)micro:bit项目活动:请输入你的手机号码?

这个程序里面只有一点可能会让你比较困惑:

(进阶)micro:bit项目活动:请输入你的手机号码?

解释:

if条件结构里,增加了一个while循环。这个while循环的作用是,等待按钮B被释放Released),从而完成一次完整的按键+松开的Bumper动作。

这样做的效果是:不在一次按键中连续触发递增的效果。按一次按钮并释放后,才会递增(更新)一次数字,不会造成误按。

 

Python篇:

Python实现相同功能的方法,又跟方法1和方法2有些区别。每个数组的元素,都是被append()方法,逐个添加到数组的末端的。并且每次输入一个数字放入数组,在后面会再添加一个空文本n.append(” “) 。因此,在调用display.show()方法时,显示的是数组内22个元素。显示时,每个数字都会产生“先亮后灭”的效果,每次灯“灭”的原因都是因为显示了数组内的空文本“”产生的。

方法3:

from microbit import *
i=0
n=[]
display.scroll("TEL?")
display.show(str(i))
while True:
    if button_a.was_pressed():
        i+=1
        if i>9:
            i=0
        display.show(str(i))
    if button_b.was_pressed():
        n.append(str(i))
        n.append(" ")   
        if len(n)==22:
            display.scroll('CALL:')
            display.show(n[0:22])
            reset()

研究作业:如何用体感替换按钮,完成《请输入你的手机号码》?

您必须 登录 才能发表评论!