lisp tutorial en latex
TRANSCRIPT
Inteligencia Artificial
LISP
Omar Quito Fernado SumbaUniversidad de Cuenca
21 de Abril del 2014
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
IntroduccionCaracterısticas del Lenguaje
Funciones en LISPCompiladores de LISP
LISP EN IAEJEMPLOS
Bibliografia
Bibliografıa
Omar Quito, Fernado Sumba Universidad de Cuenca LISP