Está en la página 1de 15

Programación en LISP

Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com
Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com
Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com
Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com
Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com
Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com
Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com
Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com
Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com
Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com
Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com
Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com
Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com
Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com
Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com
Programación en LISP Rogelio Dávila Pérez Profesor - Investigador rdav9@hotmail.com

Rogelio Dávila Pérez Profesor - Investigador

rdav9@hotmail.com

Programación en LISP

Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de
Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de
Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de
Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de
Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de
Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de
Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de
Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de
Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de
Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de
Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de
Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de
Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de
Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de
Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de
Programación en LISP Aviso Los apuntes incluidos en esta presentación representan un resumen de algunos de

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
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP

Programación LISP

Programación LISP
Programación LISP
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
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP

Programación LISP

Programación LISP
Programación LISP
Programación LISP

Números: LISP permite los siguientes formatos de números:

45

-8

#¡1.414235623731

un entero

un entero negativo representación inexacta de un real

un entero negativo 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
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP

Programación LISP

Programación LISP
Programación LISP
Programación LISP

Tipos básicos de expresiones en LISP

Expresión

Atomo

Número: 4, 7.28, -9

Símbolo: foo, alpha-beta

Lista: (a b c d), (luis pedro mario)

Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP

Programación LISP

Programación LISP
Programación LISP
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
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP

Programación LISP

Programación LISP
Programación LISP
Programación LISP

Algunas operaciones primitivas

raíz cuadrada de A:

exponente A b :

Logaritmo natural de A:

seno de A en radianes:

resto de A B:

= A B*(A div B)

(sqrt A) (exp A b) (log A) (sin A) (remainder A B)

Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP

Programación LISP

Programación LISP
Programación LISP
Programación LISP

Definición de constantes:

(setf PI 3.1416) (setf WIDTH 50)

(setf HEIGHT 160)

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
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP

Programación LISP

Programación LISP
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:

Función:

A = r 2 (defun (area-del-circulo r) (* 3.14 (* r r)))

Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP

Programación LISP

Programación LISP
Programación LISP
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
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP

Programación LISP

Programación LISP
Programación LISP
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
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP

Programación LISP

Programación LISP
Programación LISP
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
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP

Programación LISP

Programación LISP
Programación LISP
Programación LISP

Ejercicios:

a) Area-del-cuadrado:

b) 2/3 + sin(gamma)

A = L 2

c) n/3 + 2

d) ½ n 2 + 20

e) 2 1/n

f) 6x 4 +x 3 +5x 2 +4x+1

g) Grados a radianes

h) h=sqrt( x 2 + y 2 )

i) Volumen de un cilindro con radio r y altura h.

j) Evaluar distancia entre dos puntos.

Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP

Programación LISP

Programación LISP
Programación LISP
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))

% lista vacía

nil

Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP
Programación LISP

Programación LISP

Programación LISP
Programación LISP
Programación LISP

Operaciones con Listas

Algunas operaciones primitivas para la manipulación

de listas son: first, rest, append, list y cons.