跳到正文豫言教程

第 4 章:条件判断

要返回两个数中较大的一个,需要先比较,再选择结果。豫言的条件表达式写成 若……则……否则……,整段表达式会产生一个值。

比较得到布尔值

豫言把布尔类型称为 「爻」:「阳」 表示真,「阴」 表示假。标准库的整数比较函数包括 「等于」、「大于」 和 「小于」。

例如,「大于」于「八」于「一三」 判断 8 是否大于 13,结果为 「阴」。这里的参数顺序很重要,交换两个参数会改变比较的含义。

完整程序:返回较大的数

寻观「豫章」之书。

「较大者」乃化「数」又化「数」为「数」者也。
「较大者」者得「甲」又得「乙」而
 若「甲」大于「乙」则「甲」否则「乙」
也。

「书」于(「述数」于(「较大者」于「八」于「一三」))。

运行后输出 13。求值过程是:比较 8 和 13,条件为假,因此选择 否则 后的 13。把输入交换后,条件为真,选择 则 后的 13。

两个分支都是整数,所以整个条件表达式可以作为这个函数的返回值。如果一个分支返回整数,另一个分支返回字符串,就不符合这里声明的返回类型。

同时检查两个条件

判断一个整数是否严格大于 1 且小于 10,可以写成下面的表达式,假设 「数」 已经定义:

(「大于」于「数」于「一」)且(「小于」于「数」于「一零」)

且 要求两个条件都为真,或 表示至少一个条件为真,「非」于 条件 把真假反转。边界值 1 和 10 不满足这里的条件。

且、或 先计算左边的条件:且 的左边为假、或 的左边为真时,结果已经确定,右边的条件不再计算。所以右边可以放只在左边成立时才安全的计算,例如先判断除数不为零,再取余。或 比 且 结合得松;它们与 于 等其他写法连用时,用括号把每个条件括起来。

标准库另有同名的普通函数 「且」、「或」,它们先计算两个参数,可以当作值传给别的函数。

练习

写一个 「绝对值」 函数:输入小于零时,用 「减」于「零」于「数」 求相反数;否则返回输入。分别用 0、5 和 「减」于「零」于「五」 测试,结果应为 0、5、5。三个输入分别覆盖边界、正数和负数。

上一章 · 下一章:自定义数据类型 · 目录