# 计算思维基础

> 计算机科学 · CIE A-Level 9618
> 来源: https://www.owlsprep.com/zh/study/cie-9618-u9-computational-thinking-fundamentals/

本模块介绍计算思维的四大核心原则，这是CIE A-Level计算机科学中所有算法设计和问题求解的基础框架。你将学习如何将每个原则应用于日常问题和编程问题。

**先修:** 无需预先掌握技术知识

## 学习目标

- 识别计算思维的四大核心组成部分
- 将每种计算思维方法应用于简单问题求解
- 理解计算思维如何支撑所有算法设计
- 避免核心术语的常见误解

## 分解

**分解** — 将大型复杂问题拆分为更小、更易处理、可独立求解的子问题的过程。

*例:* 将「搭建网站」问题拆分为：设计UI、编写数据库代码、添加身份验证、测试可用性

分解可以降低认知负荷，允许多名开发人员并行处理项目的不同部分，还让调试变得简单得多，因为错误会被隔离在单个小型子问题中。

**例题:** 分解以下问题：编写一个计算学生期末成绩并输出是否通过的程序。

1. 步骤1：将整体问题拆分为独立的更小的子问题
2. 子问题1：收集用户输入的作业和考试分数
3. 子问题2：根据输入计算加权平均期末分数
4. 子问题3：将期末分数与及格分数线（例如40%）进行比较
5. 子问题4：向用户输出期末成绩和及格/不及格结果

> **考试提示:** 当被要求分解问题时，务必清晰命名你的子问题；模糊的描述会失分。

## 抽象

**抽象** — 过滤（隐藏）不必要细节的过程，仅保留解决问题所需的重要信息，从而减少不必要的复杂性。

*例:* 对于成绩计算程序，我们只需要学生的ID和分数，不需要他们的年龄或头发颜色。

抽象是管理大型软件项目复杂性的核心。它允许程序员在不需要了解系统内部工作原理的情况下使用系统，这是函数、模块和面向对象编程的基础。

**例题:** 为仅模拟车辆移动的交通模拟创建汽车的抽象。哪些细节需要保留，哪些需要隐藏？

1. 步骤1：确认核心需求：模拟仅跟踪车辆如何在道路网络中移动
2. 步骤2：仅保留必要细节：当前位置、速度、方向、加速度
3. 步骤3：隐藏所有不必要细节：汽车品牌、燃料类型、颜色、座位数、发动机排量
4. 结果：该抽象仅包含解决特定问题所需的数据，没有额外的复杂性

> **考试提示:** 当被要求举例说明抽象时，明确说明哪些细节被隐藏才能获得满分。

## 模式识别

**模式识别** — 识别问题之间或问题部分之间的相似性、规律或共同特征，从而让我们预测结果或复用现有解决方案的过程。

*例:* 认识到所有选择题测验都遵循相同的结构，因此我们可以对每个问题复用相同的代码。

模式识别减少了冗余工作：我们不需要为每个类似任务编写新代码，只需创建一个可复用的解决方案，适用于所有符合模式的情况。这让开发更快，代码也更易于维护。

**例题:** 一个程序需要计算5个不同顾客购物篮的总费用。模式识别在这里如何应用？

1. 步骤1：分析问题，找到共同特征：每个购物篮都有一个包含单个商品价格的商品列表
2. 步骤2：识别模式：无论哪个购物篮，总费用都是通过累加所有单个商品价格计算得到
3. 步骤3：不需要编写5个独立的计算模块，只需编写一个可复用的函数，适用于所有购物篮

## 算法思维

**算法思维** — 开发一套清晰、逐步的有限指令来解决问题的过程，遵循这些指令总能得到正确的解。

*例:* 烘焙食谱是一种非技术领域的算法：每个步骤都清晰有序，遵循正确操作就能得到想要的结果。

**例题:** 编写一个算法，在10个正数的列表中找出最大的数。

1. 步骤1：将当前最大值设为列表中的第一个数
2. 步骤2：移动到列表中的下一个数
3. 步骤3：如果新数大于当前最大值，更新当前最大值
4. 步骤4：重复步骤2和3，直到所有数都被检查过
5. 步骤5：输出当前最大值作为最终结果

**考试命令词**

在CIE 9618考试中，本主题常见命令术语的评分要求如下：

- **Define** — 给出该术语准确精准的定义 *(通常为1分)*

- **Explain with an example** — 定义术语，给出相关实例，并将实例与定义关联 *(通常为3分，每个部分占1分)*

## 常见错误

- **错误做法:** 将分解与抽象混淆
  - 原因: 学生经常混淆这两个核心过程，导致定义题失分
  - 正确做法: 记住：分解=拆分为小问题；抽象=隐藏不必要细节
- **错误做法:** 创建抽象时包含所有可能的细节
  - 原因: 这违背了抽象的目的，抽象就是为了减少不必要的复杂性
  - 正确做法: 只保留直接解决当前特定问题所需的细节
- **错误做法:** 认为模式识别仅适用于多个独立问题
  - 原因: 模式识别也可以在单个问题中找到重复模式，消除冗余代码
  - 正确做法: 既要在不同问题之间寻找模式，也要在单个问题内部寻找模式
- **错误做法:** 编写没有明确终止条件的算法
  - 原因: 有效的算法必须在有限时间内结束，因此无法终止的过程不是算法
  - 正确做法: 始终确保你的算法有一个明确且一定会满足的结束条件
- **错误做法:** 分解时创建重叠的子问题
  - 原因: 重叠的子问题会导致冗余工作，让调试变得困难得多
  - 正确做法: 让每个子问题尽可能独立，有清晰独立的输入和输出

## 速查表

| 原则 | 核心思想 | 考试关键提示 |
| --- | --- | --- |
| 分解 | 将大问题拆分为小的子问题 | 清晰命名每个子问题 |
| 抽象 | 隐藏不必要细节以降低复杂度 | 在实例中说明哪些细节被隐藏 |
| 模式识别 | 找到共同特征以复用解决方案 | 将模式与减少冗余关联 |
| 算法思维 | 逐步的有限问题求解过程 | 确保步骤有序且无歧义 |

## 下一步

计算思维是CIE A-Level计算机科学中所有后续算法设计、问题求解和软件开发的基础。这四个核心原则是从简单脚本到复杂数据结构和高级算法所有主题的基础。扎实的计算思维理解能帮助你更系统地应对理论和编程考试题，将复杂问题拆分为可处理的步骤。接下来你将在这些基础之上学习如何清晰表示算法，然后再继续实现和分析常见任务的标准算法。

- [问题解决流程](https://www.owlsprep.com/zh/study/cie-9618-u9-problem-solving-process/)
- [算法分类](https://www.owlsprep.com/zh/study/cie-9618-u9-algorithm-classification/)
- [标准查找算法](https://www.owlsprep.com/zh/study/cie-9618-u9-standard-searching-algorithms/)

---

来自 [OwlsPrep](https://www.owlsprep.com) —— A-Level / IB / AP / IGCSE 免费学习指南，依据官方考纲编写。原页面：https://www.owlsprep.com/zh/study/cie-9618-u9-computational-thinking-fundamentals/
