跳到正文
IGCSE·Tuition
计算机科学 · 课程

根据需求选择验证规则

题目给你一句程序必须接受什么的描述,你要说出执行它的那一种检查。

本页内容
  1. 哪种检查对应哪种需求?
  2. 例题
  3. 要小心的错误
  4. 自我检测
  5. 接下来学什么?

验证(validation)是程序在使用数据之前,自动检查数据是否合理并被允许。考试里通常给你一句日常语言写的需求,要你说出是哪种检查,或把它写出来。关键技能是把需求中的字眼对应到正确的检查类型。

这是验证、核实与测试单元的第一课。

哪种检查对应哪种需求?

读需求,找出关键词,它会告诉你该用哪种检查。

需求的措辞检查测试什么
“必须在 13 到 17 之间”范围检查数值在下限和上限之内
“至少 8 个字符”长度检查字符个数
“必须是整数”类型检查数据属于正确的数据类型
“不能留空”存在检查已经输入了内容
“两个字母加三个数字”格式检查字符符合固定模式

**校验位(check digit)**是另一种验证方法,用于条形码等号码。它在数据传输与检查中讲解。

例题

一个虚构的学校社团要求填写成员年龄。需求是:“年龄必须是 13 到 17 的整数(含 13 和 17)。”

第 1 步,找关键词。“整数”关乎数据类型,“13 到 17”关乎界限。

**第 2 步,说出检查名称。**类型检查(整数)和范围检查。

**第 3 步,写出范围检查。**一直询问,直到数值被接受:

REPEAT
  INPUT Age
  IF Age < 13 OR Age > 17 THEN
    OUTPUT "Age must be 13 to 17"
  ENDIF
UNTIL Age >= 13 AND Age <= 17

第 4 步,用输入 20、12、15 追踪(trace)。

输入Age < 13 OR Age > 17提示信息UNTIL 为真?
20TRUE(20 > 17)显示否
12TRUE(12 < 13)显示否
15FALSE无是

循环在 15 时结束,所以程序只会带着被接受的值继续运行。

长度检查的写法相同。下面的密码至少需要 8 个字符:

REPEAT
  INPUT Password
  IF LENGTH(Password) < 8 THEN
    OUTPUT "At least 8 characters needed"
  ENDIF
UNTIL LENGTH(Password) >= 8

要小心的错误

错误答案:“范围检查确保密码够长。”

学生记得”检查”这个词,却没记住它测试的是哪一种属性。

密码长度是长度检查,因为它数字符个数。范围检查是把数值和界限比较。说出检查名称之前,先念出被测试的是什么:数值大小、字符个数、数据类型、有没有输入,还是模式。

自我检测

1. 表格写着:“考试分数必须在 0 到 100 之间。“请说出检查名称。

Show answer

范围检查,下限 0,上限 100。

2. 表格写着:“电子邮件栏不能留空。“请说出检查名称,并说明它能否证明邮件是真的。

Show answer

存在检查。它不能证明邮件是真的,只能证明有人输入了内容。

3. 学生代码必须正好是”CS”加三个数字,例如 CS417。这是哪种检查?CS999 能通过吗?

Show answer

格式检查。CS999 能通过,因为符合模式,即使没有学生拥有这个代码。验证检查的是模式,不是真实性。

接下来学什么?

下一课说明为什么核实(verification)和验证是不同的工作。之后你会为这样的检查设计测试数据。你可以在受限伪代码追踪训练器中逐步运行上面的循环,然后做综合练习。

如果选对检查名称一直是个问题,这正是我们在一对一线上计算机科学补习中会帮你处理的。

常见问题

什么是验证检查(validation check)?

验证检查是程序在数据输入时自动执行的测试,用来判断数据是否合理并被允许。数据不通过时,程序会拒绝并要求重新输入。验证无法证明数据是真实的值,只能证明数据可以被接受。

范围检查和长度检查要怎么选?

范围检查(range check)看数值是否落在两个界限之间,例如年龄 13 到 17。长度检查(length check)数字符个数,例如密码至少 8 个字符。先问自己:需求讲的是数值多大,还是有几个字符。

什么是格式检查(format check)?

格式检查测试数据是否符合固定模式,例如两个字母加三个数字,如 CS417。它检查字符的排列,不检查这个代码是否真的存在。存在检查(presence check)只测试有没有输入内容。

我应该用伪代码还是 Python 写检查?

按题目要求。剑桥风格的伪代码是稳妥的默认选择,这里的伪代码使用 IF、REPEAT、UNTIL 关键字和 LENGTH 函数。自己练习时可以用 Python,检查的逻辑不会改变。

更新于:

下一步

如果你知道各种检查的名称,但在时间压力下仍选错,一对一的老师可以给你新的需求来分类,并当场纠正你的推理。

一小时付费试听课,按所安排老师确认的收费,RM80 起。 其他费用、时间安排及后续课程,在试听课后由家长与老师直接确认。

补习由家长或监护人安排。用 WhatsApp 把这页发给他们,他们就可以替你咨询。

是家长或监护人?在这里咨询

已通过我们的服务帮助 9,000+ 名学生