有关Lisp语言中的Do循环,就像很多人说的一样,初看起来太奇怪了,不知道怎么理解。所以在这里做一个简单的介绍,看完大家可以发现其实Lisp中的do循环也是比较简单的。
先看看Lisp语言中对于do循环的说明:
(do (variable-definitions*)
(end-test-form result-form*)
statement*)
翻译成“中文”大概意思是这样的:
(do (变量定义)
(结束条件 返回值)
循环主体)
其中的“变量定义”又有一些格式,展开大概是这个样子的:
(do ((变量名 变量初值 (变量变化语句)))
(结束条件 返回值)
循环主体)
现在我们希望定义一个变量x,x的初值是1,每次循环x=x+1,当x>10时结束循环,在循环主体中通过format函数输出变量x,则它的Lisp代码是这个样子的:
(do ((x 1 (1+ x)))
((> x 10) nil)
(format t "in the loop~a ~%" x))
为了让各位程序员更好地理解以上Lisp代码,在这里列出对应的java代码:
int x=1;
while (x<=10)
{
System.out.println("in the loop "+x);
x=x+1;
}
注意这里没有使用java里的do while或者是do until循环,原因是java里的do while 和 do until循环都在执行循环主体后才进行判断,而Lisp中的do循环一开始就进行判断。
所以上面使用了java中的while循环,条件也变成了x<=10.
下面是Lisp中使用do循环的完整代码,定义了一个测试函数叫do-test,为了让输出更加清晰,在do循环前后分别加了一行输出。
(defun do-test ()
(format t "staring do loop~%")
(do ((x 1 (1+ x)))
((> x 10) nil)
(format t "in the loop~a ~%" x))
(format t "end of do loop~%"))
分享到:
相关推荐
AutoLISP例程:读取excel文件.doc
awesome-lisp语言:一系列Lisp风格的编程语言
语言程序设计资料:LISP语言教程.doc
micro-lisp::Christmas_tree:一种非常小的Lisp编程语言:grinning_face:过去不到200行C
本书是为专业程序员而写的。 它采用动手方法引入了ANSI Common Lisp标准。
陈光喜lisp语言,美妙的括号语言。2005 适合喜爱括号的人群们。。。。。
本程序为lisp语言编写的AutoCAD二次开发程序,包括lisp源程序代码和程序测试图。 本程序适合AutoCAD二次开发初学者学习之用,代码比较简单,所用函数也都是基本的函数,并且程序中包含详细注释。适合大学测绘、采矿...
CAD插件 可直接在CAD内进行+ - * / 或连加、连减、连乘、连除工作快捷键分别为+-*/或++、--、**、//,设定默认保留位置为+++
Lisp语言.陈光喜.2005.pdf
LISP语言(马希文).pdf
使用lisp语言进行autocad二次开发
lisp语言编写的在CAD中对多段线进行换向
简单的lisp语言教程,简单快速入门可用。
LISP语言在CAD方面的运用.pdf
AutoLISP是一种针对扩充及自订AutoCAD函数机能而产生,以LISP为基础的程序设计语言.LISP本身于50年代末期出现,是一种擅于处理串行文字(List of Processing),属第四代人工智能(Artificial Intelligence)的计算机...
Lisp语言入门.pdf,这个语言比较老,是用很多括号来进行编程的,非常奇怪,但至今依然被许多人用来学习,自然有其存在的价值。