主要内容
课程: AP®︎ 计算机科学原理 > 单元 2
课程 6: 布尔逻辑用if,else和布尔的条件语句
作为人类,我们每天都在作出决定,比如午餐的选择以及出门要不要穿雨衣。当我们做决定时,我们考虑的是外部世界的很多条件。比如做午饭时需要考虑冰箱里还有什么,穿不穿雨衣需要考虑外面天气如何。
计算机程序同样也做决定,它考虑的是条件语句(if/else)和布尔表达式的值(true/false)。正是由于有了条件语句,程序才能根据不同输入和不同参数做出不同反应。
一个简单的条件语句
比如现在我们要写一个程序,来帮我们决定每天出门穿什么。这个程序需要考虑很多条件,我们先从简单的开始:如果温度是零度或零下(小于等于华氏32度),程序应该提示我们要穿羽绒服。
用流程图来表示这个逻辑:
我们可以使用 JavaScript 语言中的 if 语句 来实现这个流程:
if (temperature < 32) {
println("穿上羽绒服!");
}
我们来分析这个语法。if 语句的一般结构是这样的:
if (<条件>) {
<执行操作>
}
条件与执行操作之间是不同的,这正是产生奇迹的地方。
条件是一个 布尔表达式:只能取值
true
或 false
的表达式。 在编程语言中,布尔类型是另一种数据类型,只能取值真或假(true 或 false)。 例如,我们可以将布尔表达式的结果储存在一个变量中:
var belowFreezing = temperature < 32;
根据变量
temperature
的值不同,变量 belowFreezing
将储存 true
或 false
作为其值。我们甚至可以用这个变量来代替上面的条件:
var belowFreezing = temperature < 32;
if (belowFreezing) {
println("穿上羽绒服!");
}
无论我们怎么写这个程序,条件部分的取值必须是
true
或者 false
,因为这部分要告诉计算机是否执行大括号内的操作。要执行的操作可以是你的程序能做到的 任何事,由你来决定。
比较运算符
我们上面的布尔表达式使用了比较运算符
<=
来判断一个数是否小于或等于另一个数。在编程语言中还有很多比较运算符,可以用来判断数值之间的不同关系。下表是 JavaScript 语言中的一些比较运算符:
运算符 | 意义 | 举例一些为真的表达式 | |
---|---|---|---|
> | 大于 | 60 > 32 | |
>= | 大于等于 | 60 >= 32 | 32 >= 32 |
< | 小于 | 20 < 32 | |
<= | 小于等于 | 20 <= 32 | 32 <= 32 |
=== | 严格等于 | 32 === 32 | |
== | 等于 | 32 == 32 | "32" == 32 |
!== | 严格不等于 | 30 !== 32 | "32" !== 32 |
!= | 不等于 | 30 != 32 |
JavaScript 语言的这部分有些难度,它即有等于运算符,又有“严格等于”运算符。
等于运算符首先会将两边的表达式强行转化为相同的类型(如将两边都转化为数值),然后 再进行比较。而若是严格等于运算符,一发现两边是不同类型,马上就判断为不相等。建议大家使用严格等于运算符,因为这样的代码有更强的可读性。
大多数编程语言中没有同时包含这两种不同的等于运算符,但是在其他语言中判断两个值是否相等时,你也许会遇到另外的差异。
✏️ 下面的程序基于变量
yourAge
不同的值,显示不同的信息。更改变量的赋值,看看显示的信息有什么不同。你也可以在程序中添加更多的 if
语句。else 语句
有了 if 语句,我们的程序只有当条件为真的情况下会执行一系列操作。如果我们想要程序在条件为假的情况下执行 另外不同的 一系列操作,那么我们可以使用 else 语句。
比如一个超级简单的密码检查程序。流程图类似下面这样:
我们可以用一个
if
语句加一个 else
语句来写这个程序:if (password === "TOPSECRET") {
println("You got it!");
} else {
println("Try again!");
}
我们的程序始终确保两条路径二选一:要么条件为真,走第一条路;要么条件为假,走第二条路。
伪代码中的条件语句
如下伪代码表示一个单一的
if
语句:IF (<condition>)
{
<instructions>
}
如下伪代码增加了一个
else
语句,以及第二套操作指令。IF (<condition>)
{
<instructions 1>
}
ELSE
{
<instructions 2>
}
下表是伪代码中的比较运算符:
运算符 | 意义 |
---|---|
a = b | 等于 |
a ≠ b | 不等于 |
a > b | 大于 |
a < b | 小于 |
a ≥ b | 大于等于 |
a ≤ b | 小于等于 |
下面是密码检查程序的伪代码:
IF (password = "TOPSECRET")
{
DISPLAY("You got it!")
}
ELSE {
DISPLAY("Try again!");
}