学习指南

控制流结构

计算机科学· 30 分钟阅读

1. 1. 顺序控制流★☆☆☆☆⏱ 5 min

顺序执行是所有过程式编程语言的默认行为。除非被其他控制结构显式修改,否则语句会按照源代码中的编写顺序依次执行。

📘 定义

顺序结构

一种线性控制流结构,每个语句按照其在源代码中出现的顺序恰好执行一次。

例:

读取用户输入、计算结果、然后输出结果

📐 例题

编写一个顺序伪代码块,计算给定半径的圆的面积。

  1. 1
    1. 声明并读取输入的半径值:
  2. 2

    INPUT r

  3. 3
    1. 使用公式计算面积:
  4. 4

    area = 3.14159 * r * r

  5. 5
    1. 输出最终计算得到的面积:
  6. 6

    OUTPUT area

Exam tip:

务必检查,绝对不要在变量赋值前使用它——这是顺序代码中最常见的错误。

2. 2. 选择(条件)控制流★★☆☆☆⏱ 10 min

选择结构根据布尔条件的真假执行不同代码块,改变默认的执行顺序。CIE 9618认可四种常用形式:单分支IF、双分支IF-ELSE、多分支IF-ELSE IF-ELSESWITCH-CASE

📘 定义

选择结构

一种控制流结构,根据一个或多个布尔条件的结果,从两个或多个互斥代码块中选择一个执行。

📐 例题

编写一个选择代码块:分数≥80输出等级'A',70-79输出'B',低于70输出'F'。

  1. 1

    首先从最高分数段的外层IF开始:

  2. 2

    IF mark >= 80 THEN OUTPUT "A"

  3. 3

    添加下一个分数段的ELSE IF:

  4. 4

    ELSE IF mark >= 70 THEN OUTPUT "B"

  5. 5

    添加不及格分数的最终ELSE并结束结构:

  6. 6

    ELSE OUTPUT "F" ENDIF

✓ 快速检测

上述代码中,当mark = 70时输出是什么?

  1. 输出是什么?

    • 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. 1

    在循环开始前初始化总和和计数器变量:

  2. 2

    total = 0 current = 2

  3. 3

    定义WHILE循环的继续执行条件:

  4. 4

    WHILE current <= 10 DO

  5. 5

    在循环内更新总和并递增计数器:

  6. 6

    total = total + current current = current + 2

  7. 7

    结束循环并输出结果:

  8. 8

    ENDWHILE OUTPUT total

4. 4. 嵌套控制结构★★★★☆⏱ 10 min

任何控制流结构都可以嵌套在另一个结构内部,例如IF语句内嵌套循环,或IF内嵌套另一个IF。嵌套结构遵循与顶层结构相同的规则:只有当外层结构的路径被选中时,内层结构才会执行。

📐 例题

编写一个嵌套控制块,输出2到20之间的所有素数。

  1. 1
    1. 外层循环遍历2到20之间的每个候选数:
  2. 2

    FOR candidate FROM 2 TO 20 DO

  3. 3
    1. 嵌套选择结构检查候选数是否为素数:
  4. 4

    IF isPrime(candidate) = TRUE THEN OUTPUT candidate ENDIF

  5. 5
    1. 结束外层for循环:
  6. 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中接触到的所有过程式编程的基础。现在掌握这些核心结构,会让你在课程后续学习中更容易调试复杂程序中的逻辑错误。接下来,你可以学习如何将可复用的控制流块封装到子程序中,以及使用嵌套循环处理二维数组这类多维数据结构——这是考试中常见的考点。