3.3 道奇森的三段论——《爱丽丝漫游仙境》中的逻辑问题

强大的逻辑思维能力可以帮助我们快速分析和解决问题,理解事物之间的逻辑关系,对我们的成长有很大的帮助。

作为逻辑思维的第一次训练,我们今天就来动手编写一个逻辑问答的小程序,给小伙伴们展示一下我们的三段论谜题吧。

1 在本次程序中,小恐龙爱莎向小恐龙米莉提出了一个三段论式的问题,那么米莉能够给出正确的答案吗?

开始编写程序前,我们先来想一想,完成逻辑问答小程序需要使用多少个角色?

·开始按钮

·小恐龙爱莎

·小恐龙米莉

·酷客国王

·绿色钩

·红色叉

·正确提示(答对啦)

·错误提示(再接再厉)

哇!这个小程序中竟然包含了这么多角色,大家有没有感到惊讶呢?

2 厘清了程序中所涉及的角色,就可以为每个角色赋予特定的逻辑功能了。

·【开始按钮】:问答程序的“起点”,点击“开始”按钮可以启动问答流程。

·【酷客国王】:问答环节的主持人。

·【小恐龙爱莎】:提出问题。

·【小恐龙米莉】:做出回答。

·【绿色钩/红色叉/正确提示/错误提示】:显示结果和提示信息。

3 现在开始动手创建程序。

打开Scratch编程工具,选择新建一个作品。从素材库中上传背景图片和“开始”按钮角色。添加角色后记得调整角色的大小和位置哦。

4 为“开始”按钮角色添加逻辑代码。

当开始运行时,将“开始”按钮设置为“显示”状态,这样程序每次运行时都会在舞台中显示“开始”按钮,作为我们开始答题的起始标志。

小技巧

在程序开始时,将角色设定为一个明确的状态(如“显示”或“隐藏”状态),可以帮助我们更容易地判断程序运行结果是否正确。

5 继续为“开始”按钮角色添加逻辑代码。

“当角色被点击”命令可以为“开始”按钮设置一个点击事件,当按钮被鼠标点击时(如果使用的是智能手机或者平板电脑,则是手指点击),“开始”按钮会进入“隐藏”状态,并发出一个“开始”的广播消息。

广播消息

Scratch中的广播消息功能由“广播”命令和“当接收到()”命令组成。

与收发快递类似,使用“广播”命令发出消息的过程可以看作“寄出包裹”,使用“当接收到()”命令接收消息的过程可以看作“收到包裹”。

6 如何定义一个“广播消息”?

“广播”命令中,点击下拉框中的“新消息”,会弹出一个设置新消息名称的对话框,在这里输入消息的名称,如“开始”,然后点击“确定”按钮即可。

现在运行程序并点击“开始”按钮,就可以把“开始”消息发送出去了。

7 当小恐龙爱莎使用“当接收到()”命令接收到广播消息后,就可以开始提出她的问题了:

“所有花都是植物。”

“玫瑰是一种花。”

“那么结论是?”

8 “说()”与“思考()”。

在上面的程序中,小恐龙爱莎使用“说()(2)秒”和“思考()(2)秒”命令提出了自己的问题。

在“外观”模块中,有4个与“说”和“思考”相关的命令,它们“长”得十分相似,我们来看看它们的区别是什么。

如上图,左侧是“说”命令,右侧是“思考”命令,大家发现有什么不同吗?

“文字框的样式不同!左侧的文字框有个小尾巴,而右侧的文字框是由三个小圆圈组成的。”

非常好!那么“说(你好!)”“说(你好!)(2)秒”这两个命令又有什么区别呢?

“说(你好!)(2)秒”命令多了一个时间选项,在指定时间内角色说出的“你好”会一直显示,直到2秒后才消失。

同时,跟在“说(你好!)(2)秒”命令后的其他命令也会等待角色说完“你好”才会继续运行。

“思考”命令的运行效果与“说”是类似的。

大家可以动手试试下面的两个程序,看看运行结果有什么不同。

9 现在爱莎提出了她的问题,并发出一个“答题”的广播消息。根据三段论式谜题的逻辑,小恐龙米莉应当怎么回答呢?

“结论:玫瑰是一种植物!”接收到“答题”消息后,小恐龙米莉立刻大声说道。

10 “米莉说的对吗?”

酷客国王作为主持人,向大家提出了这个问题。

11 如何将自己的答案告诉酷客国王呢?

我们添加正确(√)和错误(×)按钮来提交答案。当接收到“主持人提问”消息时,显示按钮;当按钮被点击时,发出“答对啦”或“再接再厉”的广播消息。

12 展示答题结果。

当接收到“答对啦”或“再接再厉”消息后,在舞台中展示奖杯和闪光的背景,这样一个答题的小程序就完成了,大家可以运行程序,邀请小伙伴们来答题啦。

正确提示

错误提示

背景

13 在答题过程中,我们有没有发现什么问题呢?

当点击正确或错误按钮后,程序会弹出成功或失败的提示。但是如果我们连续点击这两个按钮,就会发现两个提示都显示出来了,这样就不容易判断对错了,有什么办法可以解决这个问题吗?

我们添加一个“重置提示”消息,每次显示提示前,都将所有提示的状态重新设置为“隐藏”。

这样,当我们再次发送“答对啦”或“再接再厉”消息时,就可以只展示匹配的答案了。