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