跳到正文豫言豫言教程与指南

第 3 章:定义和调用函数

这一章计算两个数的平方和。例如,输入 3 和 4,应得到 3 × 3 + 4 × 4 = 25。把这段计算写成函数,就能换一组输入继续使用。

先读懂一个参数的函数

平方函数的定义如下:

「平方」乃化「数」为「数」者也。
「平方」者得「其数」而
 「其数」乘「其数」
也。

化「数」为「数」 表示接收整数、返回整数。得「其数」而…… 给输入参数起名为 「其数」,后面的表达式计算返回值。函数体的结果就是函数的结果,不需要另外写返回语句。

调用写成 「平方」于「三」。定义函数使用 得,调用函数使用 于,要分清两者。

接收两个参数

下面是本章的完整程序:

寻观「豫章」之书。

「平方和」乃化「数」又化「数」为「数」者也。
「平方和」者得「甲」又得「乙」而
 令「甲方」为「甲」乘「甲」而
 令「乙方」为「乙」乘「乙」而
 「甲方」加「乙方」
也。

「书」于(「述数」于(「平方和」于「三」于「四」))。

运行后输出 25。两个 得 依次接收参数,调用处的两个 于 按同样的顺序传入 3 和 4。

函数类型也按这个顺序阅读:先接收一个整数,再接收一个整数,最后返回整数。更准确地说,只传入第一个参数时,得到的是一个等待第二个参数的函数。因此 「平方和」于「三」 本身仍然是函数。

用局部名称保存中间结果

令「甲方」为……而…… 先计算 者 后的表达式,把结果命名为 「甲方」,然后在 而 后的表达式中使用它。本例依次得到 甲方 = 9、乙方 = 16,最后相加。

这些名称只在对应的局部范围内可用,文件末尾不能直接打印 「甲方」。局部名称特别适合把长表达式拆成几个有明确含义的步骤。

给嵌套调用加括号

「加」于(「乘」于「二」于「三」)于「四」

这表示先算 2 × 3,再加 4。连续的 于 属于同一串调用;如果要把另一次调用的结果作为参数,就用括号把它括起来。缩进不能改变调用的分组。

练习

定义 「立方」,再写 「立方和」 调用它。输入 2 和 3 时应得到 35。尽量让立方和只负责调用和相加,不重复写两份乘法。需要排查结果时,可以先单独打印两个立方的结果。

上一章 · 下一章:条件判断 · 目录