在LispWorks中进行编程06:定义程序

  • 0

在LispWorks中进行编程06:定义程序

Category:UI界面编写 Tags : 

定义程序

到目前为止,我们只使用Listener作为计算器来评估表达式。在本课中,我们将向前迈进一大步,向您展示如何定义自己的程序。一旦定义了一个过程,它就具有与内置过程相同的状态,如list+

让我们定义一个返回两个数字平均值的过程。

总之,找到两个数字的平均值的过程是:

  • 将第一个数字添加到第二个数字。
  • 将总和除以2。

定义一个程序:defun

要定义过程,请使用特殊运算符  defun这是define函数的缩写  ,但Lisp过程在数学意义上不是严格的函数。

我们可以编写如下平均程序:

(defun average (1st-number 2nd-number)
(/ (+ 1st-number 2nd-number) 2))

defun的第一个参数给出了程序的名称,我们选择它作为平均值

第二个参数  (第1个第2个数字)是所谓参数的列表。这些符号表示我们将在稍后的过程中引用的数字。

定义的其余部分  /+ 1st-number 2nd-number2被称为过程的主体。它告诉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

Leave a Reply

搜索

分类目录

公 告

本网站学习论坛:

www.zhlisp.com

lisp中文学习源码:

https://github.com/zhlisp/

欢迎大家来到本站,请积极评论发言;

加QQ群学习交流。