PDF de programación - Introducción a Lisp [Modo de compatibilidad]

Imágen de pdf Introducción a Lisp [Modo de compatibilidad]

Introducción a Lisp [Modo de compatibilidad]gráfica de visualizaciones

Publicado el 14 de Enero del 2017
504 visualizaciones desde el 14 de Enero del 2017
252,7 KB
25 paginas
Creado hace 10a (29/09/2009)
Introducción a Lisp
Introducción
Introducción
Introducción a Lisp
a Lisp
a Lisp

Inteligencia Artificial
Inteligencia Artificial
Práctica 1
Práctica 1

Índice
Índice

 Aspectos organizativos
Aspectos organizativos
 Definición y características
 Referencias
 Entornos de programación
 Primeros pasos
 Tipos de datos
 Funciones
 Control condicional
 Más referencias

29/09/2009

1

Aspectos organizativos
Aspectos organizativos

Organización
 Organización
 Grupos de dos alumnos organizados en 4 grupos:

miércoles, jueves, viernes y no presencial.

 Cada equipo debe elegir día y auto-asignarse a

través del Campus Virtual.

 No se permiten grupos individuales salvo causa

justificada
justificada.

 Remitir las dudas de cada práctica al profesor

vinculado a la misma

Aspectos organizativos
Aspectos organizativos

 Mecánica

 Las prácticas consisten en la realización de una

serie de ejercicios divididos en obligatorios y
optativos.

 Una vez descritos los ejercicios los estudiantes

disponen de 7 días para realizar la correspondiente
entrega en tiempo, obteniendo una bonificación en
la calificación.
l á l
S

 Se controlará la asistencia
i

t

i t

 Evaluación:

 Las prácticas son obligatorias
 15% de la nota final.

29/09/2009

2

, su nombre deriva de list
, su nombre deriva de list

Definición
Definición y y
características
características
LispLisp, su nombre deriva de
 LispLisp, su nombre deriva de
language creado por John McCarthy
creado por John McCarthy
language
 Muchas variantes: la más común en la
Muchas variantes: la más común en la
actualidad, junto a
, es Common
actualidad, junto a Scheme
(CL)
(CL)
Lenguaje aplicativo o funcional (aplica
 Lenguaje aplicativo o funcional (aplica
Lenguaje aplicativo o funcional (aplica
Lenguaje aplicativo o funcional (aplica
funciones a datos)
funciones a datos)
 Íntimamente ligado a la Inteligencia Artificial
Íntimamente ligado a la Inteligencia Artificial

list processing
list processing
processing
processing

Scheme, es

Common LispLisp

Definición y
características
 Uno de los lenguajes de alto nivel más

g

j

veteranos junto al Fortran

 Lenguaje orientado a expresiones
 Sintaxis reconocible: todo código está descrito

por listas entre paréntesis

 Permiten procesar el código como una

estructura de datos

d d t

t

t

29/09/2009

3

Definición y
características
 Características de Common Lisp:p

 Al contrario que los lenguajes procedimentales o

imperativos, prescinde del comando de asignación
liberando al programador del esquema de
pensamiento secuencial

 Tanto el código como los datos se escriben como s-

 Al evaluar una expresión se produce un valor o una

expresiones (expresiones simbólicas)
Al
lista de valores



d

l

l

Referencias
Referencias

alumno--iaia Passwd

Passwd: eliza56
: eliza56

gg

 Página

Página de la
gg
de la asignatura
asignatura::
Moodle, serdis.dis.ulpgc.es/~ii
 Moodle
, serdis.dis.ulpgc.es/~ii--iaia
 Material
Material protegido
protegido: : User:
User: alumno
 Entornos
Entornos software
software
CLISP
 CLISP
 LispWorks
LispWorks
Manuales
 Manuales
 Common Lisp the Language

Common Lisp the Language, 2nd edition
Steele
Steele
 Lisp Primer
Lisp Primer
 Hyperspec
Hyperspec

, 2nd edition, Guy
, Guy

29/09/2009

4

Entornos de programación

Existen diferentes posibilidades para editar y
Existen diferentes posibilidades para editar y
ejecutar programas CL en el laboratorio

 CLISP : Editor externo
 LispWorks: Intérprete y editor integrados

La interfaz de LispWorks
La interfaz de LispWorks

Primeros pasos

Nuestra primera expresión en el intérprete

p

p

p

(+ 2 3)

¿Qué obtienes como resultado?

Se utiliza la notación polaca inversa. ¿Cuál será
el resultado de escribir (* 3 (+ 2 3)) ?

29/09/2009

5

Primeros pasos

Orientado a listas. Notación prefija
Orientado a listas. Notación prefija
Orientado a listas. Notación prefija
Orientado a listas. Notación prefija

> (+ 1 2 3 4)
> (+ 1 2 3 4)
1010

La recursión es esencial, aunque admite
La recursión es esencial, aunque admite

también iteración
también iteración

No distingue entre programas y datos
No distingue entre programas y datos
Interpretado (inicialmente)
Interpretado (inicialmente)
Estructura básica
Estructura básica

(<función> <arg1> ... <
(<función> <arg1> ... <argnargn>)>)

Primeros pasos

¿Cómo realizarías la operación
¿
(4-2)/(6*(4/3)) ?

p

Algunas funciones matemáticas están
disponibles de forma nativa (ver 12.5 manual)

(exp 9)
(expt 2 4)
(sqrt 11)


29/09/2009

6

Primeros pasos

Es posible definir funciones propias.
Es posible definir funciones propias.

(defun square(val)

(* val val))

Referir a la función es ahora muy fácil
Referir a la función es ahora muy fácil

(square 2)

Primeros pasos

En ocasiones nos interesará tener nuestras
En ocasiones nos interesará tener nuestras
expresiones almacenadas en un fichero.

LispWorks incluye un editor (File->New o Tools-
>Editor)

Prueba a guardar tu función en disco

Con ; podremos insertar un comentario

29/09/2009

7

Primeros pasos

Editor basado en Emacs
Editor basado en Emacs

Puedes teclear la función de la imagen, y salvar
el fichero File->Save as con el nombre que
elijas y extensión lsp
elijas y extensión .lsp

Con Load o Compile and Load lo cargamos en
el intérprete

Primeros pasos

p

Es posible hacer uso de variables. Internamente
todo de trata en mayúsculas. Un ejemplo de
definición de variable sin especificar un valor:

(defvar mivar)

Para fijar un valor
Para fijar un valor

(setf mivar 10)
(setq mivar2 14)

29/09/2009

8

Primeros pasos

La función de salida más general es format

(format t “Hola mundo”)

Si bien es similar al printf, permite iterar, integrar
condiciones, etc. (ver 22.3.3 manual)

Por otro lado print permite mostrar el valor de una variable
Por otro lado print permite mostrar el valor de una variable

(setq a 10)
(print a)

Tipos de datos
Tipos de datos

Se distingue entre:
Se distingue entre:

 Átomos o datos sencillos,
 nodos
 s-expresiones, o expresiones simbólicas,
 listas.
 Átomos
Átomos
 Constituye el tipo básico de datos. Tipos:

(a b c d)

 Símbolos

 Números
 Especiales

Símbolos representados como cadenas de caracteres
alfanuméricos ((identificadores
identificadores))
Números: : enteros
enteros, , racionales
Especiales: : t, nil
t, nil ()()

racionales y y reales
reales

29/09/2009

9

Tipos de datos

Nodos
Nodos

 Elemento no accesible al programador que permite

la construcción de estructuras de datos.

 Se representa por un registro con dos punteros,

pudiendo cada uno apuntar a un nodo a un átomo
 Por tradición se denomina car al puntero izquierdo

y cdr al derecho
y cdr al derecho

 También se representa con los símbolos ( . ). La

estructura (A . B) , se denomina un par punteado, y
está compuesta de dos átomos, A y B, y un nodo.
Siendo A el átomo apuntado por car y B el átomo
apuntado por cdr.

Tipos de datos

S-expresión
S expresión

 Estructura de datos compuesta de nodos y átomos

no cíclica. Su expresión sintáctica es de la forma:

S-expresion ::= Atomo | (S-expresion . S-expresion)

Coincide con un árbol binario cuyos nodos
Coincide con un árbol binario cuyos nodos
terminales están constituidos por átomos.

29/09/2009

10

Tipos de datos

ListaLista

 Caso especial de s-expresión.
 Necesita considerar un tipo de puntero especial,

que denominaremos como puntero nulo o nil.

 Caso particular de una s-expresión cuyo cdr es bien

otra lista, o bien nil. Se puede expresar como:

Lista ::= nil | ( Car . Lista )
Car ::= Atomo | Lista

La representación no incluye la representación del puntero
nil ni la representación explícita del nodo.

Tipos de datos
Tipos de datos
 Representación
Representación
 Átomo
 Átomo
Átomo
Átomo

 ListaLista

aa

a

(a)(a)
( )( )

a

(a (b c))
(a (b c))

a

b

c

29/09/2009

11

Funciones básicas
Funciones
básicas

Las funciones de
Las funciones de LispLisp se expresan de forma
Las funciones de
Las funciones de LispLisp se expresan de forma
se expresan de forma
se expresan de forma
general como:
general como:

((funcion
funcion argumento

argumento--1 ... argumento

1 ... argumento--n)n)

LispLisp asume que el primer elemento es el
asume que el primer elemento es el
nombre de una función y que los demás
nombre de una función y que los demás
nombre de una función y que los demás
nombre de una función y que los demás
elementos sus argumentos.
elementos sus argumentos.

Funciones básicas
Funciones básicas

La asignación de parejas {símbolo/valor} se
La asignación de parejas {símbolo/valor} se
La asignación de parejas {símbolo/valor} se
La asignación de parejas {símbolo/valor} se
realiza mediante las funciones setqsetq o o setfsetf
realiza mediante las funciones

((setqsetq simbolo
((setfsetf simbolo

simbolo valor)
valor)
simbolo valor)
valor)

 setqsetq
qq

 setfsetf

 másmás elaborada
elaborada

> (setq A 10)
10
> (setq B 20)
20
20
> (setq c (+ A B))
30
> (setq v1 ‘(a b c d))
(a b c d)
> v1
(a b c d)

29/09/2009

12

Funciones básicas

Es posible definir constantes simbólicas, es decir
Es posible definir constantes simbólicas, es decir
símbolos cuyo valor sea él mismo, es decir
literal. Se realiza con la función quote, o
mediante la tilde ’.

> (quote (2 3 5 7 11 13 17 19))
(2 3 5 7 11 13 17 19)
(2 3 5 7 11 13 17 19)

> '(2 3 5 7 11 13 17 19)
(2 3 5 7 11 13 17 19)

, *, /: (+ n1 n2 …), (

Funciones primitivas
 Funciones primitivas
 +, +, --, *, /:
 expexp, , expt
expt, log,
 sinsin coscos tan:
sin,
sin, coscos, tan:
 maxmax, min:

n1 n2 …), …
(+ n1 n2 …), (‐‐ n1 n2 …), …
, log, sqrtsqrt : : ((expexp n1), (
n1), (expt
tan: (sin 
, tan: (sin 
), (coscos angulo
), (coscos angulo
, min: ((maxmax n1 n2 …), (min n1 n2 …)
n1 n2 …), (min n1 n2 …)

(sin angulo
(sin angulo

angulo), (
angulo), (

expt n1), …
n1), …
angulo), ), 
angulo),
  • Links de descarga
http://lwp-l.com/pdf1732

Comentarios de: Introducción a Lisp [Modo de compatibilidad] (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad