选择数据类型(data type)就是决定一个变量(variable)存哪一类值,以及程序可以对它做什么。考试会直接问某个值的类型,或者给一个小情景,要求你为它声明变量。
本课属于程序结构模块。剑桥风格伪代码里常用五种类型:INTEGER、REAL、STRING、CHAR 和 BOOLEAN。类型名称请到剑桥科目页面核对你考试年份的版本。
我该怎样判断用哪种类型?
对这个值问两个问题。第一,它长什么样:整数、带小数的数、文字、单个字符,还是真/假?第二,程序要拿它做什么:计算、比较、拼接,还是测试?
| 类型 | 存放内容 | 示例值 |
|---|---|---|
| INTEGER | 整数 | 24 |
| REAL | 带小数部分的数 | 12.50 |
| STRING | 零个或多个字符 | “Maya” |
| CHAR | 恰好一个字符 | ‘B’ |
| BOOLEAN | TRUE 或 FALSE | TRUE |
第二个问题能帮你拍板。由数字组成的值不一定是数:如果你不会拿它做计算,它就是文字。
例题
某虚构学校的食堂为每个商品存一条记录。请为每个字段选类型并声明。
- 商品编码,例如 “0457”
- 库存数量,例如 36
- 价格(令吉),例如 3.50
- 尺寸字母 S、M 或 L
- 商品是否有清真认证,TRUE 或 FALSE
商品编码。 它由数字组成,但没有人会把两个编码相加。它以必须保留的零开头。所以是 STRING。
库存数量。 库存按整件计算,所以是 INTEGER。
价格。 它有小数部分,所以是 REAL。
尺寸字母。 从固定集合里取恰好一个字符,所以是 CHAR。
是否认证。 只有两种状态,所以是 BOOLEAN。
DECLARE ItemCode : STRING
DECLARE Quantity : INTEGER
DECLARE Price : REAL
DECLARE Size : CHAR
DECLARE IsCertified : BOOLEAN
快速核对:库存总值是 Quantity × Price = 36 × 3.50 = 126.00,结果是 REAL。INTEGER 乘 REAL 得到 REAL。
最常见的错误是什么?
错误答案:“商品编码 0457 由数字组成,所以用 INTEGER。”
把 0457 存进 INTEGER,开头的零就丢了,值变成 457。另一个商品可能真的编码为 457,于是两个不同商品看起来一模一样。
纠正方法就是上面的测试:程序会拿它做计算吗?编码、电话号码或邮政编码只是用来识别事物,从不相加,所以用 STRING。
另一个相关的错误是用 INTEGER 存平均分。平均分 72.5 需要 REAL,否则小数部分会丢失。
自测
1. 为一个班级的学生人数选择类型。
显示答案
INTEGER。学生人数按整数计算。
2. 为邮政编码 08000 选择类型。
显示答案
STRING。它不参与计算,而且开头的零必须保留。
3. 为 (a) 成绩字母 ‘A’ 和 (b) 15 / 4 的结果选择类型。
显示答案
(a) CHAR,单个字符。(b) REAL,因为 15 / 4 = 3.75 带小数部分。
接下来学什么?
变量有了正确的类型,下一个问题是它们能在哪里使用,这部分在局部与全局作用域里讲。受限伪代码追踪训练器可以让你一步步追踪短例子,安全 Python 推理沙盒则用 Python 展示同样的想法。
如果你能说出类型,却在理由上丢分,我们的一对一线上 Computer Science 补习可以和你一起练习作答的表达。