第六章 第一节 scratch3.0 关系操作符

本章我们学习比较数据、计算逻辑表达式以及使用这些结果在程序中做决定。随后使用它们做一些实用的案例。本章学习的内容如下:

解决问题的基本技巧
使用如果…那么如果…那么…否则 选择不同的行为
根据条件构造并求解逻辑表达式
使用分支语句控制程序流程

我们之前接触的程序执行模式很单一:首先执行第一块积木,然后执行下一块积木,直到脚本结束积木是依次执行的,在顺序上没有任何变化。
      但是在许多编程场景中,你可能需要改变程序执行的流程。例如,在测试算术题的程序中,当回答正确时,你需要一段特定的脚本给予奖励;当回答错误时,你需要另一段不同的脚本表示答案错误(可能是显示正确答案。者再给一次机会脚本的行为取决于用户的输入与正确答案的比较结果,这便是用逻辑做决定的含义。
     在本章中,我们将学习 Scratch中可以做决定的积木,然后使用它们测试用户的输入并执行不同的行为。
首先介绍Scratch的比较操作符,说明如何比较数字、字母和字符串。随后介绍如果…那么和如果…那么…否则积木,说明它们对做决定发挥的关键作用。接着介绍如何使用嵌套的如果…那么和如果…那么…否则积木测试多个条件,并使用这种结构制作以菜单驱动的程序。接下来讲解测试多个条件的另一种方法逻辑操作符。最后将综合以上内容制作几个有趣的案例。

       我们做每一件事其实都是一个决定,不同的决定通常会引导我们采取不同的行动。Scratch也允许做各种各样的决定。
使用关系操作符就能比较两个变量或者表达式的大小关系,即大于、小于、等于。

此操作符也叫关系操作符,因为它用来测试两个值之间的关系。

布尔值是什么?

是其中一种数据类型,即布尔型,我们在第五章第一节中学过。它仅有两个值:真或假,即True或 False。通常用于条件判断,当条件成立时就是True,条件不成立时就是False。

上图中的积木块都是六边形的,我们在第五章中讲过六边形意味着积木块的求值结果是非直即假的布尔值,因此这种表达式也叫作布尔表达式。下面我们来看看Scratch中的布尔表达式是如何求值的。

布尔表达式的求值

新建三个变量X、Y、Z,并将X设为5,Y设为10

(1) X>Y吗?显然5>10不成立,表达式结果为False

image

(2) X<Y吗?显然5<10成立,表达式结果为True

image

(3) X=Y吗?显然5=10不成立,表达式结果为False

image

比较字符和字符串

假设我们正在设计一个猜字母的游戏,玩家需要不停地猜测,直到猜中A到Z中的某个字母。游戏首先会读取玩家猜测的字母,然后与正确的字母进行比较,最后根据字母表顺序告诉玩家继续猜测或者猜测正确。如果正确的字母是G,而玩家输入了B,游戏就告诉玩家“在B之后”,即正确的字母在字母B之后。如何将正确的字母与用户的输入进行比较,从而给出相应的提示信息呢? Scratch的关系操作符可以比较字母,如图6-1所示。 Scratch是根据字母表顺序进行字母大小的比较。由于字母A在字母B之前,因此表达式A<B返回true。但是一定要注意,字母间的比较与其大小写无关,即大写字母A与小写字母a是相同的。因此,表达式A=a将返回true。

image

明白了如何比较字母后,我们就能使用如下的条件语句测试玩家的猜测内容:

如果(猜测的字母=正确的字母),那么说正确
如果(猜测的字母>正确的字母),那么说在猜测的字母之前
如果(猜测的字母<正确的字母),那么说在猜测的字母之后

所谓条件语句,是指这种格式的语句:“如果条件为真,那么采取这种行为”。在下一节,我们再来学习如何使用 Scratch实现条件语句,现在我们先关注这个猜字母的游戏。

      如果正确的字母不是单个的,而是多个字母时会发生什么呢? 例如,玩家猜测的是某种动物的名称,我们还能使用关系操作符比较字符串吗?当然是可以的。但是 Scratch是如何比较如 elephant>mouse的表达式呢?下图说明了字符串的比较规则。

image

左:比较字符串大小时,会忽略大小写;因此,它认为字符串“HELLO”与“hello”是相同的。

中:空格也是字符串的一部分,因此空格也要参与比较;因Y的HELLO前面有个空格,所以是不一样的字符。

右:当比较“ABC”和“ABD”时, Scratch首先比较两个字符串的第一个字符。因为第一个字符都是相同的A, Scratch继续比较两个字符串的第二个字符。因为第二个字符又是相同的,因此,接着比较第三个字符。因为字母C小于字母D(因为在字母表中C在D之前), Scratch最终认为第一个字符串小于第二个字符串。

     现在你知道布尔表达式 elephant>mouse的结果了吗?虽然大象(elephant)比老鼠( mouse)的体积大很多,但是这个表达式求值的结果却是 false。这是因为根据 Scratch的字符串比较规则,字母e位于字母m之前。使用字母序比较或排列字符串在现实生活中是很常见的,如有序的目录列表、书架上的书籍、字典中的单词等。在字典中,单词elephant出现在单词 mouse之前,Scratch的字符串比较规则也给出了相同的答案。
    现在来总结一下:
(1)比较字符串大小时,会忽略大小写;
(2)空格也是字符串的一部分,因此空格也要参与比较;
(3)比较字符串时,是按照字母一个一个来比较的;

我们已经理解了Scratch如何使用关系操作符比较数字和字符串,下面就来学习条件语句吧!


posted @ 2020-10-09 23:21  有间学堂  阅读(1886)  评论(0编辑  收藏  举报