主题 7 · 算法设计与问题解决
验证与核实
范围、长度、类型、存在性、格式和校验位检查,以及双重输入和目视检查。
第 4 课,共 5 课大纲 7.5更新于 2026年10月31日
验证
验证(validation)是程序在接受数据之前自动检查数据是否合理、是否符合规定的规则。它无法判断数据是否正确:即使你其实 16 岁,输入 15 也能通过范围检查。
| 检查 | 确保…… | 例子 |
|---|---|---|
| 范围 | 值在下限和上限之间 | 百分比在 0 到 100 之间 |
| 长度 | 数据的字符数恰好等于、或不少于/不多于某个数 | 密码至少 8 个字符 |
| 类型 | 数据是正确的数据类型 | 年龄是整数而不是文字 |
| 存在性 | 已经输入了数据,没有留空 | 电子邮件栏不为空 |
| 格式 | 数据符合某种模式 | 日期为 DD/MM/YYYY;代码为两个字母加四个数字 |
| 校验位 | 编码的最后一位与根据其他位算出的结果一致 | ISBN 和条形码 |
验证循环
REPEAT ... UNTIL 循环会一直询问,直到输入通过检查。这个例子做的是范围检查,每次拒绝时都会显示错误提示。
伪代码
DECLARE Mark : INTEGER
REPEAT
OUTPUT "Enter a mark from 0 to 100"
INPUT Mark
IF Mark < 0 OR Mark > 100
THEN
OUTPUT "Invalid mark, try again"
ENDIF
UNTIL Mark >= 0 AND Mark <= 100
OUTPUT "Accepted: ", Mark长度检查
LENGTH() 返回字符串中的字符个数,因此可用于长度检查。
伪代码
DECLARE Password : STRING
INPUT Password
WHILE LENGTH(Password) < 8 DO
OUTPUT "Password must be at least 8 characters"
INPUT Password
ENDWHILE核实
核实(verification)检查数据是否被准确地复制或输入,与原始数据一致。
- 双重输入:数据输入两次,再比较两次输入,就像设置新密码时要输入两遍。
- 目视检查:用户阅读屏幕上的数据,并与原始文件对照。
核心概念: 验证:数据合理吗?核实:数据和原始数据一样吗?
关键术语
- 验证
- 在接受数据前自动检查数据是否合理。
- 核实
- 检查数据是否被准确复制或输入。
- 范围检查
- 检查值是否在规定的界限之内。
- 双重输入
- 把数据输入两次并比较两次的结果。
自我检测
哪种验证检查确保某栏没有留空?查看答案
存在性检查。
为什么数据通过了验证仍可能是错的?查看答案
验证只检查数据是否合理、是否符合规则,而不检查它是否是真实的值。
为英国邮编(如 CB2 1TN)建议一种验证检查。查看答案
格式检查(字母和数字按正确的模式排列),或长度检查。