Lisp tutorial en latex

32
Inteligencia Artificial LISP Omar Quito Fernado Sumba Universidad de Cuenca 21 de Abril del 2014

Transcript of Lisp tutorial en latex

Page 1: Lisp tutorial en latex

Inteligencia Artificial

LISP

Omar Quito Fernado SumbaUniversidad de Cuenca

21 de Abril del 2014

Page 2: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Contenido

1 Introduccion

2 Caracterısticas del Lenguaje

3 Funciones en LISP

4 Compiladores de LISP

5 LISP EN IA

6 EJEMPLOS

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 3: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Contenido

1 Introduccion

2 Caracterısticas del Lenguaje

3 Funciones en LISP

4 Compiladores de LISP

5 LISP EN IA

6 EJEMPLOS

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 4: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Contenido

1 Introduccion

2 Caracterısticas del Lenguaje

3 Funciones en LISP

4 Compiladores de LISP

5 LISP EN IA

6 EJEMPLOS

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 5: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Contenido

1 Introduccion

2 Caracterısticas del Lenguaje

3 Funciones en LISP

4 Compiladores de LISP

5 LISP EN IA

6 EJEMPLOS

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 6: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Contenido

1 Introduccion

2 Caracterısticas del Lenguaje

3 Funciones en LISP

4 Compiladores de LISP

5 LISP EN IA

6 EJEMPLOS

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 7: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Contenido

1 Introduccion

2 Caracterısticas del Lenguaje

3 Funciones en LISP

4 Compiladores de LISP

5 LISP EN IA

6 EJEMPLOS

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 8: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Introduccion

Historia

Especificado en 1958 por John McCarthy, es el segundo masviejo lenguaje de programacion de alto nivel.

Lisp fue pionero en muchas ideas en ciencias de lacomputacion, incluyendo las estructuras de datos de arbol, elmanejo de almacenamiento automatico, tipos dinamicos, y elcompilador auto contenido.

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 9: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Caracterısticas del Lenguaje

Objeto de datos

Entre las caracterısticas mas importantes podemos mencionar:

• Todas las variables son punteros• Liberacion automatica de memoria• Adecuado para prototipados, calculo y calculo simbolico• Paradigma de programacion funcional• Lenguaje Interpretado

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 10: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Caracterısticas del Lenguaje

Objeto de datos

Datos (Expresiones): Los tipos de datos originales son losatomos y las listas. Los atomos: son las expresiones LISP

mas elementale debido a que se asemejan a las palabras de unlenguaje comun. Las listas: son grupos de valores

relacionados, separados por espacios e incluidos entreparentesis redondos ”(”Y ”)”.

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 11: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Caracterısticas del Lenguaje

Control de Secuencia

La ejecucion del programa consiste en la evaluacion de lasfunciones contenidas en el mismo.

Expresiones:• Condicional• Operaciones sobre atomos (en preorden): +, -, *, /• Operaciones sobre listas: cons, list, replace, null, equal.• Operaciones sobre propiedades: put, get.• Enunciados: prog() para ejecucion secuencial.• Entrada y salida: open(), read(), print().• Definicion de funciones: defun, define.

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 12: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Caracterısticas del Lenguaje

Gestion de Sub programas

Tres clases de funciones:

• Funcion interpretada: en forma de estructura de listas.Primitivas eval y apply.• Funcion compilada: compiladas en un bloque de codigomaquina que puede ser ejecutado por el interprete delhardware.• Macro: se declara con define. Es simplemente una funcionordinaria en LISP. Puede ser interpretada y compilada.

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 13: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Caracterısticas del Lenguaje

Gestion de almacenamiento

La memoria se estructura en forma de montıculo,usa espacioslibres y un recolector de basura

Entorno de referencia:• Local, es el que se da en las listas.• Global o comun, se consigue mediante asociacion de unatomo.

Paso de parametros:• Transmision por valor, consiste en evaluar las expresiones deuna lista de parametros.• Transmision por nombre, transmitir las expresiones de lalista de parametros sin evaluar, y dejar que la funcion llamadalos evalue usando eval.

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 14: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Caracterısticas del Lenguaje

Predicados

Estos evaluan cierto o falso, en Lisp falso es NIL:

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 15: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Caracterısticas del Lenguaje

Predicados para comprobacion de tipo de objeto:

INTEGERPComprueba si el argumento es un numero entero.(defun integerp (dato)(eq (type dato) ’INT))

REALPComprueba si el argumento es un numero real.(defun realp (dato)(eq (type dato) ’REAL))

STRINGPComprueba si el argumento es una cadena.(defun stringp (dato)(eq (type dato) ’STR))

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 16: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Caracterısticas del Lenguaje

Abstraccion y encapsulamiento

LISP, en origen, no incluye caracterısticas de abstraccion dedatos.

CLOS fue una ampliacion de LISP con orientacion de objetos.

Caracterısticas:• Herencia multiple.• Funciones generica.• Metaclases y metaobjetos.• Tecnica de creacion e inicializacion de objetos que permitecontrol del proceso por parte del usuario.

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 17: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Funciones en LISP

Aritmeticas

+, -, *, /: Suma, resta, multiplicacion y divisionEJEMPLO: (+ (* 2 3) 5)

1+, 1- : Incrementa/Decrementa en uno el valor.EJEMPLO: (1+ 9)

max, min : Devuelve el valor maximo de una listaEJEMPLO: (max 23 4 5 234 654)

float: Devuelve el valor en coma flotanteEJEMPLO: (float ( 22 / 7))

round: redondea un valor al entero mas cercanoEJEMPLO: (round ( 22 / 7))Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 18: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Funciones en LISP

Aritmeticas

expt: calcula potencias elevando su primer argumento a susegundoEJEMPLO: (expt 2 3)

sqrt: calcula raices cuadradasEJEMPLO: (sqrt 9)

abs: calcula el valor absolutoEJEMPLO: (abs -3)

random: calcular un numero aleatorio de 0 a N-1EJEMPLO: (random 5)

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 19: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Funciones en LISP

Funciones de entrada y salida

print, format: son operaciones de salida de texto.

read: es una operacion de lectura de texto.

read-line: absorve caracteres hasta donde aparece un fin dearchivo.

read-char: lee un caracter

open: permite escribir en archivos

eval: es una operacion que lee y evalua.Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 20: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Compiladores de LISP

Los mas utilizados

• GNU Common Lisp, (Software libre)

• Allegro Common Lisp, (Software propietario)

• CMU Common Lisp, (Software libre)

• CLISP, Una implementacion de Common Lisp , (Softwarelibre)

• OpenMCL Common lisp para Macintosh , (Software libre)

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 21: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

LISP EN IA

Como nace LA IA CON LISP

El momento en el que se comienza a utilizar el termino y estese populariza es en 1956, cuando John McCarthy organiza elDartmouth Summer Research Project on Artificial Intelligence.

Los anos sucesivos a ese verano fueron especialmentefructıferos: Newell, Simon y Shaw escribirıan el “LogicTheorist” y el “General Problem Solver” y John Mc Carthycrearıa Lisp y escribirıa el artıculo “Programs with CommonSense”.

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 22: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

LISP EN IA

LISP LENGUAJE DE ALTO NIVEL

Lisp era el lenguaje de alto nivel que necesitaban en esostiempos; fue el primer lenguaje en implementar programacionfuncional, acercando las matematicas al lenguaje; permiteentender el lenguaje hasta el nivel del interprete y esextensible, permitiendo crear nuevos paradigmas deprogramacion en el lenguaje.

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 23: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

LISP EN IA

LISP y PROLOG

Hasta 1971 no se inventarıa Prolog, que se usarıa sobre todoen combinacion con Lisp, en los sistemas basados en reglas,debido a sus facilidades para el encadenamiento hacia Atras,entre otras cosas. Ası es que historicamente Lisp ha estadoasociado a la inteligencia artificial y viceversa.

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 24: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

EJEMPLOS

Funciones

Crear una funcion que dada una lista de como resultado unanueva lista pero solo con el primer y ultimo elemento de lalista original.

SOLUCION:

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 25: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

EJEMPLOS

Funcion Recursiva

Crear una funcion recursiva que dada una lista comoparametro retorne la sumatoria de todos sus elementos.

SOLUCION:

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 26: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

EJEMPLOS

Funcion para matrices

Crear una funcion que permita realizar la suma de matrices.

SOLUCION:

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 27: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

EJEMPLOS

Funcion para listas

Crear una funcion en LISP que permita realizar suma de listaspares

SOLUCION:

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 28: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

EJEMPLOS

Eliminar el enesimo termino de una lista

SOLUCION:

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 29: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

EJEMPLOS

LAS TORRES DE HANOI

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 30: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

EJEMPLOS

LAS TORRES DE HANOI

Definicion de funcion torres de hanoi:

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 31: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

EJEMPLOS

Recursividad.- LAS TORRES DE HANOI

Omar Quito, Fernado Sumba Universidad de Cuenca LISP

Page 32: Lisp tutorial en latex

IntroduccionCaracterısticas del Lenguaje

Funciones en LISPCompiladores de LISP

LISP EN IAEJEMPLOS

Bibliografia

Bibliografıa

Omar Quito, Fernado Sumba Universidad de Cuenca LISP