之前我们介绍了一些Micro:bit的基本情况,并且也实现了一个简单的心跳小程序,这节课我们来看看Micro:bit在线编程网站提供了哪些模块,这些模块都是干什么的,然后通过一个小程序展示它们之间的运行顺序是怎样的。我们先打开micro:bit在线编程网站看看吧
我们可以看到在页面中间的模块区有很多五颜六色的分类,每个分类下都有各式各样的模块,它们代表了不同的功能,不要被这些花花绿绿的颜色迷惑,虽然功能不同,但是它们是有共同点的。
模块的类型
Micro:bit网站为我们预置了丰富多彩的模块,但是细心的你可能已经注意到了,它们的形状是不同的,大体分为以下三种形状:
- 下图中第一排像一个钩子一样的模块,它代表了一个事件(如果忘了事件是什么,回顾一下这篇教程)或者一个流程,例如当按钮A按下时应该执行的操作,或者无限循环执行的操作
- 下图中第二排有一个豁口和一个尖尖的模块,它代表了一个操作,例如播放一段音乐,或者显示LED数字
- 下图中第三排左边有一个突起的模块,它代表了一个求值语句,例如求出当前变量item的值,或者求出0+0的值
记住了这3个形状,我们就可以通过模块的形状很容易的区分出它是哪种类型的模块啦,但需要注意的是:
1.事件或流程模块是彼此独立的,它们之间不能够相互组合,它们内部能够放置一个或多个操作语句
2.操作语句是可以相互组合的,例如可以先显示数字0,然后再显示数字1,它们内部也可以包含求值语句,注意看接口的形状,如果接口的形状与求值语句的形状吻合,就代表了它需要求值语句啦,另外要特别记住的是,操作语句只有放入上面的事件或流程模块中,才能够真正执行,执行顺序是从上到下的,而未放入事件或流程模块的操作语句会显示为浅色,比如下面图里的操作语句就不会执行。
3.求值语句也可以在其内部组合一个或多个求值语句,但是和操作语句一样,需要放入事件或流程模块中才能够真正执行,下面这个复杂的求值语句也不会执行呦
4.模块的颜色代表了它属于哪个分类,比如蓝色是基本,绿色是逻辑,红色是变量
说完了模块的类型,我们来看看各个事件与流程的执行顺序。
事件与流程的执行顺序
Micro:bit预置了两个特殊的流程模块,在基本分类下,分别是当开机时和无限循环,当开机时是一个事件,意味着在程序启动后需要执行的操作,但是需要注意的是,当开机时的操作仅执行一遍,随后如果有无限循环模块,则一直执行无限循环里的操作。那有同学可能会问,那我如果有两个无限循环模块,会怎么样执行呢?嗯,这是一个好问题,我们来看下面的例子:
- 当开机时显示小心心
- 无限循环1顺序显示0 2 4
- 无限循环2顺序显示1 3 5
- 无限循环3顺序显示7 8 9
- 当按钮A按下时显示6
大家可以先猜一下执行顺序。
下面直接放出结果,我在显示数字2的之后按下了按钮A,可以看到在显示了一个小心心之后,程序的显示顺序是 0 1 7 2 3 8 4 6 5 9,
但是再执行一遍,还是在2之后按下按钮A,显示顺序却是 0 1 7 2 3 8 6 4 5 9
以上可以得出两个结论,
- 如果存在多个无限循环,3个循环会 同时执行,但是由于只有一个显示模块,所以三个循环会依次使用这个显示模块进行显示,这种现象叫资源竞争
- 因为在几乎是在同一时间按下按钮A,但是显示的结果不同,我们可以得出事件模块的执行顺序不是固定的,有可能在某条语句之前,也有可能在它之后,不能固定的认为它一定会在某条语句之前或之后执行
另外还有一个例子,我改变了 无限循环2 和 无限循环3 的位置,执行结果就变成了 0 7 1 2 8 3 4 9 5,
因此可以得出第3条结论,
3. 靠上的语句会先执行
[amazon_link asins=’B0746C94ZW,B077ND7YJ4,B077BVZKZ4′ template=’CopyOf-ProductGrid’ store=’boyd-23′ marketplace=’CN’ link_id=”]
总结
今天介绍了Micro:bit模块的3种类型分别是事件或流程模块,操作语句模块和变量或求值模块,并且通过两个例子得出了执行顺序的3条结论:
- 如果存在多个无限循环,3个循环会 同时执行,但是由于只有一个显示模块,所以三个循环会依次使用这个显示模块进行显示,这种现象叫资源竞争
- 事件模块的执行顺序不是固定的
- 靠上的语句会先执行
你都记住了吗?
始发于微信公众号: 暴王不暴燥