Lisp在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
lisp 测试 发布于:2024-08-14 13:24 common lisp exercise 10.2 发布于:2024-04-27 16:53 做个小测试, 发布于:2024-03-14 09:53 桥梁安全计算lisp 发布于:2023-10-24 09:36 定义函数 newCalc,接受两个参数 x 和 y 发布于:2023-09-23 16:06 判断两数之和大于第三个数 发布于:2023-09-01 16:21 分数陈述性知识 发布于:2023-08-24 22:27 CAD面积/体积计算 发布于:2023-04-19 12:08 测试lisp语言 发布于:2023-04-10 15:03 计算list中某一元素数量 发布于:2023-02-16 11:32 LISP 初体验 发布于:2021-08-11 13:16 XY坐标标注CAD插件 发布于:2021-06-11 15:25 format t 输出语句 发布于:2020-08-10 18:21 print 输出语句 发布于:2020-08-10 18:20 write 输出语句 发布于:2020-08-10 18:16 write-line 输出语句 发布于:2020-08-10 18:14 循环输出内容 发布于:2020-08-10 18:11 [更多]
显示目录

循环



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

循环

代码块需要被执行多次,就叫循环

LISP提供的结构来处理循环要求以下类型。点击以下链接,查看其详细信息。

Construct 描述
loop 循环loop结构是迭代通过LISP提供的最简单的形式。在其最简单的形式,它可以重复执行某些语句(次),直到找到一个return语句。
loop for loop结构可以实现一个for循环迭代一样作为最常见于其他语言。
do do 结构也可用于使用LISP进行迭代。它提供了迭代的一种结构形式。
dotimes dotimes构造允许循环一段固定的迭代次数。
dolist dolist来构造允许迭代通过列表的每个元素。

循环loop结构

循环loop结构是迭代通过LISP提供的最简单的形式。在其最简单的形式,它可以重复执行某些语句(次),直到找到一个return语句。

它的语法如下:


(loop (s-expressions))

例子

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:

(setq a 10)
(loop 
   (setq a (+ a 1))
   (write a)
   (terpri)
   (when (> a 17) (return a)))

当执行的代码,它返回以下结果:

11
12
13
14
15
16
17
18

请注意,没有return语句,循环宏会产生一个无限循环。

循环的构造

loop结构可以实现一个for循环迭代一样作为最常见于其他语言。

它可以

  • 设置为迭代变量

  • 指定表达式(s)表示,将有条件终止迭代

  • 对于执行某些任务在每次迭代中指定表达式的结果,

  • 做一些任务而退出循环之前指定表达式(s)和表达式

在for循环的结构如下几种语法:

(loop for loop-variable in <a list>
   do (action))

(loop for loop-variable from value1 to value2
   do (action))

示例1

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:

(loop for x in '(tom dick harry)
     do (format t " ~s" x)
)

当单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:

TOM DICK HARRY

示例2

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:

(loop for a from 10 to 20
     do (print a)
)

当单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:

10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20

示例3

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:

(loop for x from 1 to 20
  if(evenp x)
  do (print x)
)

当单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:

2 
4 
6 
8 
10 
12 
14 
16 
18 
20

do构造

do结构也可用于使用LISP进行迭代。它提供了迭代的一种结构形式。

do语句的语法:

(do (variable1       value1       updated-value1)
    (variable2       value2      updated-value2)
    (variable3       value3       updated-value3)
    ...
(test     return-value)
(s-expressions))

每个变量的初始值的计算和结合到各自的变量。每个子句中更新的值对应于一个可选的更新语句,指定变量的值将在每次迭代更新。

每次迭代后,将测试结果进行评估计算,并且如果它返回一个nil 或 true,则返回值被求值并返回。

最后一个S-表达式(s)是可选的。如果有,它们每一次迭代后执行,直到测试返回true值。

示例

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:

(do ((x 0 (+ 2 x))
    (y 20 ( - y 2)))
    ((= x y)(- x y))
    (format t "~% x = ~d  y = ~d" x y))

当单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:

x = 0  y = 20
x = 2  y = 18
x = 4  y = 16
x = 6  y = 14
x = 8  y = 12

dotimes 构造

dotimes构造允许循环一段固定的迭代次数。

实例,

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:

(dotimes (n 11)
    (print n) (prin1 (* n n)))

当单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:

0 0
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
10 100

dolist 构造

dolist来构造允许迭代通过列表的每个元素。

实例,

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:

(dolist (n '(1 2 3 4 5 6 7 8 9))
    (format t "~% Number: ~d Square: ~d" n (* n n)))

当单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:

Number: 1 Square: 1
Number: 2 Square: 4
Number: 3 Square: 9
Number: 4 Square: 16
Number: 5 Square: 25
Number: 6 Square: 36
Number: 7 Square: 49
Number: 8 Square: 64
Number: 9 Square: 81

退出块

块返回,从允许从正常情况下的任何错误的任何嵌套块退出。

块功能允许创建一个包含零个或多个语句组成的机构命名块。语法是:

(block block-name(
...
...
))

返回 - 从函数接受一个块名称和可选(默认为零)的返回值。

下面的例子演示了这一点:

创建一个名为main.lisp一个新的源代码文件,并在其中输入如下代码:


(adsbygoogle = window.adsbygoogle || []).push({});

(adsbygoogle = window.adsbygoogle || []).push({});
(defun demo-function (flag)
    (print 'entering-outer-block)
    (block outer-block
      (print 'entering-inner-block)
      (print (block inner-block
               (if flag
                 (return-from outer-block 3)
                 (return-from inner-block 5))
               (print 'This-wil--not-be-printed)))
      (print 'left-inner-block)
      (print 'leaving-outer-block)
      t))
(demo-function t)
(terpri)
(demo-function nil)

当单击Execute按钮,或按下Ctrl+ E,LISP立即执行它,返回的结果是:

ENTERING-OUTER-BLOCK 
ENTERING-INNER-BLOCK 

ENTERING-OUTER-BLOCK 
ENTERING-INNER-BLOCK 
5 
LEFT-INNER-BLOCK 
LEAVING-OUTER-BLOCK
由JSRUN为你提供的Lisp在线运行、在线编译工具
        JSRUN提供的Lisp 在线运行,Lisp 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout