180 likes | 569 Vues
Programación en LISP. Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com. Programación en LISP. Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de los capítulos del libro: Programming in LISP (3th Edition) Patrick Henry Winston &
E N D
Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com
Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de los capítulos del libro: Programming in LISP (3th Edition) Patrick Henry Winston & Berthold Klaus Paul Horn Addison-Wesley Publishers, 1989
Programación LISP • LISP es un lenguaje de programación funcional que significa List Processing. • La versión más estándar de LISP es el COMMON LISP. • LISP es un lenguaje de manipulación simbólica que favorece la realización de aplicaciones en inteligencia artificial. • LISP fue inventado por John McCarthy en la época de los 50´s. • LISP esta basado en un formalismo muy poderoso llamado el cálculo- introducido por Church en los 40´s.
Programación LISP Números: LISP permite los siguientes formatos de números: 45 un entero -8 un entero negativo #¡1.414235623731 representación inexacta de un real Operadores: Todas las operaciones en LISP se escriben en notación prefija: 4 + 8 (+ 4 8) 9/4 (/ 9 4) -4+4 (+ -4 4) 6*5 (* 6 5) 6-3 (- 6 3)
Programación LISP Tipos básicos de expresiones en LISP Número: 4, 7.28, -9 Atomo Símbolo: foo, alpha-beta Expresión Lista: (a b c d), (luis pedro mario)
Programación LISP Expresiones aritméticas: (2+3)*((29-13)/(5+3)) (* (+ 2 3) (/ (- 29 13) (+ 5 3))) Esta expresión se ejecuta evaluando primero los operadores más internos como se muestra a continuación: (* (+ 2 3) (/ (- 29 13) (+ 5 3))) = (* 5 (/ (- 29 13) (+ 5 3))) = (* 5 (/ 16 (+ 5 3))) = (* 5 (/ 16 8)) = (* 5 2) = 10
Programación LISP • Algunas operaciones primitivas raíz cuadrada de A: (sqrt A) exponente Ab : (exp A b) Logaritmo natural de A: (log A) seno de A en radianes: (sin A) resto de A B: (remainder A B) = A –B*(A div B)
Definición de constantes: (setf PI 3.1416) (setf HEIGHT 160) (setf WIDTH 50) El nombre de una variable inicia con una letra seguida de letras o números y acepta el caracter “-”: x, x25, salary, area-of-square, … Programación LISP
Programación LISP Definición de Función Formato general: (defun (<nombre de función> <argumentos>) (<operaciones>)) Ejemplo: Area del Círculo: A = r2 Función: (defun (area-del-circulo r) (* 3.14 (* r r)))
Programación LISP Programas sencillos La principal función de Lisp es como manipulador simbólico. Lisp es un intérprete que ejecuta las funciones definidas por el programador. Ejemplos: a). * (+ 3.14 2.71) 5.85 b). * (setf friends ´(peter louise mary)) * friends (peter louise mary)
Programación LISP c). * (setf enemies ´(tronch grinch ghost)) * (setf enemies (remove ´ghost enemies)) * (setf friends (cons ´ghost friends)) * enemies (grinch ghost) * friends (ghost peter louise mary)
Programación LISP Definición de funciones a). (defun newfriend (name) (setf enemies (remove name enemies)) (setf friends (cons name friends))) la función se ejecuta: * (newfriend ´ghost)
Programación LISP Ejercicios: a) Area-del-cuadrado: A = L2 b) 2/3 + sin(gamma) c) n/3 + 2 d) ½ n2 + 20 e) 2 – 1/n f) 6x4+x3+5x2+4x+1 g) Grados a radianes h) h=sqrt( x2 + y2 ) i) Volumen de un cilindro con radio r y altura h. j) Evaluar distancia entre dos puntos.
Programación LISP Listas Una lista en Lisp consiste de un paréntesis izquierdo “(”, una secuencia de atomos o listas y un paréntesis derecho “)”. Ejemplos de listas: (verde blanco rojo) (4 3.41 -8.9 +75) ((1 2) (3 4) (5 6) (7 8)) nil % lista vacía
Programación LISP Operaciones con Listas Algunas operaciones primitivas para la manipulación de listas son: first, rest, append, list y cons.