欢迎来到程序导向编程 (Procedural-Oriented Programming)!
你好!今天我们要深入探讨程序导向编程。你可以把它想象成编程界的“食谱”。就像厨师按照一系列步骤来烘焙蛋糕一样,程序导向的程序也是按照一套指令来完成任务。
这种方法是计算机科学中最重要的基础之一。它能帮助我们将庞大且令人望而生畏的问题,拆解成细小、易于处理的部分。别担心,即使现在听起来有点技术性——读完这些笔记后,你会发现这其实是一种保持程序条理清晰的聪明方法!
1. 什么是结构化编程 (Structured Programming)?
结构化编程是编写程序导向程序的一种特定方式。其主要目标是使代码更易于阅读、测试和修正。它依赖于你可能已经熟悉的这三个基本构建模块:
1. 顺序 (Sequence):按照特定顺序执行操作。
2. 选择 (Selection):做出决策(如 if 语句)。
3. 迭代 (Iteration):重复执行任务(如 for 或 while 循环)。
在结构化方法中,我们使用由上而下设计 (Top-down design)。这意味着我们从程序要实现的“宏观愿景”开始,不断将其拆解成越来越小的子任务,直到它们简单到足以轻松编写为止。
日常类比:筹备生日派对
如果有人叫你去“筹备派对”,你可能会感到无从下手。运用结构化方法,你会将其拆解:
• 任务 1:整理宾客名单。
• 任务 2:采购食物。
• 任务 3:安排音乐。
然后,你进一步拆解这些任务。“采购食物”变成了“制作购物清单”和“去超市购物”。这正是我们设计程序导向程序的方法!
快速回顾:结构化方法
• 使用由上而下设计。
• 将问题拆解成子任务。
• 使程序不仅对电脑,对人类来说也更易于理解。
2. 使用层次结构图 (Hierarchy Charts) 进行设计
在动手写代码之前,我们需要一张地图。在计算机科学中,我们使用层次结构图来展示程序的结构。
层次结构图看起来像家谱。最高层是“老板”任务,下方则是“员工”子任务。
重点提示:层次结构图显示了任务内容及其相互关系,但它并不显示执行顺序,也不显示内部的逻辑(如循环)。
如何阅读层次结构图:
1. 顶层 (Top Level) 代表整个程序。
2. 第二层 (Second Level) 展示主要模块(程序的大块组成部分)。
3. 底层 (Lower Levels) 将这些模块进一步拆解成更小的程序或函数。
关键总结
层次结构图是程序设计的工具。它们帮助开发人员将复杂的系统拆解为更小、更简单的模块并可视化。
3. 子程序 (Subroutines) 的威力
在程序导向编程中,我们将代码放入子程序(包括程序 (Procedures) 和 函数 (Functions))。将子程序想象成一个执行特定工作的“微型程序”。
为什么要使用子程序?
• 可重用性 (Reusability):代码只需编写一次,但你可以随意多次调用它。
• 测试更简单:你可以一次测试一个小型程序,确保其运作完美后,再将其加入主程序中。
• 团队合作:在现实中,不同的程序员可以同时开发不同的子程序。
你知道吗?
通过使用子程序,你可以减少主程序的“长度”,使其更容易阅读。这就像一本没有章节的 500 页书籍,与一本整齐划分为各个章节的书籍之间的区别!
4. 数据组织:局部变量 vs 全局变量
当我们使用子程序时,必须决定数据(变量)应该存放在哪里,这称为作用域 (Scope)。
全局变量 (Global Variables):
它们在程序的最顶端声明。程序的任何部分都可以查看并修改它们。
类比:大街上的广告牌。城里每个人都能看到它并在上面涂写。
局部变量 (Local Variables):
它们是在特定子程序内部声明的。它们仅在该子程序运行时存在。程序的其他部分根本不知道它们的存在!
类比:卧室里的私人日记。只有你在那个房间里时才能看见它。
为什么局部变量(通常)更好:
使用局部变量是一种良好习惯,因为:
1. 它们防止了程序其他部分对数据的“意外”修改。
2. 它们节省内存(因为电脑在子程序结束后会删除它们)。
3. 它们使子程序保持独立性,意味着你可以将子程序复制到不同的项目中,它依然能运作!
避免常见错误
不要过度依赖全局变量。如果你的程序出现 Bug,而全局变量的数值出错,你必须检查每一行代码才能找出在哪里被修改。而使用局部变量,你只需要检查它所属的那个子程序即可!
5. 结构化方法的优势
总结一下,为什么要费心进行这些结构设计?以下是你在考试中需要记住的关键优势:
• 可读性 (Readability):代码经过组织并使用具意义的名称,使他人更容易理解。
• 可维护性 (Maintainability):如果规则发生变化(例如税率变动),你只需要更新处理该计算的特定模块。
• 降低复杂性 (Reduced Complexity):将问题拆解,能减轻程序员的压力。
• 可靠性 (Reliability):由于模块更小,它们更容易进行彻底的调试和测试。
记忆法:“程序导向编程的 4 个 R”
要记住这些好处,可以参考:
1. Readability(可读性:易于查看)
2. Reliability(可靠性:较少的 Bug)
3. Reusability(可重用性:写一次,用多次)
4. Repairability(可维修性:易于修复/维护)
关键总结
结构化方法的核心在于效率与组织。它将一团混乱的“意大利面条式代码”转变为整洁、模块化的系统,不仅易于构建,也易于管理。
如果起初觉得这些概念比较抽象,不用担心!随着你多练习编写子程序和绘制层次结构图,这种“结构化”的思考方式会变得越来越自然。编程愉快!