lunes, 25 de octubre de 2010

Lab de lenguajes de progra (Dr.Elisa)

Hola a todos,
Un poco de lisp =)

                                               Lenguaje de programacion LISP  
 

LISP es un lenguaje diseñado para la manipulación de fórmulas simbólicas. Más adelante, nació su aplicación a la inteligencia artificial. La principal característica de LISP es su habilidad de expresar algoritmos recursivos que manipulen estructuras de datos dinámicos.

En LISP existen dos tipos básicos de palabras, los átomos y las listas. Todas las estructuras definidas posteriormente son basadas en estas palabras.


ÁTOMOS

Pueden ser palabras, tal como CASA, PISO, ATOMO, etc. o cualquier disparate como EDSDS, DFKM454, etc. En general, un átomo en LISP puede ser cualquier combinación de las 26 letras del alfabeto (excluyendo obviamente la “ñ”) en conjunto con los 10 dígitos. Al igual que en otros sistemas, no son átomos aquellas combinaciones que comienzan con dígitos.

Ejemplos de átomos

• Hello

• carro

• fa521


Ejemplos de no atomos:

• 1023GJKH no es átomo porque comienza con digito.

• Df 25f no es átomo porque incluye un espacio en medio.

• %45sd no es porque no comienza con una letra.



LISTAS

El segundo tipo de palabras con las que trabaja LISP son las listas. Una lista es puede ser una secuencia de átomos separados por un espacio y encerrados por paréntesis redondos, incluyendo la posibilidad de que una lista contenga una sublista que cumple con las mismas características.



Ejemplos de listas

• (ESTA ES UNA LISTA)

• (ESTAESOTRALISTA)

• (ESTA LISTA (TAMBIEN) ES OTRA)

• ((ESTA ES OTRA) ( LISTA MAS))



En LISP, una lista se reconoce porque va entre paréntesis, en cambio, un átomo no.

• (LISTA) es una lista.

• ATOMO es un átomo.




FUNCIONES EN LISP



Funciones normales, son las que se suelen incluir en las implementaciones de LISP


Funciones de lista, para manipulación de listas:


car L, devuelve el primer elemento de L.


cdr L, devuelve la cola (lista - primero).


cons x y, devuelve uan lista formada por x e y.


list x y z, devuelve la lista (x y z).


quote x, no se evalúa x.


Predicados


numberp x, devuelve True si x es un número.


greaterp x y, devuelve True si x>y.


lessp x y, devuelve True si x


null x, devuelve True si x es nulo.


and x y, devuelve x and y.


or x y, devuelve x or y.


not x, devuelve not x.


eq x y, devuelve True si x=y.

Funciones aritméticas:
+, -, *, y /.


rem x y, devuelve el módulo x/y (remainder).


Funciones de entrada y salida


load nombrearchivo, lee el archivo a memoria.

print x, imprime el elemento x.


open nombrearchivo, abre un archivo y devuelve una puntero al mismo.


read, lee del terminal un átomo.


help, proporciona ayuda.


trace, traza la función.


bye, termina LISP.



                                            COMANDOS FUNDAMENTALES


 
QUOTE, CAR, CDR, CONS, ATOM, EQ, NULL.

Comando QUOTE:

Funcion: Como puedes ver esta este comando regresa el argumento asignado.


Operación: (QUOTE (ESTA ES UNA PRUEBA))

Resultado: (ESTA ES UNA PRUEBA)

Operación: (QUOTE HOLA)

Resultado: HOLA


Comando CAR:

Función: Regresa el primer elemento de la lista

Operación: (CAR (QUOTE ((ESTA) ES UNA PRUEBA)))

Resultado: (ESTA)

Operación: (CAR (QUOTE (() (ESTA ES UNA PRUEBA))))

Resultado: ()

Comando CDR:

Función: Regresa el resto de la lista después de borrar el primer término

Operación: (CDR (QUOTE (ESTA ES UNA PRUEBA)))

Resultado: (ES UNA PRUEBA)

Operación: (CDR (QUOTE ((ESTA ES UNA PRUEBA))))

Resultado: ()

Comando CONS:

Función: Regresa una lista, tal que su CAR es el primer argumento y QUOTE su segundo argumento.

Operación: (CONS (QUOTE (ESTA ES)QUOTE(UNA PRUEBA)))

Resultado: ((ESTA ES) UNA PRUEBA)

Comando ATOM:

Función: Regresa True si el argumento es un átomo; NIL en otro caso.

Operación: (ATOM (QUOTE ABC89))

Resultado: True

Operación: (ATOM (QUOTE (UN EJEMPLO)))

Resultado: NIL

Comando EQ:

Función: Regresa True si ambos son iguales; NIL en otro caso.

Operación: EQ (HOLA HOLA)

Resultado: True

Operación: EQ (HOLA A)

Resultado: NIL, ya que no es igual.

Comando NULL:

Función: Regresa True si el argumento es una lista vacía [()]; NIL en otro caso.

Operación: NULL (())

Resultado: True

Operación: NULL ((()))

Resultado: NIL

Operación: NULL (ESTA ES UNA PRUEBA)

Resultado: NIL



Perspectiva del lenguaje

• Es interactivo (usualmente)


• Los datos en LISP son muy restringidos:


• Átomos literales (símbolos)


• Átomos numéricos


• La estructura de datos básica es la lista. Incluye primitivas para su manipulación.


• Los comentarios se comienzan por ‘;’


• Los parámetros de función van todos por valor o por referencia según la clasificación de la función.


• LISP es un lenguaje interpretado y usa una estructura de gestión de almacenamiento en montículo con recolección de basura como almacenamiento primario para datos y programas.






1 comentario:

  1. Haría bien incluir programas ejemplo hecho por ti mismo. Te pongo cuatro puntos para el lab.

    ResponderEliminar