控制流结构
计算机科学· 30 分钟阅读
1. 1. 顺序控制流★☆☆☆☆⏱ 5 min
顺序执行是所有过程式编程语言的默认行为。除非被其他控制结构显式修改,否则语句会按照源代码中的编写顺序依次执行。
顺序结构
一种线性控制流结构,每个语句按照其在源代码中出现的顺序恰好执行一次。
例:
读取用户输入、计算结果、然后输出结果
编写一个顺序伪代码块,计算给定半径的圆的面积。
- 1
- 声明并读取输入的半径值:
- 2
INPUT r - 3
- 使用公式计算面积:
- 4
area = 3.14159 * r * r - 5
- 输出最终计算得到的面积:
- 6
OUTPUT area
Exam tip:
务必检查,绝对不要在变量赋值前使用它——这是顺序代码中最常见的错误。
2. 2. 选择(条件)控制流★★☆☆☆⏱ 10 min
选择结构根据布尔条件的真假执行不同代码块,改变默认的执行顺序。CIE 9618认可四种常用形式:单分支IF、双分支IF-ELSE、多分支IF-ELSE IF-ELSE和SWITCH-CASE。
选择结构
一种控制流结构,根据一个或多个布尔条件的结果,从两个或多个互斥代码块中选择一个执行。
编写一个选择代码块:分数≥80输出等级'A',70-79输出'B',低于70输出'F'。
- 1
首先从最高分数段的外层IF开始:
- 2
IF mark >= 80 THEN OUTPUT "A" - 3
添加下一个分数段的ELSE IF:
- 4
ELSE IF mark >= 70 THEN OUTPUT "B" - 5
添加不及格分数的最终ELSE并结束结构:
- 6
ELSE OUTPUT "F" ENDIF
上述代码中,当mark = 70时输出是什么?
输出是什么?
A
B
F
Syntax error
显示答案
B —条件按顺序检查:第一个条件
mark >= 80不成立,因此检查第二个条件mark >= 70,条件成立,输出B。
3. 3. 迭代(循环)控制流★★★☆☆⏱ 15 min
迭代结构(循环)在继续执行条件满足时,重复执行代码块多次。CIE 9618区分三种核心循环类型,各自有不同的使用场景。
循环类型 | 条件检查时机 | 最小迭代次数 | 常见用例 |
|---|---|---|---|
计数循环(FOR) | 每次迭代前 | 0 | 遍历固定范围 |
前置条件循环(WHILE) | 每次迭代前 | 0 | 验证用户输入 |
后置条件循环(REPEAT-UNTIL) | 每次迭代后 | 1 | 按精度要求进行近似计算 |
编写一个WHILE循环,计算2到10之间所有偶数的和。
- 1
在循环开始前初始化总和和计数器变量:
- 2
total = 0 current = 2 - 3
定义WHILE循环的继续执行条件:
- 4
WHILE current <= 10 DO - 5
在循环内更新总和并递增计数器:
- 6
total = total + current current = current + 2 - 7
结束循环并输出结果:
- 8
ENDWHILE OUTPUT total
4. 4. 嵌套控制结构★★★★☆⏱ 10 min
任何控制流结构都可以嵌套在另一个结构内部,例如IF语句内嵌套循环,或IF内嵌套另一个IF。嵌套结构遵循与顶层结构相同的规则:只有当外层结构的路径被选中时,内层结构才会执行。
编写一个嵌套控制块,输出2到20之间的所有素数。
- 1
- 外层循环遍历2到20之间的每个候选数:
- 2
FOR candidate FROM 2 TO 20 DO - 3
- 嵌套选择结构检查候选数是否为素数:
- 4
IF isPrime(candidate) = TRUE THEN OUTPUT candidate ENDIF - 5
- 结束外层for循环:
- 6
ENDFOR
5. 常见陷阱
错误做法:
忘记为嵌套控制结构添加结束关键字(例如遗漏ENDIF/ENDWHILE)
原因:
未闭合的结构会导致整个程序出现语法错误和意外行为
正确做法:
写完开始关键字后立即写下结束关键字,然后在两者之间添加内层代码。使用缩进匹配配对。
错误做法:
需要WHILE循环时误用了REPEAT-UNTIL循环,反之亦然
原因:
REPEAT-UNTIL总是至少执行一次,而WHILE可以执行零次,这会改变边界情况的输出结果
正确做法:
检查代码块是否必须至少执行一次:如果是,使用REPEAT-UNTIL,否则使用WHILE。
错误做法:
忘记在WHILE循环内更新循环计数器
原因:
这会导致退出条件始终为真,产生无限循环(死循环)
正确做法:
在循环前初始化计数器,在循环体内部最后一步更新计数器。
错误做法:
在IF条件中使用错误的比较运算符(例如用=代替>=)
原因:
边界条件的差一错误非常常见,会丢掉本应拿到的分数
正确做法:
反复检查所有边界值(例如及格分40),确认你的条件符合题目要求。
错误做法:
颠倒顺序代码中的步骤顺序
原因:
在变量赋值前使用它会导致运行时错误或错误结果
正确做法:
在编写代码前先在纸上梳理运算顺序,确保所有值在使用前都已定义。
6. 速查表
控制流类型 | 核心特征 | 常见用例 |
|---|---|---|
顺序结构 | 默认逐行执行 | 简单的输入-处理-输出流程 |
单IF | 一条可选代码路径 | 条件为真时触发一个操作 |
IF-ELSE | 两条互斥路径 | 二元通过/不通过或是/否检查 |
FOR循环 | 固定迭代次数 | 遍历已知范围的值 |
WHILE循环 | 前置检查条件,迭代次数可变 | 验证用户输入直到输入有效 |
REPEAT-UNTIL | 后置检查条件,至少执行1次 | 按精度要求进行近似计算 |
真题中的出现
AI 根据考纲规律估算的考点位置,请对照官方真题核实准确性。仅作复习重点参考。
- 2022 · 12
嵌套选择逻辑题
- 2023 · 11
循环类型比较题
- 2024 · 22
控制流重构任务
深入阅读
下一步
控制流是你在CIE 9618中接触到的所有过程式编程的基础。现在掌握这些核心结构,会让你在课程后续学习中更容易调试复杂程序中的逻辑错误。接下来,你可以学习如何将可复用的控制流块封装到子程序中,以及使用嵌套循环处理二维数组这类多维数据结构——这是考试中常见的考点。
