0% encontró este documento útil (0 votos)
79 vistas52 páginas

Lisp

John McCarthy inventó Lisp en 1958 poco después del desarrollo de FORTRAN. Lisp es especialmente adecuado para programas de inteligencia artificial ya que procesa información simbólica de manera efectiva. Common Lisp proporciona una variedad de tipos de datos, programación orientada a objetos avanzada, y depuración de alto nivel.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
79 vistas52 páginas

Lisp

John McCarthy inventó Lisp en 1958 poco después del desarrollo de FORTRAN. Lisp es especialmente adecuado para programas de inteligencia artificial ya que procesa información simbólica de manera efectiva. Common Lisp proporciona una variedad de tipos de datos, programación orientada a objetos avanzada, y depuración de alto nivel.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 52

Lisp

Por Adolfo Jimenez


Historia

John McCarthy inventó


el LISP en 1958, poco
después del desarrollo
de FORTRAN. Fue
implementado por
primera vez por Steve
Russell en una
computadora IBM 704.
Historia

Es especialmente
adecuado para los
programas de
Inteligencia Artificial,
ya que procesa la
información
simbólica de
manera efectiva.
Características de Common Lisp

Es independiente de la máquina.


Utiliza metodología de diseño iterativo, y
fácil extensibilidad.
Permite actualizar los programas
dinámicamente.
Proporciona depuración de alto nivel.
Características de Common Lisp

Proporciona programación avanzada


orientada a objetos.
Proporciona un sistema macro
conveniente.
Proporciona una gran variedad de tipos
de datos, como objetos, estructuras, listas,
vectores, matrices ajustables, tablas hash
y símbolos.
Características de Common Lisp

Se basa en la expresión.


Proporciona un sistema de condiciones
orientado a objetos.
Proporciona una completa biblioteca de
E / S.
Proporciona extensas estructuras de
control.
Aplicaciones construidas en Lisp

Emacs
G2
AutoCad
Igor Engraver
Yahoo Store
Lisp: configuración del entorno

Se necesita un editor


El ejecutor Lisp.

Los archivos de origen para los programas


Lisp normalmente se nombran con la
extensión ".lisp".
Estructura Lisp

Las expresiones LISP son llamadas


expresiones simbólicas o s-expresiones.
Las s-expresiones están compuestas por
tres objetos válidos, átomos, listas y
cadenas.
Cualquier s-expresión es un programa
válido.
Estructura Lisp

Los programas LISP se ejecutan en un


intérprete o como código compilado.
El interprete lee el código del programa,
lo evalúa e imprime los valores devueltos
por el programa.
Un simple programa

Se tiene una s-expresión para encontrar la


suma de los tres números 7, 9 y 11.
Para hacer esto, podemos escribir en el
indicador del intérprete.
Notación de prefijo

Es posible que haya notado que LISP usa


la notación de prefijo.
En el programa anterior, el símbolo +
funciona como el nombre de la función
para el proceso de suma de los números.
En la notación de prefijo, los operadores
se escriben antes que sus operandos. Por
ejemplo, la expresión,
Notación de prefijo

Por ejemplo, la expresión:

Puede ser escrito como:


Notación de prefijo

Convertir la siguiente expresión


matemáticas a código Lisp:
Mensaje de texto

Imprimiendo Hola mundo:


Lisp: Sintaxis básica

Los programas Lisp se componen de tres


bloques básicos:
Atomos
Listas
String
Átomo

Un átomo es un número o una cadena


de caracteres contiguos.
Incluye números y caracteres especiales.
Los siguientes son ejemplos de algunos
átomos válidos:
Nombre, 1212234, hola-mundo, *hola*
Bloque#300, etc.
Listas

Una lista es una secuencia de átomos y/o


otras listas encerradas entre paréntesis.
Los siguientes son ejemplos de algunas
listas válidos:
(yo soy una lista)
(a (a b c) d e fgh)
(lunes martes miercoles)
()
String

Un string es un grupo de caracteres entre


comillas dobles.
Los siguientes son ejemplos de algunas
string válidos:
“yo soy una lista”
" a (a b c) d e fgh"
" lunes martes miércoles"
Usando un simple apóstrofe

LISP evalúa todo, incluidos los argumentos


de la función y los miembros de la lista.
A veces, necesitamos tomar átomos o
listas literalmente y no queremos que sean
evaluados o tratados como llamadas de
función.
Usando un simple apóstrofe

Para hacer esto, debemos preceder al


átomo o la lista con una comilla simple.
Vea el siguiente ejemplo:
Tipos de datos

Tipos escalares: por ejemplo, números,


caracteres, símbolos, etc.
Estructuras de datos: por ejemplo, listas,
vectores, vectores de bits y cadenas.
Tipos de datos

Cualquier variable puede tomar cualquier


objeto LISP como su valor, a menos que lo
haya declarado explícitamente.
Los tipos de datos se organizan en una
jerarquía. Un tipo de datos es un conjunto
de objetos LISP y muchos objetos pueden
pertenecer a uno de ellos.
Tipos de datos definidos por el sistema

..
Operadores

Aritméticas
De comparación
Lógicas
Bit a bit
Operadores aritméticos

Si A=10, B=30


+:
(+ A B) 40
-, *, /
mod, rem: módulo y resto después de una
división: (mod B A)0
Operadores aritméticos

incf: incrementa el valor entero por el


segundo argumento especificado.
(incf A 3)13
decf: decrementa el valor entero por el
segundo argumento especificado.
(decf A 4)9
Operadores de comparación

Si : A = 10 y B = 20
=: (= A B) no es verdad
>: (> A B) no es verdad
<: (< A B) es verdad
<=: (<= A B) es verdad
>=: (>= A B) no es verdad
/=: (/= A B) es verdad
 (verifica si son diferentes o no. Si no son iguales devuelve verdad)
Operadores lógicos

Si : A es nill y B = 5
(and A B)  return NIL
(or A B)  return 5
(not A)  return True
Operadores bit a bit

Las tablas de verdad para las


operaciones bit a bit y, o, y xor son las
siguientes:
Operadores bit a bit

Si A=60; B=13; en binario sería:


A = 0011 1100
B = 0000 1101
-------------------------------
A and B = 0000 1100
A or B = 0011 1101
A xor B = 0011 0001
Operadores bit a bit

En Lisp tendríamos:


(logand a b)  12
(logior a b)  61
(logxor a b)  49
Condicionales

1. cond. Se usa para Sintaxis


verificar múltiples testcomparación
cláusulas. Puede
compararse con las
declaraciones if
anidadas en otros
lenguajes de
programación.
Condicionales
Ejemplo COND
El valor de “t" (circulo en rojo) es como
el ELSE en un lenguaje de
programación.
Condicionales

2. if. Si la cláusula de Sintaxis


prueba es verdadero
se ejecuta las
acciones, caso
contrario, se evalúa
la cláusula
consiguiente.
Condicionales
Ejemplo IF
Si la cláusula de prueba se evalúa a
verdadero, se muestra el mensaje.
Condicionales
Ejemplo IF – THEN - ELSE
Si se desea
ejecutar varias
acciones tanto
en el THEN
como en el
ELSE, se usa la
función progn.
Condicionales

3. when. Si la Sintaxis


cláusula de prueba
se evalúa como
verdadera, la acción
de prueba se
ejecuta de lo
contrario, se evalúa
la cláusula
consiguiente.
Condicionales
Ejemplo WHEN
Es semejante a
una instrucción
IF – THEN, sin
ELSE.
Condicionales

4. case. Implementa


múltiples cláusulas de
prueba-acción como
cond. Sin embargo,
evalúa un formulario
clave y permite múltiples
cláusulas de acción
basadas en la evaluación
de ese formulario clave.
Condicionales
Ejemplo CASE
..
Iteraciones

loop
loop for
do
dotimes
dolist
LOOP

En su forma más simple, le permite


ejecutar algunas declaraciones hasta
que encuentra una declaración de
retorno (return).
LOOP
Ejemplo
Mostrar los primeros 10 números.
LOOP FOR

Similar a otros lenguajes de


programación.
Sintaxis:
LOOP FOR
Ejemplo
..
LOOP FOR
Ejemplo
La función evenp determina si un número
es par.
La función oddp determina si un número
es impar.
LOOP FOR
Ejercicio a resolver
Muestre todos los números pares entre
dos valores dados.
Funciones

La macro para definir una función es


defun.
Contiene:
Nombre de la función
Parámetros
Cuerpo de la función
Funciones
Ejemplo
Implementar una función que muestre el
promedio de cuatro números tomados
como parámetros.
Arreglos

LISP Permite definir arreglos de una o


múltiples dimensiones utilizando la función
make-array.
Creación de un arreglo con 10 celdas:

Acceder al último contenido:


Arreglos
Ejemplo
setf: establece el valor de una variable.
(setf h 3)

También podría gustarte