Publicado el 14 de Enero del 2017
762 visualizaciones desde el 14 de Enero del 2017
252,7 KB
25 paginas
Creado hace 14a (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
ió
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),
Comentarios de: Introducción a Lisp [Modo de compatibilidad] (0)
No hay comentarios