欢迎来到编程技术(Programming Techniques)!

在本章中,我们将从“思考”问题转向实际“构建”解决方案。你可以把这些技术想像成你的“编程工具箱”。就像建筑工人盖房子不仅仅需要一把槌子一样,程序员也需要这些特定的工具来编写高效、易读且稳定运行的代码。

如果有些术语起初听起来比较深奥,请不用担心——我们会用你熟悉的日常生活例子来为你拆解!

1. 三大支柱:编程结构(Programming Constructs)

几乎每一个编写出来的程序,都是由三个基本的“积木”构成的。这些被称为编程结构。它们控制着程序流程(即指令执行的先后顺序)。

A. 顺序(Sequence)

这是最简单的结构。顺序意味着计算机会按照指令编写的确切顺序,由上而下逐一执行。

例子:泡一杯茶。1. 烧开水。2. 把茶包放入杯中。3. 倒水。你不可能在烧开水之前先把水倒出来!

B. 分支(Branching / Selection)

分支是指程序需要做出决定的时候。它会检查一个条件(通常使用 IF 语句),然后决定走哪条路。

例子:如果(IF)下雨,那么(THEN)带把伞,否则(ELSE)就把伞留在家里。

C. 迭代(Iteration / Looping)

迭代意味着重复执行某段代码。主要有两种类型:
1. 计数控制(Count-controlled):重复特定次数(例如 FOR 循环)。
2. 条件控制(Condition-controlled):重复执行直到满足某个条件为止(例如 WHILE 循环)。

例子:只要你的杯子还没满,就继续倒水。

快速回顾:
顺序:按步骤执行。
分支:做决策(IF)。
迭代:重复任务(循环)。

2. 变量:局部(Local)与全局(Global)

在编程中,我们使用变量来存储数据。然而,你建立变量的位置决定了它可以在哪里被使用,这被称为变量的作用域(Scope)

局部变量(Local Variables)

局部变量是在程序的特定部分(如函数或程序)内部声明的。它只在程序执行该部分时存在。就像只有在同一个房间内的人才能看到的“私密”笔记。

为什么要用它? 它们能节省内存,并防止程序的其他部分意外更改数据。

全局变量(Global Variables)

全局变量是在程序最开头声明的,它可以被程序的任何部分读取和更改。就像学校走廊上的“公用”公告栏。

风险:虽然它们看起来很方便,但使用过多的全局变量是一个坏习惯!这会让排查错误(bugs)变得非常困难,因为程序的任何地方都可能在你不知情的情况下更改了该变量的值。

记忆小窍门:局部是私有的(Private),全局是公开的(Public)。

3. 模块化(Modularity):函数与程序

当程序变得庞大时,会变得杂乱无章。模块化就是将大型程序分解成更小、更易于管理的区块,这些区块被称为子程序(Sub-routines)

程序(Procedures)与函数(Functions)

程序(Procedures):执行特定任务,但不会将数值回传给主程序的代码区块。
函数(Functions):执行特定任务,且总是会回传一个值给调用它的程序部分的代码区块。

比喻:程序就像厨师,他煮好了饭并放在柜台上。函数就像计算器;你给它数字,它会“回传”计算结果给你。

重点总结:模块化使代码更容易测试、更容易阅读,并让你能够重复使用代码,而不必重复输入!

4. 参数传递(Parameter Passing):传递火炬

当我们使用子程序时,通常需要传送信息给它。这些信息是通过参数传递的。有两种传递方式,这是考试中非常热门的题目!

A. 传值(Passing by Value)

程序会制作一份数据的副本,并将该副本传送给子程序。原始数据保持安全且不变。

例子:你给朋友一份你的家庭作业影本。如果他们在影本上乱画,你的原始版本仍然是完美的。

B. 传址(Passing by Reference)

程序会传送原始数据的内存地址。这意味着子程序是在观察实际的数据,而不是副本。

例子:你给朋友一把储物柜的钥匙。如果他们进去并改变了里面的东西,你储物柜里的原始物品就真的被改变了。

常见错误:学生经常忘记传值(By Value)会保护原始数据,而传址(By Reference)允许子程序更改原始变量。

5. 使用 IDE(集成开发环境)

IDE 是你用来编写代码的软件(如 PyCharm、IDLE 或 Visual Studio)。它不仅仅是一个文本编辑器;它是一个强大的工具,旨在帮助你更快地编写代码并找出错误。

IDE 的主要功能:

代码编辑器:“语法高亮(Syntax Highlighting)”(为关键字上色)等功能使代码更易于阅读。
错误诊断/调试(Debugging):它会精确指出你在哪里犯了错,并允许你逐行执行代码以查找 bug。
执行环境:让你只需点击一下按钮,即可立即测试你的程序。
自动完成:在你输入时建议变量名称或指令(就像手机上的预测文字输入一样!)。

你知道吗?在 IDE 出现之前,程序员必须在基本的文本文件中编写代码,并手动执行单独的“编译器”程序。如果发生错误,他们必须猜测是哪一行代码引起的!

最终复习清单

在完成本章之前,请确保你能够:
• 在代码中辨识顺序(Sequence)、分支(Branching)迭代(Iteration)
• 解释为什么局部变量通常优于全局变量
• 定义程序(Procedure)函数(Function)之间的区别(它是否回传值?)。
• 解释参数传值(By Value)传址(By Reference)之间的区别。
• 至少列举出三项帮助程序员的 IDE 功能。

如果觉得传址(By Reference)有点棘手也不用担心——这是本节中最进阶的概念之一!只要记住:传值 = 复制一份,传址 = 操作原始本。