Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CICLO: IX
ICA PERU
2017
EJERCICIOS DE LISPWORKS
LABORATORIO N 1
Hacer 20 ejercicios usando los comandos SETQ y SET
COMANDOS DESCRIPCION
(setq respuesta (+ 5 7)) Le asigno a la variable respuesta
el valor de 5+7
setq x 24 Le asigno a la variable x el valor 24
COMANDOS DESCRIPCION
CAR '(A B C) Muestra el primer elemento que es
A
SETQ X 20 Le asigno a la variable X el valor
20
CAR '(X B C) Muestra el primer elemento que es
X
quote(hola mundo) Muestra el valor hola mundo
QUOTE((ESTAMOS) Muestra dos elementos
IMPROVISANDO) (ESTAMOS) e IMPROVISANDO
(CAR(QUOTE((HOLA)QUE Muestra el primer elemento que es
HACE))) (HOLA)
(FIRST '( AB CV DF)) Muestra el primer elemento que es
AB
(REST '(A B C)) Muestra todos los elementos
restantes menos el primero
ATOM 436436 Muestra el resultado T ya que
se mantiene en regla
ATOM(QUOTE(FFREFREF)) Muestra el resultado de Nil ya
que es una lista
ATOM(QUOTE TRHT) Muestra el resultado de T a que se
mantiene en regla
(PRINT (* 4 6)) Muestra el valor de 6 *4
ATOM(QUOTE Y65) Muestra el valor de T ya que se
mantiene en regla
(CDR '(A B C)) Muestra todos menos el primer
valor
CDR '(RF R D) Muestra el valor R, D menos el
primer valor
CONS 'A 'B Muestra el valor A B dentro de una
lista
CONS 'A '(BCD) Muestra el valor de (A BCD)
dentro de una lista
(CONS 'A '(CONS 'B '(CONS 'C Muestra el valor de (A B C D E)
'(CONS 'D 'E)))) dentro de una lista
(CONS 'A (CONS 'B 'C)) Muestra el valor de (A BC)
(let((x 1) (a 2))(* x a)) Muestra el valor de x * a con su
valor de x=1 y a=2
Hacer 25 ejercicios de FUNCIONES PRIMITIVAS donde incluye
las operaciones +, -, *, /, Max, mix
COMANDOS DESCRIPCION
(- (+ 2 5) ( + 2 3)) Muestra la resta de ambas sumas.
(append '(a) '(l) '(d) '(a) '(i) '(r)) Retorna el valor de (A L D A I R).
(append '(h) '(o l a)) Retorna el valor de (H O L A).
(list 'm '(u n d o)) Retorna el valor de (M (U N D O).
Hacer 25 ejercicios usando los comandos LENGTH, LISTTP,
LIST, FIRST, LAST, SQRT
COMANDOS DESCRIPCION
(last '(1 2 3 4 5 6 7)) Devuelve el ltimo
elemento de la lista 7.
(first '(1 2 3 4 5 6 7)) Devuelve el primer
elemento de la lista 7.
(last (rest '(1 2 3 4 5 6 7))) Devuelve el ltimo elemento de la lista
7.
pero a partir del segundo elemento
(list 'a 'b 'v 2 34) Genera una lista (A B V 34).
(list 'a 'b 'c 'd 'e) Genera una lista (A B C D E).
(list 'a '(b) '(c)) Genera una lista (A (B) (C).
(list 'h 'o 'l 'a (sqrt 4) (/ (expt Genera una lista a raz de algunas
5 2) 5)) operaciones (H O L A 4 5).
(list '(a b) '(a b c d) 'f 'g 'h) Genera una lista a raz de algunas
operaciones (( A B) (A B C D) F G H).
(length '( r (jJjjk f) g)) Cuenta los elementos que tiene la lista
ingresada.
1 Paso:
(defun cuadrado (x)
(* x x)
)
2 Paso:
( defun sumaa ( a b)
(suma (cuadrado a) (cuadrado b))
)
La funcin suma llama a mi 3 ejercicio resuelto
anteriormente.
RECURSIVIDAD
1 Si x=1
sumapositivos(x)= x + sumapositivos (x-1) Otro caso
En Lisp:
CL-USER 15: 3 > (defun sumapositivos(x) (if (= x 1) 1 (+ x (sumapositivos (-
x 1)))))
SUMAPOSITIVOS
CL-USER 16 : 3 > sumapositivos 4
10
1 exponente=0
power (a, b) = base*power (base, exponente-1) otro caso
En Lisp:
CL-USER 10: 3 > (defun power (base exponente) (if (eq exponente 0) 1 (*
base (power base (- exponente 1)))))
POWER
CL-USER 11: 3 > power 4 5
1024
En lisp:
CL-USER 17: 3 > (defun producto (a b) (if (eq b 1) a (+ a (producto a (- b
1)))))
PRODUCTO
CL-USER 19: 3 > producto 80 50
4000
0 si n=1
fibo(n)= 1 si n=2
fibo(n-1) +fibo(n-2)
En Lisp:
CL-USER 17 > (defun fibo(a) (if(eq a 1) 1 (if(eq a 2) 1 (+ (fibo(- a 1))
(fibo(- a 2))))))
FIBO
CL-USER 18 > fibo 5
5
5_ Calcule el factorial de un numero
En lisp:
2) Exponenciacin entera
(defun a ( a b )
( if (= b 0 ) 1 ( * a ( expt a (- b 1 ))))
)
3) Multiplication recursiva
(defun m (a b )
( if (= b 0 ) 0 (+ a (* a (- b 1 ))))
)
4) Fibonacci
CL-USER 17 > (defun fibo(a) (if (eq a 1) 1 (if (eq a 2) 1 (+ (fibo (- a 1))
(fibo (- a 2))))))
FIBO
CL-USER 18 > fibo 5
5
"elemento encontrado"
"elemento encontrado"
RBOL 1:
"elemento encontrado"
"elemento encontrado"
RBOL AVL:
REUTILIZAMOS:
CL-USER 2 > (defun buscarp (list m)
(cond
((null list) "elemento no encontrado")
((not (listp (car list))) (if(eq (car list) m) (print "elemento
encontrado") (buscarp (cdr
list) m)))
( t (buscarp (append (car list) (cdr list)) m))))
BUSCARP
REUTILIZAMOS:
CL-USER 2 > (defun buscarp (list m)
(cond
((null list) "elemento no encontrado")
((not (listp (car list))) (if(eq (car list) m) (print "elemento
encontrado") (buscarp (cdr
list) m)))
( t (buscarp (append (car list) (cdr list)) m))))
BUSCARP
CL-USER 15 > setq E '(b (Ai (A) (B1)) (r (B2) (Ad (C) (D))))
(B (AI (A) (B1)) (R (B2) (AD (C) (D))))
REUTILIZAMOS:
CL-USER 2 > (defun buscarp (list m)
(cond
((null list) "elemento no encontrado")
((not (listp (car list))) (if(eq (car list) m) (print "elemento
encontrado") (buscarp (cdr
list) m)))
( t (buscarp (append (car list) (cdr list)) m))))
BUSCARP
% hechos
esposo(jose,blanca).
esposo(diana,milko).
hermano(erick,milko).
hijo(blanca,zoila).
hijo(milko,jose).
hijo(erick,jose).
hijo(sahomy,milko).
hijo(milko,blanca).
hijo(facundo,erick).
% regla
nieto(A,C):- hijo(A,B),hijo(B,C).
bisnieto(D,G):- hijo(D,E),hijo(E,F),hijo(F,G).
primo(H,K):- hijo(H,I),hermano(I,J),hijo(K,J).
tio(L,N):- hermano(L,M),hijo(N,M).
cuado(O,Q):- esposo(O,P),hermano(Q,P).
mama(T,R):- hijo(R,S),esposo(T,S).
nuera(U,W):- esposo(U,V),hijo(V,W).
suegro(Z,X):- esposo(X,Y),hijo(Y,Z).
% consultas
%?- nieto(A,C),write(A),write(" Es nieto de
"),write(C),write("\n").
%?- bisnieto(D,G),write(D),write(" Es bisnieto
de:"),write(G),write("\n").
%?- primo(H,K),write(" Primos:
"),write(H),write("y"),write(K), write("\n").
%?- tio(L,N),write(L),write(" Es tio de:
"),write(N),write("\n").
%?- cuado(O,Q),write(O),write(" Es cuado de:
"),write(Q),write("\n").
%?- mama(T,R),write(T),write(" Es mama de:
"),write(R),write("\n").
%?- nuera(U,W),write(U),write(" Es nuero de:
"),write(W),write("\n"),repeat().
?- suegro(Z,X),write(Z),write(" Es suegro de:
"),write(X),write("\n").
EJERCICIO StrawBerry Prolog
%Regla
elegido(H):-
vegetariano(H),deportista(H),organizado(H),not(fumador(H)
).
no_elegido(I):-
fumador(I);vegetariano(I),organizado(I),not(deportista(I)
).
%Consulta
?-elegido(H),write("Sofa elegira a:
"),write("\n"),write(H),write("\n").
%?-no_elegido(I),write("Sofa no elegira a:
"),write("\n"),write(I),write("\n"),repeat().