欢迎来到算法的世界!

你好!在本章中,我们将学习如何设计、编写和修正算法。你可以把算法想象成一份食谱:一套明确的、按部就班的说明,用来完成某项任务或解决问题。无论你是要烤一片吐司,还是要编写下一个热门应用程序,你都需要一个计划。让我们开始吧!

快速回顾:算法只是一个计划。它还不是程序代码——它是代码背后的逻辑。


1. 三大支柱:输入、处理与输出

在你开始编写算法之前,你需要找出三件事:输入 (Input)处理 (Process)输出 (Output)(简称 IPO)。这能帮助你准确理解问题的要求。

  • 输入:什么数据进入了系统?(例如:输入你的姓名)。
  • 处理:该数据发生了什么事?(例如:将两个数字相加)。
  • 输出:最后产生了什么结果?(例如:显示“你好”的消息或计算总和的结果)。

比喻:一台榨汁机。水果是输入,旋转的刀片是处理,而美味的果汁就是输出

重点提示:随时问自己:“我有什么?”、“我需要对它做什么?”以及“最终结果应该是什么样子?”


2. 结构图 (Structure Diagrams)

有时候问题太大,无法一次解决。结构图能帮助我们将大问题拆解成较小、易于管理的区块(这称为分解 (Decomposition))。

结构图看起来像一棵倒过来的树。主要问题在顶端,较小的子任务则连接在它下方。这显示了问题的层级 (hierarchy)以及不同部分是如何连接在一起的。

快速回顾:
- 显示问题如何被拆解。
- 每个方块代表任务的一小部分。
- 帮助团队同时处理项目的不同部分。


3. 流程图 (Flowcharts):直观呈现逻辑

流程图是一种使用特定形状来视觉化呈现算法的方法。每个形状都有特殊的含义,你必须为 OCR 考试记住它们。

重要的流程图符号:

  • 终止符 (椭圆形):用于“开始”和“结束”。每个流程图都需要它们!
  • 输入/输出 (平行四边形):用于程序要求数据或显示结果时。
  • 处理 (矩形):用于计算或设定变量等指令。例如:\( x = x + 1 \)。
  • 决策 (菱形):用于“是/否”或“真/假”问题。这是路径分岔的地方。
  • 子程序 (两侧有直线的矩形):用于显示在其他地方执行的独立指令集。
  • 线条 (箭头):显示“流程”的方向。

如果你的第一份流程图看起来乱糟糟的,别担心!请使用铅笔,并记住箭头必须始终指向下一个步骤。


4. 伪代码 (Pseudocode):像计算机一样思考

伪代码是“假代码”。它看起来像编程语言,但设计给人类阅读。它没有像 Python 那样严格的“语法”规则,但应该要易于跟随。

在 OCR 考试中,你会看到考试参考语言 (Exam Reference Language)。以下是一个登录系统的简单伪代码示例:

INPUT username
IF username == "Admin" THEN
  PRINT "Welcome back!"
ELSE
  PRINT "Access Denied"
ENDIF

记忆小撇步:把伪代码想象成你程序的“草稿”。


5. 嵌套 (Nesting):盒中之盒

嵌套是指将一个程序结构放入另一个结构内。你可以嵌套选择 (Selection)(IF 语句)或迭代 (Iteration)(循环)。

  • 嵌套选择:在 IF 语句内再嵌套一个 IF 语句。对于缩小选择范围很有用。
  • 嵌套迭代:在循环内嵌套另一个循环。想象时钟:每当“小时”循环运作一次,“分钟”循环就会运作 60 次。

常见错误:忘记缩进你的嵌套代码。缩进(将代码向右移)能让你更容易看出哪个“盒子”在哪个里面。


6. 追踪表 (Trace Tables):化身为计算机

追踪表是一种用来一步步跟踪算法的工具。它能帮助你记录程序执行时变量的变化。这通常被称为“干跑”(dry run)

如何使用追踪表:
1. 将每个变量列为栏标题。
2. 逐行跟随算法。
3. 每当变量发生变化,就在表格的下一行写入其新值。

快速回顾:追踪表是找出逻辑错误的最佳方法。如果表格中的最终值与你预期的不符,说明逻辑中有错误!


7. 修正与优化算法

算法有时会出现“错误”(bugs)。你需要能够识别并修正两类主要错误:

  • 语法错误 (Syntax Errors):这是代码“语法”上的错误(例如,将 PRINT 误拼成 PRITN)。程序将完全无法执行。
  • 逻辑错误 (Logic Errors):程序可以执行,但给出的结果是错误的。例如,你本意要用 \( * \) 却使用了 \( + \)。

优化 (Refining)意味着让算法变得更好。这可能意味着让它更短、更快,或者更健壮 (robust)(更不容易出错)。你可以通过使用循环来取代重复的行,或者使用更有意义的变量名称来优化代码。

你知道吗?第一个“计算机虫”(computer bug) 真的是在 1947 年卡在计算机里的一只飞蛾!今天,我们只是用这个词来指代代码中的任何错误。

重点总结:
- 使用 IPO 来厘清目标。
- 使用 流程图伪代码 来规划步骤。
- 使用 追踪表 来测试你的计划并找出错误。
- 优化你的工作,使其达到完美!