欢迎来到解难的世界!

你有没有试过组装一套复杂的乐高,或是第一次尝试烤蛋糕?你肯定不会随便把材料混合在一起就期望它会成功,对吧?你需要遵循一个计划!在计算机科学中,我们也是这样做的。在程序员输入任何一行代码之前,他们都会遵循特定的步骤,以确保能用最好的方法解决问题。

在这些笔记中,我们学习解难程序与技巧。学完之后,你会发现程序设计与其说是“打字”,不如说是“思考”!

别担心,如果有些词汇看起来很艰深,我们将把它们拆解成容易理解的小概念!


解难的 6 大阶段

把这些阶段想象成路线图,如果你错过了一个转弯,就可能会迷路!以下是每一位程序员都会使用的六个步骤:

1. 定义问题 (Problem Definition)

定义:找出究竟需要解决什么问题。如果你连问题是什么都不知道,就没办法修正它!
目标:用简单的文字清晰地说明问题。
比喻:在盖房子之前,你需要先决定是要盖一间小木屋还是摩天大楼。

2. 分析问题 (Problem Analysis)

定义:仔细审视问题,看看你有什么信息,以及你想要什么结果。
目标:识别输入 (Inputs)(放入什么)和输出 (Outputs)(产出什么)。
比喻:如果你在制作奶昔,水果和牛奶就是输入;而美味的奶昔就是输出。

3. 设计算法 (Algorithm Design)

定义:为了解决问题,编写一个步骤详尽的计划或“食谱”。
目标:写出一套任何人(或计算机)都可以跟随的逻辑路径。
小贴士:我们通常会在这个阶段使用流程图或“伪代码”(Pseudocode,即简单的日常语言说明)。

4. 程序编写 (Program Coding)

定义:将你的算法(计划)转换成计算机能理解的语言(如 Python、Scratch 或 C++)。
目标:将你的构思转化为实际可运作的程序。
比喻:这就像厨师终于根据食谱开始烹饪餐点一样。

5. 程序调试与测试 (Program Debugging and Testing)

定义:检查程序是否有错误(称为臭虫/Bugs),并确保它每次都能正确运作。
目标:在人们开始使用软件之前,找出错误并加以修复。
你知道吗?“Bug”(臭虫)这个词源于 1947 年,当时有一只飞蛾真的卡在早期的计算机里面!

6. 程序文档编写 (Program Documentation)

定义:撰写关于程序如何运作以及如何使用的说明和指引。
目标:帮助其他人(或未来的你自己)理解你的代码。
比喻:这就像新电器附带的说明书一样。

记忆小技巧:要记住这 6 个阶段,试试这个句子:
Dogs Always Drink Cold Tasty Drinks
(Definition 定义, Analysis 分析, Design 设计, Coding 编码, Testing 测试, Documentation 文档编写)

快速复习:哪一个阶段像“食谱”?(答案:设计算法)。哪一个阶段是关于修复错误的?(答案:调试)。


拆解问题:IPO 模型

当我们处于分析问题阶段时,我们会使用一个非常有用的工具,称为 IPO 模型。它代表 Input(输入)、Process(处理)和 Output(输出)

几乎每个计算机程序都遵循这个简单的流程:

1. 输入:进入程序的数据(例如:数字、文字或鼠标点击)。
2. 处理:计算机将输入转换为有用信息的动作(例如:将数字加起来)。
3. 输出:计算机最后显示或给出的结果(例如:屏幕上的答案)。

例子:计算器程序

想像你想制作一个将两个数字相加的程序。

  • 输入:你输入的两个数字(例如 \(5\) 和 \(3\))。
  • 处理:计算机执行加法运算 (\(5 + 3 = 8\))。
  • 输出:数字 \(8\) 出现在你的屏幕上。

重点总结:当你开始一个项目时,一定要问自己:“我需要给计算机什么(输入),以及我想要得到什么结果(输出)?”


现实生活例子:制作“成绩检查器”

让我们看看这些阶段如何应用于现实任务:制作一个让学生知道自己测验是否及格的程序。

1. 定义:建立一个工具来帮助学生检查考试成绩。
2. 分析:
    输入:学生的分数(例如 \(45\))。
    输出:显示“及格”或“不及格”的信息。
3. 设计:如果分数是 \(50\) 分或以上,显示“及格”。否则,显示“不及格”。
4. 编码:将“如果-那么”(If-Then) 逻辑输入到程序语言中。
5. 测试:尝试输入 \(100\)(应显示及格)、\(20\)(应显示不及格)以及 \(-5\)(应显示错误!)。
6. 文档编写:写下笔记:“此程序由 [你的名字] 于 2023 年编写。及格分数设定为 50 分。”


常见错误,记得避开!

  • 直接跳到编码:很多同学想马上开始写代码。千万不要!如果你没有计划(算法),你会更快感到卡住和沮丧。
  • 忘记测试:程序能“运行”并不代表它就是对的。务必用不同的数字进行测试,确保逻辑万无一失。
  • 忽略文档编写:你可能会以为自己下个月还记得程序是如何运作的,但你多半会忘记!一定要随手为自己写下小笔记。

总结检查清单

准备好迎接测试了吗?检查一下你知道:

[ ] 解难的 6 个阶段及顺序。
[ ] “输入”和“输出”的意思。
[ ] 为什么我们需要“算法”(计划)。
[ ] 什么是“臭虫”(Bug)(程序中的错误)。
[ ] 为什么“文档编写”对他人的帮助。

做得好!你已经掌握了世界上所有 App、游戏和网站背后最根本的思考过程!