欢迎来到编程的世界!

在本章中,我们将一起探索编程概念。你可以把这些概念想象成每个计算机程序中的“积木”。无论是一个简单的计算器,还是一个大型的电子游戏,它们运行的基本原理都是一样的。如果一开始觉得像学习一门新语言而感到困惑,请别担心——当你读完这一章后,你会发现编程其实就是一种给予清晰指令的方法!

1. 编程的三大黄金法则

你编写的每一个程序都是由三个核心思想构建而成的。这些是让代码顺畅运行的“组合原则”:

顺序 (Sequence):这是最简单的一种。它意味着计算机会按照你的指令,从上到下依次执行。就像依照食谱做菜一样!
选择 (Selection):这是计算机做出决策的方式。它使用“if”语句来决定执行哪一条路径。(例如:如果正在下雨,就带上一把雨伞。
迭代 (Iteration):这是“循环 (looping)”的专业术语。当计算机需要重复执行一组指令时,就会用到它。

快速重温:三大支柱

顺序 (Sequence) = 顺序/次序
选择 (Selection) = 决策
迭代 (Iteration) = 重复

2. 存储数据:变量与常量

要让程序执行任何有用的任务,它必须能够“记住”信息。我们通过标识符 (Identifiers)(我们为数据片段所取的名称)来达成这一点。

变量声明 (Variable Declaration)

变量 (Variable) 就像是一个贴了标签的收纳盒。当程序运行时,你可以随时更改盒内的内容。例如,在游戏中,你的“分数 (score)”就是一个变量,因为每当你得到一分,分数就会改变。

常量声明 (Constant Declaration)

常量 (Constant) 是一个一旦程序开始运行就无法更改的值。
为什么要使用它们? 这会让你的代码更安全!如果你有一个像 \( \pi = 3.14 \) 这样值的,你肯定不希望代码中的错误意外地把它改成 5.0。此外,这也能提高代码的可读性。

赋值 (Assignment)

赋值 (Assignment) 是将值放入变量的过程。在 AQA 伪代码中,我们使用箭头来表示:Score ← 10。这意味着“将数字 10 放入名为 Score 的变量中”。

你知道吗? 使用有意义的标识符名称(例如用 player_lives 而不是简单的 x)至关重要。这能帮助其他程序员(以及未来的你自己!)更轻松地理解代码的用途。

重点总结: 变量用于会改变的数据,常量用于不变的数据。务必为它们命名清晰且具描述性的名称!

3. 选择(做出决策)

计算机本身并不“聪明”,它们只是遵循我们通过选择 (Selection) 所给予的逻辑。

最常见的形式是 IF 语句。我们还可以对它们进行“嵌套”处理。嵌套选择 (Nested Selection) 是指在一个 IF 语句中嵌套另一个 IF 语句。这就像一个决策树。

示例:
IF GameWon = True THEN
    IF Score > HighScore THEN
        ... 更新最高分 ...
    ENDIF
ENDIF

如果这看起来有点复杂,别担心! 只要把它想成“第一层”(我赢了吗?)和“第二层”(我的分数是最高的吗?)。只有当第一层成立时,你才会去检查第二层。

4. 迭代(循环)

迭代就是重复执行代码。你需要掌握两种类型:

确定性迭代 (Definite Iteration - 计数控制)

当我们确切知道需要重复多少次时,就会用到这种迭代。我们通常使用 FOR 循环。
示例:FOR i ← 1 TO 5(这将会执行刚好 5 次)。

不确定性迭代 (Indefinite Iteration - 条件控制)

当我们不知道需要重复多少次时,就会用到这种迭代。我们会持续执行,直到满足 WHILEUNTIL 的条件为止。

WHILE 循环:在开始时检查条件。如果条件不满足,内部的代码可能永远不会执行!
REPEAT UNTIL 循环:在结束时检查条件。这意味着内部的代码一定会至少执行一次

记忆小贴士:
FOR = 我们知道次数。
WHILE/REPEAT = 我们在等待某事发生。

重点总结: 当你需要多次重复整个过程时(例如逐行绘制一个方格网格),请使用嵌套迭代 (Nested Iteration)(循环中的循环)。

5. 子程序(过程与函数)

子程序 (Subroutine) 是一个执行特定任务的命名代码块。与其重复编写相同的 20 行代码,不如将其编写成一个子程序,并在需要时通过名称来“调用 (call)”它。

子程序的两种类型:

1. 过程 (Procedures):执行任务但不会返回任何值。
2. 函数 (Functions):执行任务并向主程序返回 (RETURN) 一个值。

参数与局部变量

参数 (Parameters):这是你传入子程序的“输入”,让它拥有执行任务所需的数据。
局部变量 (Local Variables):这些是在子程序内部声明的变量。它们只在该子程序执行时存在。这是一种“好的编程习惯”,因为它能防止程序的不同部分意外地干扰彼此的数据!

类比: 想象一个“制作吐司 (MakeToast)”的子程序。参数就是你放进去的面包。函数会返回烤好的吐司给你。留在烤面包机里的任何面包屑就像是局部变量——它们只留在烤面包机内,不会影响你厨房的其他部分!

6. 结构化程序设计

这是一种专业的编程方法。它意味着将一个巨大且困难的问题拆解成较小、易于管理的子程序(这称为分解 (Decomposition))。

结构化方法的优点:
• 编写和测试小片段的代码更容易。
• 你可以在程序的不同部分重复使用子程序。
• 对人类来说,代码更容易阅读和修复(除错)。

快速重温箱:
子程序 (Subroutine):主程序中的迷你程序。
函数 (Function):会返回值 (Returns)。
过程 (Procedure):仅执行工作。
局部变量 (Local Variable):只留在子程序内。

你做得很好! 编程的核心在于逻辑。如果你能向朋友一步步解释如何泡一杯茶,那你其实已经理解了编程概念的基础了!