Guia de Laboratorio Lisp Salinas-Zegarra
Guia de Laboratorio Lisp Salinas-Zegarra
Guia de Laboratorio Lisp Salinas-Zegarra
LISP
DOCENTE
DR. HUGO VEGA HUERTA
ALUMNOS
SALINAS LIENDO EDUARDO ALONSO
ZEGARRA VILLANUEVA JUAN DIEGO
2019-II
Guía de programación en LISP
1. INTRODUCCIÓN
En la presente guía fue hecha con el objetivo de encaminar al estudiante por sus primeros
pasos en LISP a fin de que pueda dominar sin problemas dicho lenguaje de programación.
QUOTE
Con este objetivo se suministra la función QUOTE . Una lista dentro de una
función QUOTE no se tratará de evaluar como llamada a una función. La llamada a la
función QUOTE se puede abreviar utilizando el signo apóstrofe < ’ >.
De esta manera podemos construir hasta 28 funciones distintas para acceso a listas.
Según Johnson* estas 28 concatenaciones se pueden dividir en cuatro grupos, tomando
como base la profundidad a que pueden acceder en listas anidadas en varios niveles.
1 Asignación
setq: Asiga valores a una variable
let y let*: Asigna valores a variables y genera listas de tal modo que en let las
modificaciones en la muestra de datos en pantalla de los valores son locales y
en let* son globales
(y nueve))
(y nueve))
(list nueve y))
2 Aritméticas
+, -, *, / : Son las operaciones para sumar, restar, multiplicar y dividir
3 Comparación
>, <, >=, <= : Mayor que, Menor que, Mayor o igual que, Menor o igual que. Só lo
nú meros
if, when, unless y case: Sirven para ejecutar o no acciones si se cumple una
condició n.
nilbody
length: cuenta el nú mero de elementos de nivel superior que hay en una lista.
replace: reemplaza los elementos de la seq1 con los elementos de seq2. seq1 se
modifica de manera destructiva
Ejemplo de uso:
Ejemplo de uso:
6 Manejo de cadenas
string=, string-equal: nos dice si dos cadenas son iguales, la diferencia entre
uno y otro es que string= diferencia minú sculas y mayú sculas y string-equal, no.
char=, char-equal: nos dice si dos caracteres son iguales, la diferencia entre uno
y otro es que char= diferencia minú sculas y mayú sculas y char-equal, no.
search: nos sirve para determinar si una cadena está contenida en otra. Si lo
está devolverá la posició n donde empieza la correspondencia, en otro caso
devuelve NIL.
7 Manejo de listas
setq: Asigna valores a una lista
push y pop: meter y sacar un elemento a una lista. Fíjate que podemos usar
cons y rest para esos menesteres, la diferencia es que aquí los cambios alteran
el contenido de la variable.
last: devuelve una lista en la que se han eliminado todos los elementos menos el
ú ltimo.
assoc: Sirve para recuperar elementos de una lista de asociació n. Una lista de
asociació n es una lista de sublistas, en la que el primer elemento de cada
sublista se utiliza como una clave para recuperar la sublista completa.
Ejemplo de uso: (setq sara '((estatura 1.7) (peso 65)))
Ejemplo de uso:
item
best))
'(1 4 6 5 8 2 7))
Ejemplo de uso: ((lambda (x) (list x x)) '(lambda (x) (list x x)))
-> programa q se escribe a si mismo
Ejemplo de uso:
Ejemplo de uso:
(dolist (i '(2 3 5 6))
Ejemplo de uso:
(defun nuevo-expt (m n)
(exponente n))
(return resultado))
Ejemplo de uso:
Ejemplo de uso:
(setq a "line 1
line2")
Ejemplo de uso:
(with-open-file (flujo-de-pacientes "pacientes.lsp"
**:direction :input)
11 Funciones de Recursivas
Obtener nú meros impares
Mayor elemento de una lista
Multiplos de 5
Problema 1
Rpta: (7 9 1)
Problema 3