让我们一起来谈谈编程!

大家好!欢迎来到精彩的编程世界。即使你从未写过一行代码,也请不用担心。把编程想象成学习一种新语言,用来与电脑沟通。你不再说“请”,而是使用特定的指令来确切地告诉电脑该做什么。

在本章中,我们将学习如何像解难者一样思考、规划解决方案、编写电脑指令,甚至找出并修正错误。这是一项超有用的技能,不仅适用于信息及通讯科技科,更能应用于解决现实生活中各种各样的问题。让我们开始吧!



1. 从问题到计划:先思考,后编码

在你告诉电脑该做什么之前,你需要一个清晰的计划。优秀的程序员花在思考和规划上的时间,比输入代码的时间更多。这个规划阶段称为计算思维 (Computational Thinking)

a. 理解问题

第一步始终是理解你需要达成什么目标。

我们将其分为三个部分:

输入 (Input):程序开始时需要什么信息?(例如:要相加的两个数字)
处理 (Process):程序需要采取哪些步骤?(例如:相加数字的动作)
输出 (Output):程序最终应显示什么结果?(例如:两个数字的总和)

想象你正在煮即食面。
输入:面、热水、调味包。
处理:1. 打开盖子。2. 加入调味料。3. 倒水。4. 等待3分钟。
输出:一碗美味的面条!

有时候,一个问题可能太大。所以我们使用分解问题 (decomposition) — 将大问题分解成更小、更易于管理的小问题。解决许多小问题,远比解决一个巨大问题要容易得多。

b. 设计算法

算法 (algorithm) 只是解决问题的一系列步骤说明,一个比较专业的术语。它是你给电脑的“食谱”。在我们编写代码之前,有两种常用方法来记录我们的算法。

伪代码

伪代码 (Pseudocode) 意指“假的程序代码”。这是一种使用简单英语来写出算法的方式,但其结构看起来有点像真实的程序编写。它没有严格的规则,但能帮助你组织思绪。

例子:找出两个数字平均值的算法。
1. 从使用者取得第一个数字(我们称之为 Num1)。
2. 从使用者取得第二个数字(我们称之为 Num2)。
3. 将 Num1 和 Num2 相加来计算总和 (Sum)。
4. 将总和 (Sum) 除以 2 来计算平均值 (Average)。
5. 向使用者显示平均值 (Average)。

程序流程图

流程图 (flowchart) 是一种使用标准符号来表示算法的视觉化方法。它帮助你“看见”程序的流程。

常用符号:

椭圆形 (终止符):用于表示“开始”和“结束”点。
平行四边形 (输入/输出):用于获取输入或显示输出。
矩形 (处理):用于计算或赋值等动作。
菱形 (判断):当程序需要做出选择时使用(例如:IF 语句)。它总是会有两个输出路径:“是”和“否”。
箭头 (流程线):显示程序流程的方向。

干跑与跟踪表

你如何知道你的算法是否有效,甚至不用编写代码?你可以假装自己是电脑!这称为干跑 (dry run)

跟踪表 (trace table) 帮助你记录算法每一步骤中变量的值。这是找出逻辑错误的一项重要技能。

重点提示:在编写任何实际代码之前,请务必使用伪代码或流程图等工具来规划你的解决方案。一个好的计划能为你节省大量时间!




2. 程序的基石:变量、数据与运算符

程序与数据协同运作。为了处理数据,我们需要将它储存在某处并给予一个名称。这就是变量和常量发挥作用的地方。

a. 变量与常量

变量 (variable) 就像一个有标签的盒子,你可以将信息储存在里面。盒子里的信息可以随时改变。例子:`userScore`(使用者分数)、`age`(年龄)、`name`(姓名)。

常量 (constant) 是一个内容设定一次后就永远不能更改的盒子。例子:`PI = 3.14159`(圆周率π)、`MAX_ATTEMPTS = 3`(最大尝试次数)。

b. 数据类型

电脑需要知道你正在储存的是哪数据。这称为数据类型 (data type)

整数 (Integer):储存整数。(例如:10, 0, -99)
实数 / 浮点数 (Real / Float):储存带有小数点的数字。(例如:98.6, 3.14, -0.05)
字符 (Character):储存单个字母、数字或符号。(例如:'A', '7', '$')
字符串 (String):储存一串字符(文字)。(例如:「Hello World」、「陈先生」)
布尔值 (Boolean):只能有两个值:真 (True)假 (False)。它就像一个电灯开关:开或关。

快速回顾:选择数据类型
你的年龄? -> 整数
一杯饮料的价格? -> 实数
你的成绩(A, B, C)? -> 字符
你的名字? -> 字符串
门是开着的吗? -> 布尔值

c. 简单数据结构:数组

数组 (array)(或列表)是相同数据类型的项目集合,它们储存在一起。把它想象成一排储物柜或一个鸡蛋纸盒。每个“储物柜”都有一个索引号码,以便你可以直接存取它。

例子:一个名为 `scores` 的数组,用来储存5位学生的测验分数。
`scores` = [85, 92, 78, 66, 95]

要取得第二位学生的分数,你可能会使用 `scores[1]` (在许多编程语言中,索引是从0开始的!)。

d. 运算符:动作词

运算符是用于对数据执行操作的符号。

算术运算符 (Arithmetic Operators):用于数学运算!`+`(加)、`-`(减)、`*`(乘)、`/`(除),以及 `mod`(取模运算,返回除法的余数。例如:10 mod 3 的结果是 1)。

关系运算符 (Relational Operators):用于比较事物。它们的结果总是一个布尔值(真/假)。
`==`(等于)、`!=` 或 `<>`(不等于)、`>`(大于)、`<`(小于)、`>=`(大于或等于)、`<=`(小于或等于)。

布尔 (逻辑) 运算符 (Boolean (Logical) Operators):用于组合真/假条件。
AND(与):两个条件都必须为真。(例如:`age > 18 AND hasTicket == True`)
OR(或):至少一个条件必须为真。(例如:`day ==