Escolar Documentos
Profissional Documentos
Cultura Documentos
;; atoms reservados
CL-USER 2 > nil
NIL
CL-USER 3 > t
T
;; Para evaluar una lista se invoca a una funcin de la forma siguiente:
;; (funcin-name arg1 .argn)
CL-USER 4 > (+ 54 23 12)
89
CL-USER 5 > (sqrt n)
4.358899
CL-USER 8 : 1 > (- 30 n)
11
Ejercicios
; el segundo numero
CL-USER 24 : 2 > (first (rest '(7 4 8 9)))
4
; El tercer trmino
CL-USER 26 : 2 > (first (rest (rest '(7 4 8 9))))
8
;; el predicado endp nos informa de si una lista es vaca (esto es, igual a nil):
CL-USER 28 : 2 > (endp '(2 5 7 9 6))
NIL
CL-USER 29 : 2 > (endp '())
T
CL-USER 30 : 2 > (endp (rest '(-3)))
T
CL-USER 31 : 2 > (endp nil)
T
;; eq returns true if its arguments are the same, identical object; otherwise, returns
;; false.
CL-USER 41 : 7 > (eq 3 4)
NIL
CL-USER 42 : 7 > (eq 'a 'a)
T
CL-USER 43 : 7 > (eq (cons 'a 'b) (cons 'a 'c))
NIL
;; reverse and nreverse return a new sequence of the same kind as sequence,
;; containing the same elements, but in reverse order.
CL-USER 44 : 7 > (setq str "abc")
"abc"
CL-USER 45 : 7 > (reverse str)
"cba"
li
'(1 2 4 5 6))
(1 2 4 5 6)
CL-USER 50 : 8 > (reverse li)
(6 5 4 2 1)
Ejercicios
;; Cons: Construye una lista a partir de datos y una cola. Y el valor de la cola significa
nada; es decir, NIL
CL-USER 14 : 3 > (cons 5 nil)
(5)
CL-USER 15 : 3 > (cons 14(cons 7 nil))
(14 7)
CL-USER 16 : 3 > (cons 9(cons 11(cons 13 nil)))
(9 11 13)
;; Al usar cons con un Atom que no es reservado producira un error, para que no
;; ocurra esto se tiene que utilizar apstrofes ( ).
CL-USER 18 : 4 > (cons 'm nil)
(M)
CL-USER 19 : 4 > (cons 'a 'b)
(A . B)
CL-USER 21 : 5 > (cons 'a 'b)
(A . B)
CL-USER 22 : 5 > (cons 'a( cons 'b nil))
(A B)
CL-USER 23 : 5 > (cons 1 (cons 2 nil))
(1 2)
CL-USER 24 : 5 > (cons 'a(cons 'b(cons 'c nil)))
(A B C)
CL-USER 25 : 5 > (cons 'x '(y w z o p))
(X Y W Z O P)
CL-USER 26 : 5 > (cons 'a '(b c))
(A B C)
;; list y append Son funciones que toman cualquier cantidad de argumentos. En
;; append es necesario que al declarar los argumentos vayan entre parntesis,
;; mientras que en el list solo es necesario cuando algunos de sus argumentos tienen
;; 2 o ms elementos.
CL-USER 28 : 5 > (append 'a)
A
CL-USER 29 : 5 > (list 'a)
(A)
CL-USER 30 : 5 > (append 'a)
A
CL-USER 31 : 5 > (list 'm 'n 'o 'p)
(M N O P)
CL-USER 32 : 5 > (append '(m) '(n) '(o) '(p))
(M N O P)
Ejercicios
(7)
;; length Devuelve el nmero de elementos de la lista
CL-USER 3 > (length '(m n o p q))
5
CL-USER 6 > (length '(m (q r)))
2
CL-USER 3 > (length '(m n o p q))
5
CL-USER 7 > (setq str "abcd")
"abcd"
CL-USER 8 > (length str)
4
;; listp devuelve T si el argumento es una lista sino devuelve NIL.
CL-USER 10 > (listp `(m n))
T
CL-USER 11 > (listp 'a)
NIL
CL-USER 12 > (listp '(a))
T
CL-USER 19 : 2 > (listp (cons 1(cons 2 nil)))
T
;; condicional
CL-USER 12 : 1 > (setq a 1)
1
CL-USER 13 : 1 > (setq b 1)
1
CL-USER 14 : 1 > (if (= a b)(+ a 1) (- a 1))
2
((< n 6)
'suspenso)
'notable)
'sobresaliente))
NOTABLE
CALIFICACION
CL-USER 18 : 1 > (calificacion 12)
SOBRESALIENTE
CL-USER 3 : 1 > (defun area(a b)
(format t "El area del rectangulo es : ")
(* a b))
AREA
CL-USER 4 : 1 > (area 8 9)
El area del rectangulo es :
72
CL-USER 5 : 1 > (defun area(a b)
(format t "El area del rectangulo es ~a" (* a b)))
AREA
CL-USER 6 : 1 > (area 8 9 )
El area del rectangulo es 72
NIL
CL-USER 3 : 1 > (defun area(a b)
(format t "El area del rectangulo es : ")
(* a b))
AREA
CL-USER 3 > (area 4 6)
El area del rectangulo es :
24
;; Problema : Se quiere plantear una funcin llamada donde-esta cuando se
ingrese Madrid, debe decir Espaa,cuando se ingrese roma debe decir Italia,
cuando se ingrese pars debe decir francia, caso contrario pas desconocido.Utilice
defun y cond.
;; Problema Se quiere plantear una funcin llamada media que calcule la media de
dos numeros.Utilice defun .
;; Problema Se quiere plantear una funcin llamada suma que calcule la suma de
dos numeros.Utilice defun .
;; Problema Se quiere plantear una funcin llamada suma que calcule el cuadrado
de cada uno de los elementos de una lista.Utilice defun . Asimismo
RECURSIVIDAD
1_ Obtenga la suma de los n primeros nmeros enteros positivos
sumapositivos(x)=
En Lisp:
Si x=1
x + sumapositivos (x-1)
Otro caso
1
power(a,b)=
exponente=0
base*power(base, exponente-1)
otro caso
a
a + producto(a, b-1)
b=1
otro caso
b=1
a+producto(a,b-1)
otro caso
fibo(n)=
0
si n=1
1
si n=2
fibo (n-1) + fibo(n-2)