Mai 的课堂

主题 8 · 编程

用 IF 和 CASE 进行选择

用 IF、ELSE、嵌套 IF 和 CASE OF 做决定,配合比较运算符和布尔运算符。

第 2 课,共 7 课大纲 8.1更新于 2026年10月31日

IF ... THEN ... ELSE

选择让程序决定执行哪些语句。IF 语句检查一个条件:如果为 TRUE,就执行 THEN 块;如果为 FALSE,就改为执行可选的 ELSE 块。

伪代码
DECLARE Mark : INTEGER
INPUT Mark
IF Mark >= 50
  THEN
    OUTPUT "Pass"
  ELSE
    OUTPUT "Try again"
ENDIF
走哪条路?
MarkMark >= 50OUTPUT
72TRUEPass
50TRUEPass
49FALSETry again
0FALSETry again
步骤 1 / 4
50 是边界值:>= 包含它,> 则不包含。

比较运算符

条件由比较构成,比较的结果总是 TRUE 或 FALSE:

运算符含义结果为 TRUE 的例子
=等于5 = 5
<>不等于5 <> 3
<小于3 < 5
<=小于或等于5 <= 5
>大于7 > 2
>=大于或等于7 >= 7

AND、OR、NOT

布尔运算符把条件组合起来。AND 只有两边都为 TRUE 时才为 TRUE。OR 只要至少一边为 TRUE 就为 TRUE。NOT 把 TRUE 和 FALSE 互换。

伪代码
DECLARE Age : INTEGER
DECLARE Ticket : STRING
INPUT Age
INPUT Ticket
IF Age >= 12 AND Ticket = "Y"
  THEN
    OUTPUT "Enjoy the film"
  ELSE
    OUTPUT "Sorry, you cannot go in"
ENDIF

嵌套 IF

一个 IF 可以放在另一个 IF 的 THEN 或 ELSE 块里。只有程序走到包含它的那个分支时,才会检查内层条件:在这里,只有 Mark >= 70 为 FALSE 时才会检查。每一层都要缩进,这样才能看清哪个 ENDIF 结束哪个 IF。

伪代码
DECLARE Mark : INTEGER
INPUT Mark
IF Mark >= 70
  THEN
    OUTPUT "Grade A"
  ELSE
    IF Mark >= 50
      THEN
        OUTPUT "Grade B"
      ELSE
        OUTPUT "Grade C"
    ENDIF
ENDIF

CASE OF

当一个变量要和几个固定值逐一比较时,CASE OF 比一堆嵌套 IF 更短、更清楚。OTHERWISE 处理所有没有列出的值。

伪代码
DECLARE Choice : INTEGER
OUTPUT "1 Play  2 Settings  3 Quit"
INPUT Choice
CASE OF Choice
    1 : OUTPUT "Starting game"
    2 : OUTPUT "Opening settings"
    3 : OUTPUT "Goodbye"
    OTHERWISE : OUTPUT "Invalid choice"
ENDCASE

关键术语

选择
根据条件决定执行哪些语句。
条件
结果为 TRUE 或 FALSE 的表达式。
嵌套语句
放在另一个选择或循环内部的选择或循环。
CASE
把一个值与一组选项逐一比较的选择结构。

自我检测

在嵌套 IF 的例子中,Mark 为 50 时输出什么?查看答案

Grade B。第一个判断(>= 70)为 FALSE,第二个(>= 50)为 TRUE。

NOT (5 > 3) OR 2 = 2 是 TRUE 还是 FALSE?查看答案

NOT TRUE 为 FALSE,2 = 2 为 TRUE,FALSE OR TRUE 为 TRUE。

什么时候用 CASE 比用 IF 更好?查看答案

当一个变量要和几个特定值比较时,例如菜单选项。

练习这项技能

用一道题练习刚学到的知识,再到工作室编辑器中运行你的答案。