LISP - Bucles

Puede haber una situación en la que necesite ejecutar un bloque de números de código de veces. Una declaración de bucle nos permite ejecutar una declaración o grupo de declaraciones varias veces y, a continuación, se encuentra la forma general de una declaración de bucle en la mayoría de los lenguajes de programación.

LISP proporciona los siguientes tipos de construcciones para manejar los requisitos de bucle. Haga clic en los siguientes enlaces para verificar su detalle.

No Señor. Construcción y descripción
1 lazo

los loopLa construcción es la forma más simple de iteración proporcionada por LISP. En su forma más simple, le permite ejecutar algunas declaraciones repetidamente hasta que encuentre unareturn declaración.

2 bucle para

El bucle for le permite implementar una iteración tipo bucle for como la más común en otros lenguajes.

3 hacer

La construcción do también se usa para realizar iteraciones usando LISP. Proporciona una forma estructurada de iteración.

4 dotimes

La construcción dotimes permite realizar un bucle para un número fijo de iteraciones.

5 lista de tareas

La construcción dolist permite la iteración a través de cada elemento de una lista.

Salir con gracia de un bloque

los block y return-from le permite salir con gracia de cualquier bloque anidado en caso de cualquier error.

los blockLa función le permite crear un bloque con nombre con un cuerpo compuesto por cero o más declaraciones. La sintaxis es -

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

los return-from La función toma un nombre de bloque y un valor de retorno opcional (el predeterminado es nulo).

El siguiente ejemplo demuestra esto:

Ejemplo

Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él:

(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)

Cuando hace clic en el botón Ejecutar, o escribe Ctrl + E, LISP lo ejecuta inmediatamente y el resultado devuelto es:

ENTERING-OUTER-BLOCK 
ENTERING-INNER-BLOCK 

ENTERING-OUTER-BLOCK 
ENTERING-INNER-BLOCK 
5 
LEFT-INNER-BLOCK 
LEAVING-OUTER-BLOCK