上一课介绍了算法作为一系列命令(或指令)的概念。 其中的每个命令都解释了如何执行算法的一小步。
然而在更多的情况下,算法需要能够在不同的情况下做出不同的选择,而 这就是条件判断的用途。
伪代码是计算机科学家表达和思考算法的专门符号。
这些都是可能属于不同算法的命令示例。例如:
1.打开发动机
2.将酱油放入碗中
3.打开车门
4.求 17 的平方根,并将结果存储为 x
算法可以仅仅是简单命令的列表,但最有趣的算法还得是条件判断。
用文字编写的算法是“如果你想给某人打电话,你得先找到手机里的电话软件,然后拨打某人的电话号码”,用伪代码捕获如下:
if你想给某人打电话:
找到手机里的电话软件
拨打某人的电话号码
以 if 开头的行描述了条件指令的测试。 如果条件测试成功,则意味着算法将运行条件指令内的序列。
在此示例中,测试是你想给某人打电话。 如果你想给某人打电话,那么测试将成功并导致命令找到手机里的电话软件,然后拨打某人的电话号码。 如果你没想给某人打电话,则测试失败; 不会有找到手机里的电话软件和拨打某人的电话号码。
问题一:对以下选项进行排序,以构建一个与以下文字描述相对应的算法:
“把电视关掉。 然后,如果灯亮着,就把灯关掉。”
A.如果灯开着:
B.关灯
C.关电视
问题二:当以下算法执行后,电视还会开着吗?(这里,算法中缩进两格的内容表示有且只有条件测试成功,则代码才会运行这些内容)
关掉电视
如果灯亮:
把灯关掉
打开电视
A.会
B.不会
C.条件不足,无法判断
上一个问说明了:如果灯亮,则条件测试成功; 然后你会立即关掉灯。
关灯后,之前成功的开灯测试会失败! 但在这里并不重要:算法不会要求你再次执行测试。 相反,你会转到下一条说明并打开电视。
基于上述信息,我们得出结论:
如果条件指令测试成功,则由条件测试成功情况下的整段指令序列将运行。(敲黑板)
如果一个序列中有两条条件指令,一个接一个,那么它们都会依次运行。
问题三:
关掉电视
如果灯亮:
把灯关掉
如果灯亮:
打开电视
运行上述算法后,电视还会开着吗?
A.会
B.不会
C.条件不足,无法判断
问题三与问题而不同。 问题三里面的第一个条件指令确保灯关闭,因此第二个条件指令的测试肯定会失败。
无论一开始的情况如何,当进行第二个条件测试时,灯就会熄灭,测试就会失败。
问题四:该算法将进行几次条件测试?
如果外面天黑了:
带上手电筒
如果下雨:
带上雨伞
披上雨衣
如果外面风不太大:
带上风筝
出门
A.1
B.2
C.3
D.4
问题五:依然是上述算法,已知你进行此算法的行动并拿到了四个东西中的三个。请问 外面天黑了吗?
A.黑了
B.没黑
C.条件不足,无法判断
将条件语句包含在另一个条件语句中也是很常见的。
如果天气晴朗:
如果气候温暖:
你说“外面天气晴朗而且很暖和”
这两个条件指令内的任何指令都受到两个测试的有效保护。
以下语句块中,如果天气晴朗,你想说天气晴朗且温暖,否则说天气温暖,但不是晴天,这种情况一直在发生。 为了更自然地适应这种情况,算法经常使用 if-else 条件。
如果天气暖和的话:
如果天气晴朗:
宣布“天气晴朗,温暖”
若不是:
宣布“天气暖和了,但不温暖”
条件指令几乎存在于每种编程语言中,并且几乎每种语言都使用 else(即文中的“若不是”) 一词。 (包括 Python、C++、JavaScript、Haskell、Java 和 Rust。)
问题六:有些苹果是红色的,有些则不是红色的,比如青苹果。 有些水果,比如樱桃,也是红色的!
以下代码会准确判断出哪些水果是红色的苹果吗?
如果它是红色的:
宣布“一些红色的东西”
若不是,如果它是一个苹果:
宣布“某种苹果”
若不是,如果它是一个红苹果:
宣布“红苹果!!!”
若不是:
宣布“只是一个水果”
A.对
B.不对
总结:条件指令对于创建算法至关重要。 它们可以让你处理需要执行以下操作的算法:
1.描述测试条件,
2.列出测试成功后应运行的一些指令,以及列出测试失败时要运行的其他指令。
答案:
问题一:CAB
问题二:C
问题三:B
问题四:C(共有三个测试,检查外面是否黑暗、是否下雨以及风是否不太大。)
问题五:C
问题六:B