欢迎来到程序编写基础!
在本章中,我们将深入探讨计算机科学的核心:程序编写 (Programming)。在这里,你将学习如何向计算机发出指令以解决问题。你可以把程序员想象成编写食谱的厨师;如果指令清晰且顺序正确,成品就会很完美。如果指令一团糟,“蛋糕”(或程序)就不会成功!
如果有些术语起初听起来像外语,别担心,我们会将所有内容拆解成简单易懂的小步骤。
2.2.1 程序代码的构建模块
变量 (Variables) 与常量 (Constants)
当我们编写程序时,需要存储数据以便日后使用。我们使用变量和常量来完成这项工作。
类比:想象一个储物箱。
- 变量 (Variable) 是一个内容可以改变的盒子。例如,游戏中标记为“分数 (score)”的盒子,它从 0 开始,然后变为 10。
- 常量 (Constant) 是一个一旦放入东西就密封起来的盒子。例如,\( \pi \) 的值 (3.141) 或地球的“重力 (Gravity)”。在程序运行期间,这些值始终保持不变。
赋值 (Assignments)、输入 (Inputs) 与输出 (Outputs)
为了使我们的程序具有互动性,我们使用这三种操作:
1. 输入 (Input): 从用户那里获取数据(例如:询问他们的名字)。
2. 输出 (Output): 向用户显示数据(例如:在屏幕上打印“Hello”)。
3. 赋值 (Assignment): 使用 = 符号为变量指定一个值。
示例:score = 10(这意味着“变量 score 现在存储了 10 这个值”)。
程序编写结构 (Programming Constructs)
程序的执行流程有三种方式,你必须掌握:
- 顺序 (Sequence): 指令按特定的顺序逐一执行。
- 选择 (Selection): 程序使用 IF 陈述式来做出决策,这就像是路口的分岔。
- 迭代 (Iteration): 这只是循环 (Loops) 的高级说法。我们重复执行代码,直到任务完成为止。
快速回顾:
- 计数控制循环 (Count-controlled loops): 重复指定的次数(例如:FOR i = 1 to 10)。
- 条件控制循环 (Condition-controlled loops): 当某个条件为真时重复执行(例如:WHILE lives > 0)。
运算符 (Operators):编码中的数学
你需要为了考试认清这些运算符:
算术运算符 (Arithmetic Operators):
- + (加)
- - (减)
- * (乘)
- / (除)
- ^ (指数 / 幂运算)
- MOD: 除法后的余数(例如:\( 10 \text{ MOD } 3 = 1 \))。
- DIV: 除法后的整数商(例如:\( 10 \text{ DIV } 3 = 3 \))。
比较运算符 (Comparison Operators):
- == (等于)
- != (不等于)
- < (小于)
- <= (小于或等于)
- > (大于)
- >= (大于或等于)
重点归纳: 程序是通过顺序、选择和迭代构建的。使用变量来存储会变化的数据,使用常量来存储不会变化的数据。
2.2.2 数据类型 (Data Types)
每一项数据都有一个“类型”,告诉计算机如何处理该数据。
- 整数 (Integer): 整数(例如:5, -10, 0)。
- 实数 (Real 或 Float): 带有小数点的数字(例如:15.5, -0.01)。
- 布尔值 (Boolean): 只有两个值:True(真)或 False(假)。
- 字符 (Character): 单个字母、数字或符号(例如:'A', '!', '3')。
- 字符串 (String): 一连串的字符组合(例如:"Hello World")。
强制类型转换 (Casting)
有时我们需要将数据从一种类型转换为另一种,这称为强制类型转换 (Casting)。
示例: 如果用户输入“18”,计算机会将其视为字符串。为了对它进行数学运算,我们必须将其转换 (Cast) 为整数。
常见错误: 忘记你不能将字符串与整数相加!除非你将字符串 "5" 转换为数字 5,否则 "5" + 5 会导致错误。
2.2.3 进阶程序编写技术
字符串操作 (String Manipulation)
我们主要可以用两种方式操作字符串:
1. 串接 (Concatenation): 将两个字符串合并在一起(例如:"Foot" + "ball" = "Football")。
2. 切片 (Slicing): 从字符串中截取一段(例如:取 "Computer" 的前三个字母得到 "Com")。
数组 (Arrays / Lists)
数组是一种静态结构,用于在一个名称下存储多个相同数据类型的项目。
- 一维数组 (1D Array): 就像单排储物柜,每个储物柜都有一个索引 (index)(通常从 0 开始)。
- 二维数组 (2D Array): 就像表格或电子表格,你需要两个坐标(行和列)才能找到一个项目。
记忆小撇步:永远记住,计算机从 0 开始计数,而不是 1!
文件处理 (File Handling)
程序通常需要在关闭后存储数据,我们使用外部文件来做到这一点:
- 打开 (Open): 准备好文件以供使用。
- 读取 (Read): 将文件中的数据读入程序。
- 写入 (Write): 将数据从程序存入文件。
- 关闭 (Close): 保存更改并确保文件完整性。
子程序 (Sub Programs):函数 (Functions) 与过程 (Procedures)
与其重复编写相同的代码 100 次,不如将其封装在一个子程序中并给它命名。
- 过程 (Procedures): 执行一项任务。
- 函数 (Functions): 执行一项任务并将值返回 (RETURN) 给主程序。
作用域 (Scope - 本地与全局):
- 全局变量 (Global Variables): 可被整个程序看到并使用。
- 本地变量 (Local Variables): 仅在建立它们的子程序内部“存活”。使用本地变量能让代码更简洁并避免错误!
结构化查询语言 (SQL)
SQL 用于搜索数据库。你只需要知道三个关键字:
- SELECT: 你想要哪些字段(行)?
- FROM: 你在查看哪个表格?
- WHERE: 条件是什么?(例如:WHERE Price > 10)
示例:SELECT Name FROM Students WHERE Grade == 'A'
你知道吗? 你使用的大多数应用程序,如 Instagram 或 Spotify,都使用类似 SQL 的语言在巨大的数据库中搜索你的照片或歌曲!
重点归纳: 使用子程序让你的代码“模块化”(拆分为不同部分)。使用 SQL 在表格中寻找特定数据。
总复习
1. 顺序、选择和迭代是程序执行的三种方式。
2. 变量会变;常量不会。
3. MOD 算出余数,DIV 算出整数商。
4. 强制类型转换 (Casting) 可改变数据类型(例如:字符串转整数)。
5. 函数有返回值;过程没有。
6. SQL 使用 SELECT, FROM 和 WHERE 来寻找数据。