在LispWorks中进行编程06:定义程序
Category:UI界面编写定义程序
到目前为止,我们只使用Listener作为计算器来评估表达式。在本课中,我们将向前迈进一大步,向您展示如何定义自己的程序。一旦定义了一个过程,它就具有与内置过程相同的状态,如list和+。
让我们定义一个返回两个数字平均值的过程。
总之,找到两个数字的平均值的过程是:
- 将第一个数字添加到第二个数字。
- 将总和除以2。
定义一个程序:defun
要定义过程,请使用特殊运算符 defun。这是define函数的缩写 ,但Lisp过程在数学意义上不是严格的函数。
我们可以编写如下平均程序:
(defun average (1st-number 2nd-number)
(/ (+ 1st-number 2nd-number) 2))
defun的第一个参数给出了程序的名称,我们选择它作为平均值。
第二个参数 (第1个第2个数字)是所谓参数的列表。这些符号表示我们将在稍后的过程中引用的数字。
定义的其余部分 (/(+ 1st-number 2nd-number)2)被称为过程的主体。它告诉Lisp如何计算过程的值,在这种情况下,将数字相加并除以2。
用于参数的单词是任意的,只要它们与您在过程定义中使用的单词匹配即可。所以你可以写下平均 程序如下:
(defun average (a b)
(/ (+ a b) 2))
要定义它,我们可以在Lisp提示符下键入定义:
CL-USER > (defun average (1st-number 2nd-number) (/ (+ 1st-number 2nd-number) 2))AVERAGE
或者,您可以在Lisp Editor中键入定义,然后选择Compile Buffer来评估它。
我们可以试试:
CL-USER 13 > (average 7 9)
8
要么:
CL-USER 14 > (average (+ 2 3) (+ 4 5))
7
请记住,在将参数赋予过程之前对其进行评估。
没有参数的程序
过程不必具有任何参数。这是一个程序 骰子,返回从1到6的随机骰子:
(defun dice () (+ 1 (random 6)))
要调用该过程,您只需编写:
CL-USER 10 > (dice)5
演习
1.一个数字
定义一个返回数字平方的过程 方块。检查:
(square 7)
给49。
2.找到第n个三角形数字
定义一个三角形 过程 ,给出定义为n(n + 1)/ 2的第n个三角形数字,并检查:
(triangular 10)
给出55。
3.找到扔两个骰子的结果
定义一个过程 两个骰子,返回投掷两个骰子的总结果。
http://mip.i3geek.com