欢迎来到程序开发的世界!

在本章中,我们将从“像计算机一样思考”转向真正的实作!程序开发是计算机科学的核心。在这里,你的创意将转化为实际运行的应用程序和软件。无论你是立志成为专业开发者,还是只想在考试中取得佳绩,这些技能就像是你解决难题的超能力。别担心,有些部分看起来可能像是在学习一种新语言,我们会一步一步为你拆解!

1. 解决大难题(分解与抽象化)

在输入第一行代码之前,你需要一个计划。计算机并不聪明,它们需要非常具体的指令。

分解(Decomposition):拆解问题

分解是指将复杂的问题拆解成更小、更容易处理的部分的过程。 类比:如果有人叫你“筹办音乐节”,你一定会愣住!但如果你把它拆解成“预订乐队”、“租借舞台”和“贩售门票”,处理起来就会容易多了。

抽象化(Abstraction):化繁为简

抽象化是指移除不必要的细节,将重点放在重要的部分。 类比:想象一张伦敦地铁图。它不会显示每一条街道或每一棵树,只会显示车站和路线。这就是抽象化!

快速回顾:
- 分解 = 将大型任务拆解为微型任务。
- 抽象化 = 忽略与解决方案无关的细节。

重点总结: 使用这两个工具能帮助你分析问题,让你解决难题时不再感到手足无措。

2. 从计划到程序

在考试中,你可能会拿到一个算法(例如流程图或伪代码),并被要求将其转换为实际的代码(对于 Edexcel 学生来说,通常是 Python)。

阅读与精进代码

程序开发不仅仅是编写,还包括阅读精进。 - 阅读:你能看懂一段代码并解释它的功能吗?
- 精进:你能将一个运行中的程序改进得更好、更快或更容易阅读吗?

转换算法

当将流程图伪代码转换为程序时:
1. 找出输入(Inputs)(例如:“询问姓名”),并将其转换为代码:name = input()
2. 找出选择(Selection)(流程图中的菱形),并使用 if/else 语句。
3. 找出重复(Repetition)(循环),并使用 whilefor 循环。

你知道吗?伪代码(Pseudocode)并非一种严格的编程语言。它只是用英文(或中文)编写的“模拟代码”,用来帮助你在考虑特定编程语言规则之前先规划好逻辑。

重点总结:练习用纸笔进行程序“追踪(tracing)”,这能让你准确理解程序如何从开始运行到结束。

3. 编写“简洁”的代码

代码不仅要能“运行”就够了,它还必须具备可维护性。这意味着如果六个月后你回头看,或者其他程序员看到这段代码,他们都能轻松理解。

“专业码农”检查清单:

- 有意义的标识符:使用合乎逻辑的变量名称。使用 score 而不是 s,或 player_name 而不是 p1
- 缩进(Indentation):使用空格或 Tab 来显示哪些代码属于 if 语句或循环之内。在 Python 中,这是强制要求的!
- 注释(Comments):使用 # 符号来写下笔记,解释一段复杂的代码在做什么。
- 空格(White Space):不要把所有东西都挤在一起。使用空行来分隔不同的代码“段落”。

记忆法:记住 C.I.M. - Comments(注释)、Indentation(缩进)、Meaningful names(有意义的名称)。这能让你的代码阅读起来非常简单(SIM-ple)!

重点总结:清晰的布局和良好的命名能让你的代码在日后更容易除错与更新。

4. 捕捉虫子(错误类型)

每个人都会犯错!窍门在于知道如何找到并修正它们。你需要知道三种主要的错误类型:

1. 语法错误(Syntax Errors)

这些是“文法”错误。你违反了编程语言的规则。 示例:忘记在 if 语句末尾加上冒号 (:),或是将 "print" 拼写成 "prnt"。程序甚至无法启动。

2. 逻辑错误(Logic Errors)

程序运行得非常完美,但结果却是错的!这是一种“思考”上的错误。 示例:你想将两个数字相加,却不小心用了减号 (-)。计算机完全按照你的指示执行,但你的指示给错了!

3. 运行时错误(Runtime Errors)**

程序开始运行,但随后突然崩溃。 示例:指示计算机将数字除以零,或是要求它打开一个不存在的文件。

要避免的常见错误:不要搞混逻辑错误语法错误。如果程序启动了但给出错误答案,那是逻辑错误。如果程序立刻跳出红色错误信息,那就是语法错误

重点总结:识别、定位并修正这些错误,是成为优秀程序员的关键一环。

5. 你的程序是否合用且快速?

当你的程序可以运行后,你需要评估它的适用性(Fitness for purpose)效率(Efficiency)

适用性(Fitness for Purpose)

程序是否真的执行了用户要求的功能?如果你被要求制作一个加法计算器,但它只能做减法,那么它就不是“合用”的。

效率(Efficiency)

两个程序可以解决同一个问题,但其中一个可能因为更有效率而“更好”。我们通过以下方式测量:
- 比较次数:计算机需要询问“A 是否等于 B?”多少次?
- 执行次数:它需要经过循环多少次?
- 内存使用:它占用了多少计算机 RAM 空间?

快速回顾:
为了测试程序是否适用,我们使用测试数据(Test Data)。这包括:
- 正常数据:程序预期会接收到的东西(例如:输入年龄“15”)。
- 边界数据:允许范围的最极端数值(例如:“0”或“100”)。
- 错误数据:应该被拒绝的东西(例如:在年龄栏输入“香蕉”)。

重点总结:一个出色的程序不仅是能运行,它还必须高效地运行,并且能处理意外输入而不会崩溃。