再谈用生活场景理解程序设计
科教信息
原创
科技学堂/文
阅读:7223
收藏:1

生活中总是面临多种选择,程序也一样。


上周,我们借助收快递这一生活场景,为大家介绍了if语句if/else语句的区别,帮助大家理清逻辑思路。


今天,我们依旧借助生活中的场景为大家讲解if/else if/else if的两种不同的应用场景:多种选择多选一的选择的区别。


我们以《Arduino轻松学:状态指示灯》的课堂作业为例,首先我们来看一下实现效果:

正确示例.gif

按下按键,灯亮;再按一下,切换至呼吸灯效果;再按一下,关灯。


如果逻辑用错了,就会出现如下情况:

错误示例.gif

灯的呼吸效果会卡住。

(其实灯的另外两种效果也会卡住,但那两种状态下,灯的亮灭状态本来就是不变的,很难发现正确程序与错误程序的差异)


产生上述效果差异的原因,是因为混淆了if/else if/else if的两种不同的应用场景:多种选择多选一的选择的区别。


多种选择

每当接近午餐时间,大家就会热烈讨论中午吃什么,打开外卖APP,找到了三种可以快速送达的美食 {生煎、寿司、盖浇饭}

同事周说:我不喜欢吃生煎。

同事陈说:寿司好贵啊,我们吃别的吧。

同事奥说:昨天刚吃过盖浇饭,我们换别的吧。

 

最后大家一合计,一起楼下吃了兰州拉面


虽然提出了多种选择,但并不意味着非要从中选一个

8e452c409e5d40045ae4d7eded8e3b19-sz_120446.png

《Arduino轻松学--状态指示灯》作业错误程序

a93fed117eac766a1fe98b9920ab0816-sz_25425.png

即便有多种选择,如果按键没按下,程序不会执行任何操作


原本亮着会继续亮着,原本暗着会继续暗着,呼吸效果也只会执行一次,执行完后灯的亮度就不再变化。

多选一的选择

多选一,则意味着不论选择多与少,你一定要选择其中的一个。


比如上班的通勤方式。你可以开车、可以坐地铁、可以乘公交、也可以骑单车或者走路,只要你上班,那必须要在上述交通工具中选择一个。


比如下面这组程序,给定3种选择,程序一定会执行其中的一个(下图红框内)

c2d7813212dd31b05b22aa400b84d10d-sz_76366.png

《Arduino轻松学--状态指示灯》作业答案一

c6175bfc8c587b60a64734f77bcb6413-sz_36975.png

状态变量被限制在0、1、2三个值之间变化,对应灯的“开--呼吸--关”三种状态loop()函数执行完一遍,程序会自动匹配变量数值之后再次执行对应操作。如果灯的状态是呼吸效果,那呼吸效果也会重复执行,直到你按下按键,进行切换。


上图红框中的程序也可以用下图红框中的程序来替代,也就是用else来包含所有counter≠0和counter≠1的情况:

919c04b5c8e6058a2e1c124a1f1617d7-sz_64614 (1).png

《Arduino轻松学--状态指示灯》作业答案二

3083bc8686dd878dfe66f8210a7e1a91-sz_31691.png

那么,这两种选择的应用场景是怎么样的呢?


多种选择:


适合变量状态与外界交互(按键状态、光线强度、温度等)的检测,符合条件就执行,不符合就跳过


多选一的选择:


用于程序中必须要选一个执行并列的程序指令之间的选择执行控制。

程序设计时要么使用else保底,要么限制变量、状态只能在特定数值及状态间变化。


这两种不同的选择方式,你明白了吗?

投稿邮箱:info@makerclass.cn
标签: Arduino轻松学tem
发表评论