文档

主题 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)建议一种验证检查。查看答案

格式检查(字母和数字按正确的模式排列),或长度检查。