2014
PRIMER TUTORIAL DE LIPS
Integrantes:
Avalos Santiago, Erick Rojas Ñiquen, Carlos Sadhu Ulfe Ureña, Carolyn Stephany
Curso: Inteligencia Artificial
Profesor: Hugo Vega Huerta
10200215 10200171 10200194
UNMSM
Inteligencia Artificial
Verano 2014
TABLA DE CONTENIDO 1. QUÉ ES LIPS ...................................................................................................................................... 3 2. TIPOS DE DATOS .............................................................................................................................. 3 2.1. ÁTOMOS: .............................................................................................................................................. 3 2.2. LISTAS: ................................................................................................................................................. 4 3. LOS NÚMEROS Y SUS OPERACIONES ............................................................................................... 4 3.1. NÚMEROS: ............................................................................................................................................ 4 3.2. OPERACIONES MATEMÁTICAS: .................................................................................................................. 5 4. ASIGNACIÓN DE VALORES EN LIPS .................................................................................................. 6 4.1. SETQ: ................................................................................................................................................... 6 4.2. SETF ..................................................................................................................................................... 6 5. FUNCIONES PRIMITIVAS .................................................................................................................. 7 5.1. FUNCIONES DE ACCESO A LISTAS ................................................................................................................ 7 QUOTE .................................................................................................................................................. 7 CAR ....................................................................................................................................................... 7 CDR ....................................................................................................................................................... 8 5.2. FUNCIONES DE CONSTRUCCIÓN DE LISTAS .................................................................................................. 10 CONS ................................................................................................................................................. 10 LIST ................................................................................................................................................... 11 APPEND ............................................................................................................................................ 11
UNMSM
Inteligencia Artificial
Verano 2014
1. QUÉ ES LIPS Lisp es un lenguaje de programación usado en el mundo de la inteligencia artificial, su nombre se deriva de LISt Processor. LISP fue el primer lenguaje para procesamiento simbólico. John McCarthy lo desarrolló en 1958, en el Instituto de Tecnología de Massachusetts (MIT), inicialmente como un lenguaje de programación con el cual los investigadores pudieran implementar eficientemente programas de computadora capaces de razonar. Lisp se diferencia de otros lenguajes, en que la forma de entender la programación no es la clásica que todo el mundo suele manejar, es decir, la forma de programación es totalmente declarativa y no procedimental . Rápidamente LISP se hizo popular por su capacidad de manipular símbolos y fue escogido para el desarrollo de muchos sistemas de Inteligencia Artificial. Actualmente, LISP es utilizado en varios dominios que incluyen la escritura de compiladores, sistemas para diseño VLSI, sistemas para diseño mecánico asistido por computadora (AUTOCAR), animaciones gráficas y sistemas basados en conocimiento. 2. TIPOS DE DATOS
2.1. Átomos: Un átomo puede ser un átomo numérico o un átomo simbólico. Los átomos pueden ser palabras como SACA, CASA, etc. o cualquier palabra como XDDS, EDFT323, etc. En general, un átomo en LISP puede ser cualquier combinación de las 26 letras del alfabeto (excluyendo la “ñ”) en conjunto con los 10 dígitos (0-9). Ejemplo: Símbolos: nil, t, +, Etiquetas (keywords): :ejemplo, :keywords String: “abc” Números: Enteros: 33, 4, -2 Racionales: -2/3, ½ Reales: 2.23, 34.5
UNMSM
Inteligencia Artificial
Verano 2014
2.2. Listas: Una lista es una secuencia de átomos delimitadas por paréntesis, con sus elementos separados por espacios en blanco, incluyendo la posibilidad que una lista contenga una sublista que cumple con las mismas características. Ejemplo:
(ESTA ES UNA LISTA) ((HOLA) (A) (TODOS)) (ESTALISTAESDISTINTAALAANTERIOR) ((ESTA ES OTRA) (LISTA CON SUBLISTA))
3. LOS NÚMEROS Y SUS OPERACIONES El intérprete de LISP evalúa una expresión representando posiblemente aplicaciones de funciones anidadas o simples, de la siguiente forma: 3.1. Números: Si es un átomo numérico a, entonces el resultado es simplemente dicho átomo numérico a.
UNMSM
Inteligencia Artificial
Verano 2014
3.2. Operaciones Matemรกticas: Las listas se interpretan como llamadas a funciones. El primer elemento es el nombre de la funciรณn y el resto son los argumentos. Por ejemplo, la lista (+ 3 4), se interpreta como la funciรณn + actuando sobre 3 y 4. La aplicaciรณn de una funciรณn LISP se nota en forma prefija, mediante una lista.
UNMSM
Inteligencia Artificial
Verano 2014
4. ASIGNACIÓN DE VALORES EN LIPS Asignación en Lips, es el proceso de establecer un valor de un símbolo. La forma más común de hacerlo es utilizando las asignaciones setq o setf. 4.1. Setq: Se asigna el valor de su segundo argumento de convertirse en el valor de su primer argumento, que tiene que ser un símbolo.
4.2. Setf El setf forma especial utiliza su primer argumento para definir un lugar en la memoria, evalúa su segundo argumento, y almacena el valor resultante en la ubicación de memoria resultante.
UNMSM
Inteligencia Artificial
Verano 2014
5. FUNCIONES PRIMITIVAS 5.1. Funciones de acceso a Listas Existen tres funciones básicas para acceder a los términos de una lista: QUOTE, CAR y CDR. QUOTE: Con este objetivo se suministra la función QUOTE . Una lista dentro de una
función QUOTE no se tratará de evaluar como llamada a una función. La llamada a la función QUOTE se puede abreviar utilizando el signo apóstrofe < ' >.
CAR: CAR admite un único argumento que debe ser una lista o una expresión cuyo
valor sea una lista y devuelve el primer elemento de dicha lista.
UNMSM
Inteligencia Artificial
Verano 2014
CDR: CDR recibe también una lista y devuelve el resto de la lista después de eliminar el
primer elemento (CAR lista). CDR es como la función complementaria de CAR.
Nota: Se podrá acceder a cualquier término de una lista mediante los anidamientos apropiados de CAR y CDR.
(CAR lista) Primer término (CAR (CDR lista)) Segundo término (CAR (CDR (CDR lista))) Tercer término Para simplificar las expresiones se permite crear nombres compuestos para anidar CAR y CDR de la siguiente manera:
Comenzando por una primera letra C. una letra A por cada CAR o una D por cada CDR. terminando con una letra R.
Entonces: (CAR (CDR (CDR lista))) sería lo mismo que (CADDR lista). De esta manera se puede construir hasta 28 funciones distintas para acceso a listas. Estas 28 concatenaciones se pueden dividir en cuatro grupos, tomando como base la profundidad a que pueden acceder en listas anidadas en varios niveles.
UNMSM
Primer Nivel
Segundo Nivel
Inteligencia Artificial
Verano 2014
UNMSM
Inteligencia Artificial
Verano 2014
Tercer Nivel
5.2. Funciones de Construcción de listas CONS: Es el constructor de lista básico, construye listas insertando elementos en listas existentes incluso vacías. El nuevo elemento ocupa el primer lugar de la lista.
UNMSM
Inteligencia Artificial
Verano 2014
LIST: LIST Recupera cualquier número de expresiones y las combina en una lista. Admite tanto átomos como listas. Si uno de los argumentos es una lista vacía NIL aparecerá como uno de los términos de la lista.
APPEND: APPEND Se utiliza para combinar listas. Elimina el primer nivel de anidación de cada una de las listas que recibe para combinar todas en una misma lista. Si una de las listas que recibe está vacía esta lista no aparecerá en la lista resultante.