Sei sulla pagina 1di 47

Inteligencia Artificial

Ing. Sal Prez Vega

1 /51

Tabla de Contenido

Objetivos Historia. Introduccin Expresiones-S tomos y Listas Funciones en LISP Conclusiones Bibliografa

Ing. Sal Prez Vega

2 /51

Objetivos
Exponer los conceptos bsicos del LISP. Presentar las expresiones-s, los tomos y las listas. Presentar las funciones bsicas del LISP. Crear nuevas funciones en LISP.

Ing. Sal Prez Vega

3 /51

HISTORIA

Ing. Sal Prez Vega

4 /51

Historia
Creado por John McCarthy Responsable de introducir el trmino inteligencia Artificial, lo hizo en la Conferencia de Dartmouth en 1955 McCarthy invent el lenguaje de programacin Lisp y public su diseo en Comunicaciones del ACM en 1960 El primer Lisp se desarroll en una IBM-704, y en 1962 apareci la versin 1.5. A mediados de los 60's, MIT desarroll MacLisp, Xerox Interlisp, Stanford - UCI Lisp. En los 70's, G. Steele y G. Sussman - Scheme. En los 80's - Common Lisp.

Ing. Sal Prez Vega

5 /51

INTRODUCCIN

Ing. Sal Prez Vega

6 /51

Aspectos Generales

LISP es un lenguaje:
orientado a computacin no-numrica lenguaje interactivo, recursivo No visual

LISP (LISt Processor)

La programacin funcional usa definiciones de funciones y llamadas de funciones como las nicas construcciones de programacin. Basado en la notacin prefija (o clculo Lambda).

Notaciones Prefija /*+ABCF *+AB/CF Infija ((A+B)*C)/F Postfija AB+C*F/ AB+CF/*


7 /51

Ing. Sal Prez Vega

Ejercicio 1
Convierta en notacin prefija las siguientes expresiones
1. (3x + xy - x/y) 2. (3x3 + x2 + 5x -5) 3. (3/x + x2y - x/y)*xy 4. (2+3*x/y x*y*z +z3)
Ing. Sal Prez Vega

8 /51

Ejercicio 2
Convierta a notacin prefija las siguientes expresiones:
1. 2. 3. 4. (5+3-4)/(4*4+5) (3*23 - 2(2*3 - 1)+4/3)/(2*4(3-2+3*4)+3) (4*5)/((2 + 3/4)*(3*5/2 + 1)/(4 + 3)) (2*3 4 + (5*6))*(4+2)/((4 - 6) - 3*55+ 4 - 2*7)
Ing. Sal Prez Vega

9 /51

En LISP los programas y datos usan la misma estructura, lo que permite escribir programas que escriban programas. Se pueden desarrollar prototipos rpidamente. Se pueden probar programas y funciones aisladas.
En otros lenguajes las variables tienen un tipo asociado (no se puede usar una variable sin especificar su tipo). En LISP los valores tienen tipos no las variables (manifest typing) a diferencia de los lenguajes convencionales (implicit typing). Tiene un garbage collector o recolector de basura y manejo de memoria automtico.
Ing. Sal Prez Vega

Por qu Lisp?

10 /51

Por qu Lisp?

Se pueden escribir programas que realicen tareas que no se pueden hacer en otros lenguajes,
Se crea una funcin

> (defun doble (n) (+ n n) ) > (setf X 3) >

Se asigna a una variable

Ing. Sal Prez Vega

11 /51

Computacin Simblica

Las reglas lxicas son mucho ms simples en LISP.


1. Solo existen parntesis, comillas (sencilla y doble), espacios y comas. 2. El punto y coma no separa expresiones (no es necesario debido a los parntesis) sino que inicia comentarios.

LISP no otorga semntica a los smbolos que manipula. Los smbolos en LISP no son case-sensitive. Muchos signos de puntuacin son autorizados para formar parte de los smbolos: '?!$/<=>*'
Ing. Sal Prez Vega

12 /51

Computacin Simblica

La parte extraa es el ('), que sirve para bloquear la evaluacin de una expresin y devolverla literalmente. Se dice que todo lo que est a continuacin de la se entrega literalmente, no se evala.
> 2 2 > '(+ 2 2) (+ 2 2) > (+ 2 2) 4

> '(Carlos

Antonio) CARLOS ANTONIO > 'A A > '2 2 > A Error: A is not a bound variable > (Luis Maria) Error: Luis is not a function

Ing. Sal Prez Vega

13 /51

Ejercicio 3

Diga que entrega el LISP cuando se le entrega las siguientes expresiones?:



Ing. Sal Prez Vega

123 1233 ABC ABC (123) (ABC) (ABC) (+ 12 3) (+ 12 3)

14 /51

Ejercicio 3

Diga que entrega el LISP cuando se le entrega las siguientes expresiones?: 123 1233 the variable ABC is unbound ABC (123) Undefind function ABC called (ABC) 15 (+ 12 3)
Ing. Sal Prez Vega

123 1233 ABC ABC (123) (ABC) (ABC) (+ 12 3) (+ 12 3)

15 /51

EXPRESIONES-S (TOMOS y LISTAS)

Ing. Sal Prez Vega

16 /51

Smbolos

Pueden contener cualquier combinacin de letras y nmeros, y algunos caracteres especiales. Ejemplos:
BANANAS COMPUTADOR

Smbolos especiales T y NIL


T NIL Verdadero,Yes Falso, No,Vaco

Ing. Sal Prez Vega

17 /51

Son estructuras del LISP y estn formadas por:


1. tomos. Son elementos que no contienen parntesis. Corresponde a smbolos 53 puca 2. Listas. Es un conjunto de tomos o de otras listas agrupadas dentro de parntesis. Una lista tiene cabeza CAR y cola CDR

Expresiones-S

(D1 D2 D3 D4 D5 . . . DN)
CAR
CDR
Ing. Sal Prez Vega

18 /51

Listas

Corresponden a una coleccin de expresiones-s encerradas entre parntesis y separadas por espacios. Las listas permiten representar una gran cantidad de cosas. Los programas en Lisp se expresan como listas.
Las listas tienen una representacin escrita e interna.

> (atom nil) T

> (listp nil) T


> (atom T) T > (listp T) NIL > (atom '()) T > (listp '()) T > (listp ()) T > (atom ()) T

nil, es una lista vaca. (), es una lista vaca. nil es equivalente a () nil no es nulo (null)

Ing. Sal Prez Vega

19 /51

Ejemplos de Listas
> > > > (1 2 3) ((a b) (c d) (e f)) (a (1 2 3) d) ((1 uno) (2 dos) (3 tres))

> (1 .(2)) (1 2) > (1 .(2 .(()))) (1 2 nil) > (Dos .(hombres .(y .(un .(destino . nil))))) (Dos mujeres y un destino) > (300000 .((masa . nil) .(velocidad . nil) .(luz . nil))) (300000 ((masa) velocidad) luz)
Ing. Sal Prez Vega

20 /51

Ejercicio 4
Disee una lista para representar:
Recuerde que el lisp no administra la semntica. La lista diseada debe ser entendible por computador y fcil de ser procesado. Los tipos de datos son implcitos.

5 6 7

4 1 3 8 2

Los das de la semana. 2. El calendario (slo para un mes). 3. La disposicin de ficha en un puzzle. 4. La disposicin del juego de michi 5. Un laberinto 6. Las notas obtenidas por los alumnos del curso.
1.

21 /51

Funcin especial QUOTE


Esta funcin toma un argumento y NO lo evala Ejemplo: > (quote (+ 2 3)) >(+ 2 3) La funcin quote puede ser sustituida por un el smbolo >(+ 2 3)

La Funcion para cambiar de un string a valores


> (Set a 5) >Eval a > (+ a 5)
Ing. Sal Prez Vega

22 /51

Ejercicios 5

Indique lo que aparecera despus de escribir lo siguiente (* 8 9)


'(* 8 9) (+ (* 1 2) (+ 3 4)) (+ '(* 1 2) '(+ 3 4)) (+ '(* 1 2) (+ 3 4))

'(+ (* 1 2) (+ 3 4))
'(+ '(* 1 2) (+ 3 4))

23 /51

Ing. Sal Prez Vega

FUNCIONES DEL LISP

Ing. Sal Prez Vega

24 /51

Operaciones matemticas
(- number [number ...]) Resta (floor number) Menor entero

(* number [number ...])


(/ number [number ...]) (+ number number ...)

Producto
Divisin Suma

(gcd integer, integer)


(lcm [number ]) (log number)

Mximo comn divisor


Mnimo comn mltiplo Logaritmo natural

(1- number)
(1+ number) (abs number) (atan num1 [num2]) (ceiling number) (cos angle) (exp number) (expt base power) (float number)

cremento en 1
incremento en 1 valor absoluto arco tangente Mayor entero coseno exponencial Potencia. Convierte real

(logand integer integer ...)


(logior integer ...) (max number number ...) (min number number ...) (rem num1 num2 ...) (round number) (sin angle) (sqrt number) (truncate number)

AND de bits, ret entero


OR de bits, ret entero mximo mnimo comn mltiplo Resto de num1/num2 Redondeo Seno en radianes Raz cuadrada Trunca, sin signo 25 /51

Nmero de entradas en una funcin

Muchas funciones aceptan un numero variable de entradas


Ejemplo:
(+ ((* (/ ((/ 4 3 4 3 4 3 6 3 4) 4) 2) 2) 2) 2) (+ (+ 4 3) 2) 9 (- (- 4 3) 2) -1 (*(* 4 3) 2) 24 (/ (/ 6 3) 2) 1.0 -4 0.25 (su reciproco)
Ing. Sal Prez Vega

26 /51

Operaciones matemticas
(+ n1 n2 ... nN) retorna la suma n1+n2++nN. Si N = 0, da 0. (+) 0 (+ 3) 3 (+ 3 7 5) 15 (+ 32000.0 32000) 64000.0 (- n1 n2 ... nN) retorna el valor de n1-n2-.-nN. Si N = 1, da -n1 (- 3) -3 (- 123 7 5) 111 (/ n1 n2) devuelve el valor de dividir n1 por n2. (/ 6 2) 3.0 (/ 5 2) 2.5
(/ n) es lo mismo que (/ 1 n); es decir, devuelve el inverso de n.

(/ 2)

0.5

(/ 0.5) 2.0
Ing. Sal Prez Vega

27 /51

(ABS n) devuelve el valor absoluto de n. (ABS 3) 3 (ABS -3.6) 3.6

Operaciones matemticas

(MOD n1 n2) devuelve el resto de la divisin entera de n1 por n2. (MOD 7 2) ---> 1
(MAX n1 ... nN) devuelve el mayor valor de n1,..., nN. (MAX 3) 3 (MAX 1 2 3 4 5 2) 5 (MAX -2.3 7 0) 7.0

(MIN n1 ... nN) devuelve el menor valor de n1,..., nN. (MIN 3) 3 (MIN 1 2 3 4 5 2) 1 (MIN -2.3 7 0) -2.3
Ing. Sal Prez Vega

28 /51

Ejercicio 6
Indicar qu retorna el LISP para las siguientes expresiones:
1. (+ 2 3) 2. (* 2 (+ 4 6)) 3. (+ 2/7 7/67) 4. (- 8 6) 5. (* 2/7 6/5) 6. (/ 4 5) 7. (exp 9) 8. (expt 2 4) 9. (sqrt 11) 10. (sin 30) 11. (tan 53)
Ing. Sal Prez Vega

29 /51

Ejercicio 7
Calcular 2*(4 - 1)*6 + (8 - 6)*7 5/(4*7+9) + 3/4-5 18

Ing. Sal Prez Vega

30 /51

Constantes
> pi 3.141592653589793

> (exp 1) 2.718282

Ing. Sal Prez Vega

31 /51

Son aquellas funciones cuyo resultado es un valor booleano


atom numberp, symbolp listp, null, endp zerop, oddp, evenp, >, < equal, not

Predicados

Ing. Sal Prez Vega

32 /51

Predicados
(/= atom atom .....) (< atom atom .....) (<= atom atom .....)
Desigualdad Menor Menor o igual

(atom item)

Es un tomo

(listp list)
(boundp atom) (null item) (endp list) (evenp number) (oddp number) (numberp item) (symbolp symbol) (zerop number) (minusp item)

Es lista
Est inicializado Est inicializado en nil Lista vaca Es par Es impar Es real o entero Es smbolo Es cero T si es negativo

(= atom atom .....)


(> atom atom .....) (>= atom atom .....) (or expression .....) (and expression .....) (not item) (boole func int1 int2 ...) (eq exp1 exp2) (equal exp1 exp2)

Igualdad
Mayor Mayor o igual or (nil si todos nil) and (T si todos T) Es nil funcin booleana igualdad (idnticos) igualdad (estructural)

33 /51

atom

Identificacin de tomos: atom


Identifica todo aquello que no es una lista no vaca No sirve para diferenciar una lista vaca nil de algo que no sea una lista. (atom <objeto>) > (setf x '123) > (atom x) T

Ing. Sal Prez Vega

34 /51

listp, null, endp

Identificacin de listas: listp


Identifica listas Sirve para distinguir lo que es nil o una lista no vaca de cualquier otra cosa. (listp <objeto>)

Identificacin de listas vacas


(null <objeto>) (endp <lista>)

Ing. Sal Prez Vega

35 /51

Identificacin de nmeros: numberp


Identifica tomos numricos, Ejemplos: (numberp 2) (numberp PERRO) (numberp perro) T nil nil (numberp <objeto>)

numberp, symbolp

Identificacin de smbolos: symbolp


Identifica smbolos Ejemplos: (SYMBOLP 2) (SYMBOLP PERRO) (symbolp perro) NIL T nil
Ing. Sal Prez Vega

(symbolp <objeto>)

36 /51

zerop, oddp, evenp, <, >


ZEROP devuelve T si su entrada es 0 ODDP devuelve T si su entrada es un numero impar EVENP devuelve T si su entrada es un numero par

< devuelve T si su primera entrada es menor que la segunda > devuelve T si su primera entrada es mayor que la segunda
(ZEROP 0) (ZEROP 4) (< 2 3) (> 2 3) T; NIL; T NIL
Ing. Sal Prez Vega

(ODDP 28) (ODDP 27) T;

NIL;

(EVENP 28) NIL;

T;

(EVENP 27)

37 /51

tomos, listas, listas vacas


tomo atom '(1 2) () '() nil T T lista vaca null nil T T es lista listp T T T lista vaca endp nil T T

nil
'a '1

T
T T

T
nil nil

T
nil nil

T
is not LIST is not LIST

1
a

T
is unbound

nil
is unbound

nil
is unbound

is not LIST
is unbound

38 /51

Ejercicio 8
Diga qu retorna el LISP en los siguientes casos:
1. (and

(oddp 3) (evenp 2) (minusp -3) (zerop 0.0)) (> -3.0 (truncate -3.1))(= -3.0 (round -3.1)) (> -3.0 (ceiling -3.1))(= 4 (floor 4.31)))
Ing. Sal Prez Vega

2. (and

39 /51

Ejercicio 9
Diga qu retorna el LISP en los siguientes casos:
1.

(and (atom 'hola) (null 'hola) (listp '() ) (andp '() )) (and (atom (+ 3 4)) (atom '(+ 3 4)) (listp (* 3 4)) (listp '(* 3 4))) (and (listp '("(2 3)")) (listp '(nil)) (listp ()))
Ing. Sal Prez Vega

2.

3.

40 /51

not

Predicado NOT
Realiza la negacin lgica de su nico argumento (not <argumento>)

Ejemplos: (NOT T) NIL (NOT NIL) T

Ing. Sal Prez Vega

41 /51

igualdad

compara reales, enteros o imaginarios.


compara tomos compara tomos, es ms flexible que eq. retorna nil si alguno de sus argumentos es

eq eql list

equal compara objetos, devuelve T si su dos entradas son iguales, y NIL en caso contrario
(equal <objeto1> <objeto2>)

equalp

compara objetos, es ms flexible que equal.

Ing. Sal Prez Vega

42 /51

igualdad
nmeros a1 '(1 2) '(1 2) '(A A) 1 '1 '1.1 a2 '(1.0 2.0) '(1 2) '(a a) 1.0 1 1.1 = error type error type error type T T T eq nil nil nil nil T nil tomos eql nil nil nil nil T T objetos equal nil T T nil T T objetos G equalp T T T T T T

(+ 2 3)
(+ 2 3) (+ 2 3) 'A "abc" "ABC"

5.0
'5 5 'a 'abc "abc"

T
T T error type error type error type

nil
T T T nil nil

nil
T T T nil nil

nil
T T T nil nil

T
T T T nil T
43 /51

Ejercicio 10
Diga qu retorna el LISP en los siguientes casos:

(= (+2 3 4) 9) (eq 1234 1234) (eq 1234 1234) (eq (12 12) (12 12)) (eql (12 12) (12 12)) (equal (12 12) (12 12)) (equal (12.1 12) (12 12.1))

Ing. Sal Prez Vega

44 /51

CONCLUSIONES

Ing. Sal Prez Vega

Conclusiones

LISP es un lenguaje de alto nivel de tipo funcional que es utilizado en mltiples aplicaciones de IA LISP se basa en manejo de listas y tiene desde funciones simples hasta estructuras de datos

Ing. Sal Prez Vega

46 /51

Bibliografa

LISP Winston and Horn Addison Wesley The Little Lisper Daniel Friedman and Mathias Felleisen SRA Apuntes de LISP Graeme Ritchie

Ing. Sal Prez Vega

47 /51

Potrebbero piacerti anche