11
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMÉRICA) FACULTAD DE INGENIERIA DE SISTEMAS E INFORMARTICA Curso : Inteligencia Artificial Profesor : Vega Huerta, Hugo Alumno : Pacheco Núñez, Raúl Castillo Martínez, Pamela Mariluz Gonzales, Richard

Tutorial Lisp

Embed Size (px)

Citation preview

Page 1: Tutorial Lisp

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

(Universidad del Perú, DECANA DE AMÉRICA)

FACULTAD DE INGENIERIA DE SISTEMAS E INFORMARTICA

Curso : Inteligencia Artificial

Profesor : Vega Huerta, Hugo

Alumno : Pacheco Núñez, Raúl

Castillo Martínez, Pamela

Mariluz Gonzales, Richard

Semestre : 2010 - II

Page 2: Tutorial Lisp

Ciudad Universitaria, 22 de Septiembre del 2010

LISP TUTORIAL (SOLUCIONARIO)

EJERCICIO N°1

Operaciones aritméticas usando LISP

1+ 2∗53∗8

+3 (2−3 )∗52

20/5+

(10∗5 )∗52

1+9

1+ 1024

+−754

+ 125010

3424

+2500−37520

1712

+ 4254

=17+127512

=129212

=3234

Solución en LISP

EJERCICIO N°2

a+bc∗d

=1+23∗5

=15

Solución en LISP

Page 3: Tutorial Lisp

EJERCICIO N°3

Ejemplos usando listas

(A BC ) ((D E ) A (C F )) (¿102030)

Máximo de una lista de números

Mínimo de una lista de números

Raíz de una ecuación usando la primitiva sqrt

√12*3√4+12

Page 4: Tutorial Lisp

En LISP

CONS: Constructor de un par ordenado. Puede construir listas.

Construcción de listas usando comilla y función cons

LIST: Construye listas de forma más sencilla que CONS.

APPEND: Concatena listas.

(Append lista-1 lista-2 lista-3. . .)

Page 5: Tutorial Lisp

FIRST: Selecciona el primer elemento de un par ordenado (o lista).

(First lista)

REST: Selecciona el segundo elemento de un par ordenado (o la lista que sigue al primer elemento de una lista).Ejemplos(Rest lista)

Page 6: Tutorial Lisp

EQ: Detecta si el valor de un símbolo es idéntico a otro.

(Eq sımbolo-1 sımbolo-2)

Devuelve T si el valor del primer parámetro es igual al valor del Segundo parametro

Devuelve nil si los valores de los parámetros ingresados son distintos

Page 7: Tutorial Lisp

EQUAL: devuelve T si son iguales, pero no en valores, sino son iguales en símbolos

EJERCICIOS 2° TUTORIAL

ASIGNACION: SETQ

(setq x '(1 2 3 4 5)) => A x se le asigna la lista (1 2 3 4 5)

(setq z 4) => A z se le asigna el atomo o elemento 4

(setq y '(323 435 jojo 2 jiji)) => A y se le asigna ESA lista

PRIMER ELEMENTO: CAR

Page 8: Tutorial Lisp

(car x) => 1

(car y) => 323

QUITA ELEMENTO DE UNA LISTA: CDR

(cdr x) => (2 3 4 5)

(cdr y) => (435 jojo 2 jiji)

IF SIMPLE

> (setq x '(5 2))

(5 2)

> (if (> (car x ) (car (cdr x ))) (list (car x )) (list (car (cdr x ))))

(5)

> (es (> 5 2)

[si SI] => (lista [muestra] 5)

[si NO] => (lista [muestra] 2))

IF ANIDADOS

Busqueda del Mayor en una lista de 3 elementos

> (setq x '(1 2 3))

(1 2 3)

> (if (> (car x) (car (cdr x)))

(if (> (car x) (car (cdr (cdr x))))

(list (car x))

(list (car (cdr (cdr x)))))

Page 9: Tutorial Lisp

(if (> (car (cdr x)) (car (cdr (cdr x))))

(list (car (cdr x)))

(list (car (cdr (cdr x)))))

)

(3)

> (es (> 1 2)

[si SI] => (es (> 1 3)

[si SI] => (listo [muestro] 1)

[si NO] => (listo [muestro] 3) )

[si NO] => (es (> 2 3)

[si SI] => (listo [muestro] 2)

[si NO] => (listo [muestro] 3) )

)

IF ANIDADOS DENTRO DE UNA FUNCION

Función definida como ORDEN la cual busca el mayor de 3 números pertenecientes a una lista.-

> (defun orden(x)

(cond

( (not (numberp (car x))) (list "Primer elemento no numero" ) )

( (not (numberp (car (cdr x)))) (list "Segundo elemento no numero" ) )

( (not (numberp (car (cdr (cdr x))))) (list "Tercer elemento no numero" ) )

Page 10: Tutorial Lisp

(t (if (> (car x) (car (cdr x)))

(if (> (car x) (car (cdr (cdr x)))) (list (car x))

(list (car (cdr x))))

(if (> (car (cdr x)) (car (cdr (cdr x))))

(list (car (cdr x)))

(list (car (cdr (cdr x)))))

))

))

ORDEN

> (orden '(1 2 3))

(3)

> (orden '(2 1 2)) | !!! ERROR !!!

(1) |

FUNCIONES

Suma el primer y último elemento de una lista, usando CAR para obtener el primer elemento y CAR de LAST para el ultimo.-

> (defun suma(x)

(cond

( (not (listp x)) (list 'Error))

(t (+ (car x) (car (last x))))

Page 11: Tutorial Lisp

))

SUMA

> (setq x '(1 2 3 4 5 6 7 8 9))

(1 2 3 4 5 6 7 8 9)

> (suma x)

10