SlideShare una empresa de Scribd logo
Introducción a LISP 
Sergio Jiménez Celorrio 
Departamento Ingeniería Informática – UC3M
Introducción 
 List Processing 
 Desarrollado en 1958, en el MIT por John McCarthy 
 Lenguaje mas popular en IA 
– Declarativo 
– Alto Nivel 
 Diferentes Intérpretes 
– CLISP, Allegro, CMUCL, … 
 Aplicaciones 
– Emacs, Autocad…
Tipos de datos 
 Listas, Elemento Fundamental del Lenguaje 
– (funcion x y z) 
– (print “Hola Mundo”) 
 Átomos 
– Símbolos: var1, contador, … 
– Valores Lógicos: t, nil 
– Números: 3, 3.001 
– Strings: “Hola mundo” 
 Otros: 
– arrays, vectores, tablas hash,… 
– Estructuras y Clases definidas por el usuario
Operadores Básicos 
 Numéricos: 
– Suma 
 (+ 1 2) 
 (+ 1 2 3 4) 
– Resta 
 (- 4 2) 
 (- 10 2 2 2) 
– Producto 
 (* 3 2) 
 (* 2 2 2 2) 
 Lógicos: 
– And 
 (and t nil) 
 (and 1 2 3) 
– Or 
 (or t nil) 
 (or 1 2 3) 
– Not 
 (not nil) 
 (not 1), 
 (not “hola”)
Evaluación de una expresión LISP (I) 
 Directamente en el prompt del intérprete 
 Desde un fichero 
 (load “prueba.lisp”)
Evaluación de una expresión LISP (II) 
 ‘ y quote impide la evaluación de una expresión: 
 (+ 3 5) 
 ‘(+ 3 5) 
 (quote (+ 3 5)) 
 eval evalúa una expresión dos veces 
 (eval (quote (+ 3 5))) 
 (eval ‘(+ 3 5))
Variables 
 Inicializaciones 
 (defvar *contador* 1) 
 Cambiando el valor a una variable 
 (setf *contador* 2) 
 Variables locales 
 (let ((contador 1)) 
(print contador)) 
 (let ((contador 1)) 
(setf contador 2) 
(print contador))
Condiciones 
 (if (= *a* *b*) (print “hola”) (print “adios”)) 
 (when (= *a* *b*) (print “hola”)) 
– Equivalente a (if (= *a* *b*) (print “hola”)) 
 (unless (= *a* *b*) (print “hola”)) 
– Equivalente a (if (not (= *a* *b*)) (print “hola”)) 
 (Cond ((= *a* *b*) (print “uno”)) 
((> *a* *b*) (print “dos”)) 
(t (print “tres”)))
Relaciones de Igualdad 
 EQ (el más específico), compara si dos variables apuntan al mismo objeto. 
 (eq ‘(a b c) ‘(a b c)) 
NIL 
 (setf x 1) (setf y x) (eq x y) 
T 
 EQL como EQ pero también compara números si son del mismo tipo o para caracteres 
 (eql x y) 
T 
 (eql 3 3) 
T 
 (eql 3.0 3) 
NIL 
 EQUAL (El más general) 
 (equal ‘(a b c) ‘(a b c )) 
T 
 (equal 3.0 3) 
T 
 (equal “hola” “HOLA”) 
NIL 
 EQUALP Como EQUAL pero compara cadenas en mayúsculas y minúsculas 
 (equalp “hola” “HOLA”) 
T 
 Relaciones numéricas: = <, >, <=, >=
Bucles 
 (dotimes (i 3) (print i)) 
 (dolist (i ‘(0 1 2)) (print i)) 
 (setf *i* 0) 
(loop (when (= *i* 3) (return)) 
(print *i*) 
(setf *i* (+ *i* 1)))
Creación de Listas 
 (setf *lista* ‘(1 2 3 4 5)) 
 (setf *lista* (list 1 2 3 4 5))
Funciones Básicas de Manejo de 
Listas 
 (car *lista*) = (first *lista*) = (nth 0 *lista*) 
 (rest *lista*) = (cdr *lista*) 
 (last *lista*) = (list (nth (- (length lista) 1) *lista*)) 
 (push 8 *lista*) 
 (pop *lista*) 
 (cons 1 ‘(2 3 4 5)) 
 (append ‘(1 2) ‘(3 4 5)) 
 (member 1 ‘(3 4 1 5 6)) 
 (sort ‘(3 2 1) ‘<) 
 (remove 1 ‘(3 4 1 5 6)) 
 (length ‘(3 2 5))
Declaración de Funciones de Usuario 
 (defun nombre (args) “descripcion” (expresión)) 
– (defun mi-funcion (lista) 
“obtiene el primer elemento del 
argumento lista” 
(car lista)) 
 Devuelven el valor de la última expresión
Apply y Funcall 
 Permiten aplicar una función a un conjunto 
de datos 
– Apply (apply #’+ ‘(2 3)) 
– Funcall: (funcall #’+ 2 3)
Mapcar 
 Permite aplicar una función a cada uno de 
los elementos de una lista. 
(mapcar #’list ‘(1 2 3 4)) 
(mapcar #’+ ‘(1 2 3 4)’(10 20 30 40))
Funciones Lambda 
 Permite definir funciones en tiempo de ejecución 
– Muy útil para las funciones tipo map o para definir 
funciones de Test 
 (mapcar #’(lambda (x) (format t “El doble de ~a es ~a~&“ x (* 2 x))) 
‘(1 2 3)) 
 (member 2 ‘((1 2) (3 4) (5 6)) 
:test #’(lambda (x y) (equal x (second y))))
Entrada / Salida 
 Lectura sobre entrada estándar 
 (setf *respuesta* (read)) 
 Escritura sobre salida estándar 
 (print “Hola mundo”) 
 Salida con formato (format t literal argumentos) 
– El literal puede indicar: 
~% nueva línea 
~d número 
~a carácter 
 (format t “el cuadrado de ~d es ~d ~&” 3 (* 3 3)) 
 Abrir un fichero. 
 (setq fichero (open “nombre-fichero” :direction :input)) 
 Escribir en un fichero. 
 (format fichero “el cuadrado de ~d es ~d ~&” 3 (* 3 3)) 
 Cerrar fichero 
 (close fichero)
Buenos hábitos de programación 
 Introducir comentarios 
– ; para comentar una línea 
– #| para comentar 
Varias líneas |# 
 Nombres de variables y funciones descriptivos 
 Funciones con pocas líneas y cortas 
 Utilice editor que resalte emparejado de paréntesis y con sangría automática 
– (i.e. emacs o xemacs) 
 Use cond en lugar de ifs anidados 
 Variables globales comiencen y acaben con * 
– *variable1* 
 Utilice lógica positiva al dar nombre a las funciones y predicados: que 
devuelvan t si es cierto. 
– (numberp 5)
Libros 
 LISP : el lenguaje de la inteligencia artificial / 
A.A. Berk 
 AutoLISP versión 12 / José Antonio Tajadura 
Zapirain, Javier López Fernández 
 LISP / Patrick Henry Winston, Berthold Klaus 
Paul Horn 
 Common LISP : the language. Steele, Guy L.
Web 
 Referencia Funciones Lisp 
– http://www.lispworks.com/documentation/HyperSpec/Front/index.htm

Más contenido relacionado

La actualidad más candente

Apuntadores y listas
Apuntadores y listasApuntadores y listas
Apuntadores y listas
Marialix Quintero
 
Codigo para implementar pilas en java
Codigo para implementar pilas en javaCodigo para implementar pilas en java
Codigo para implementar pilas en java
Teresa Freire
 
Python Pilas y Colas
Python Pilas y ColasPython Pilas y Colas
Python Pilas y Colas
Juan Astudillo
 
ED Listas, Pilas y Colas
ED Listas, Pilas y ColasED Listas, Pilas y Colas
ED Listas, Pilas y Colasiventura26
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
Jose R. Trejo
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datosmariajuly
 
10. aplicaciones de las pilas
10. aplicaciones de las pilas10. aplicaciones de las pilas
10. aplicaciones de las pilasAndreita Enriquez
 
Listas
ListasListas
Colas
ColasColas
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Eli Diaz
 
Haskell - Intro
Haskell - IntroHaskell - Intro
Lista,pilas y columnas
Lista,pilas y columnasLista,pilas y columnas
Lista,pilas y columnaskety24
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasElias Peña
 

La actualidad más candente (18)

Apuntadores y listas
Apuntadores y listasApuntadores y listas
Apuntadores y listas
 
Haskell
HaskellHaskell
Haskell
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Codigo para implementar pilas en java
Codigo para implementar pilas en javaCodigo para implementar pilas en java
Codigo para implementar pilas en java
 
Python Pilas y Colas
Python Pilas y ColasPython Pilas y Colas
Python Pilas y Colas
 
ED Listas, Pilas y Colas
ED Listas, Pilas y ColasED Listas, Pilas y Colas
ED Listas, Pilas y Colas
 
Presentacion pilas lista y colas
Presentacion pilas lista y colas  Presentacion pilas lista y colas
Presentacion pilas lista y colas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datos
 
10. aplicaciones de las pilas
10. aplicaciones de las pilas10. aplicaciones de las pilas
10. aplicaciones de las pilas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Listas
ListasListas
Listas
 
Colas
ColasColas
Colas
 
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
Investigacion ed (pseudocodigo, algoritmo, listas, colas, arboles)
 
Haskell - Intro
Haskell - IntroHaskell - Intro
Haskell - Intro
 
Lista,pilas y columnas
Lista,pilas y columnasLista,pilas y columnas
Lista,pilas y columnas
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colas
 

Similar a Curso lisp

Programación de código
Programación de códigoProgramación de código
Programación de código
Advanced Value Group, LLC
 
Apunte del Lenguaje LISP
Apunte del Lenguaje LISPApunte del Lenguaje LISP
Apunte del Lenguaje LISP
Prof Matias Garcia
 
Lenguaje de programación c
Lenguaje de programación cLenguaje de programación c
Lenguaje de programación cvictdiazm
 
274420287 tipos-de-datos-en-c (1)
274420287 tipos-de-datos-en-c (1)274420287 tipos-de-datos-en-c (1)
274420287 tipos-de-datos-en-c (1)
Santy Chavez
 
Ejercicios resueltos con Python
Ejercicios resueltos con PythonEjercicios resueltos con Python
Ejercicios resueltos con Python
Facultad de Ciencias y Sistemas
 
Bryan gordillo ensayo_arreglos
Bryan gordillo ensayo_arreglosBryan gordillo ensayo_arreglos
Bryan gordillo ensayo_arreglos
Bryan Gordillo
 
Lo que las empresas piden
Lo que las empresas pidenLo que las empresas piden
Lo que las empresas pidenSvet Ivantchev
 
Introduccion clips
Introduccion clipsIntroduccion clips
Introduccion clips
Oscar Maurico
 
10. subalgoritmos parte i
10. subalgoritmos parte i10. subalgoritmos parte i
10. subalgoritmos parte ircarrerah
 
Programación Funcional con Scheme
Programación Funcional con SchemeProgramación Funcional con Scheme
Programación Funcional con Scheme
Óscar Andrés López
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matricesJohanna Marin
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matricesJohanna Marin
 
Programacion en python_1
Programacion en python_1Programacion en python_1
Programacion en python_1wozgeass
 
TDS.pdf
TDS.pdfTDS.pdf
Lenguaje latino
Lenguaje latinoLenguaje latino
Lenguaje latino
ReneSergio
 
introducción a la programación utilizando C++.pptx
introducción a la programación utilizando C++.pptxintroducción a la programación utilizando C++.pptx
introducción a la programación utilizando C++.pptx
Erisbeymarin
 
Presentacion Visual Basic - SAIA B
Presentacion Visual Basic - SAIA BPresentacion Visual Basic - SAIA B
Presentacion Visual Basic - SAIA B
Joselyn Serrano
 

Similar a Curso lisp (20)

Programación de código
Programación de códigoProgramación de código
Programación de código
 
Programar en c
Programar en cProgramar en c
Programar en c
 
Apunte del Lenguaje LISP
Apunte del Lenguaje LISPApunte del Lenguaje LISP
Apunte del Lenguaje LISP
 
Lenguaje de programación c
Lenguaje de programación cLenguaje de programación c
Lenguaje de programación c
 
274420287 tipos-de-datos-en-c (1)
274420287 tipos-de-datos-en-c (1)274420287 tipos-de-datos-en-c (1)
274420287 tipos-de-datos-en-c (1)
 
SlE ADSI
SlE ADSISlE ADSI
SlE ADSI
 
Ejercicios resueltos con Python
Ejercicios resueltos con PythonEjercicios resueltos con Python
Ejercicios resueltos con Python
 
Bryan gordillo ensayo_arreglos
Bryan gordillo ensayo_arreglosBryan gordillo ensayo_arreglos
Bryan gordillo ensayo_arreglos
 
Lo que las empresas piden
Lo que las empresas pidenLo que las empresas piden
Lo que las empresas piden
 
Introduccion clips
Introduccion clipsIntroduccion clips
Introduccion clips
 
10. subalgoritmos parte i
10. subalgoritmos parte i10. subalgoritmos parte i
10. subalgoritmos parte i
 
Programación Funcional con Scheme
Programación Funcional con SchemeProgramación Funcional con Scheme
Programación Funcional con Scheme
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matrices
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matrices
 
Programacion en python_1
Programacion en python_1Programacion en python_1
Programacion en python_1
 
matlab
matlabmatlab
matlab
 
TDS.pdf
TDS.pdfTDS.pdf
TDS.pdf
 
Lenguaje latino
Lenguaje latinoLenguaje latino
Lenguaje latino
 
introducción a la programación utilizando C++.pptx
introducción a la programación utilizando C++.pptxintroducción a la programación utilizando C++.pptx
introducción a la programación utilizando C++.pptx
 
Presentacion Visual Basic - SAIA B
Presentacion Visual Basic - SAIA BPresentacion Visual Basic - SAIA B
Presentacion Visual Basic - SAIA B
 

Último

IA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticulturaIA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticultura
Miguel Rebollo
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
Todo sobre Minirobotica. Revista Saber Electronica
Todo sobre  Minirobotica. Revista Saber ElectronicaTodo sobre  Minirobotica. Revista Saber Electronica
Todo sobre Minirobotica. Revista Saber Electronica
Carlos Carlosnoemi
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
AMADO SALVADOR
 
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaCatalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
AMADO SALVADOR
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Festibity
 
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor OficialCatalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
AMADO SALVADOR
 
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
IsabelQuintero36
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVATECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
LilibethEstupian
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
Ing. Julio Iván Mera Casas
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
AMADO SALVADOR
 
absorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratoriosabsorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratorios
JuanAlvarez413513
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
NajwaNimri1
 
Presentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The CleanPresentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The Clean
juanchogame18
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Festibity
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
Festibity
 

Último (20)

IA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticulturaIA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticultura
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 
Todo sobre Minirobotica. Revista Saber Electronica
Todo sobre  Minirobotica. Revista Saber ElectronicaTodo sobre  Minirobotica. Revista Saber Electronica
Todo sobre Minirobotica. Revista Saber Electronica
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
 
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaCatalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
 
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor OficialCatalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor Oficial
 
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVATECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
 
absorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratoriosabsorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratorios
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
 
Presentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The CleanPresentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The Clean
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Informació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdfInformació Projecte Iniciativa TIC HPE.pdf
Informació Projecte Iniciativa TIC HPE.pdf
 

Curso lisp

  • 1. Introducción a LISP Sergio Jiménez Celorrio Departamento Ingeniería Informática – UC3M
  • 2. Introducción  List Processing  Desarrollado en 1958, en el MIT por John McCarthy  Lenguaje mas popular en IA – Declarativo – Alto Nivel  Diferentes Intérpretes – CLISP, Allegro, CMUCL, …  Aplicaciones – Emacs, Autocad…
  • 3. Tipos de datos  Listas, Elemento Fundamental del Lenguaje – (funcion x y z) – (print “Hola Mundo”)  Átomos – Símbolos: var1, contador, … – Valores Lógicos: t, nil – Números: 3, 3.001 – Strings: “Hola mundo”  Otros: – arrays, vectores, tablas hash,… – Estructuras y Clases definidas por el usuario
  • 4. Operadores Básicos  Numéricos: – Suma  (+ 1 2)  (+ 1 2 3 4) – Resta  (- 4 2)  (- 10 2 2 2) – Producto  (* 3 2)  (* 2 2 2 2)  Lógicos: – And  (and t nil)  (and 1 2 3) – Or  (or t nil)  (or 1 2 3) – Not  (not nil)  (not 1),  (not “hola”)
  • 5. Evaluación de una expresión LISP (I)  Directamente en el prompt del intérprete  Desde un fichero  (load “prueba.lisp”)
  • 6. Evaluación de una expresión LISP (II)  ‘ y quote impide la evaluación de una expresión:  (+ 3 5)  ‘(+ 3 5)  (quote (+ 3 5))  eval evalúa una expresión dos veces  (eval (quote (+ 3 5)))  (eval ‘(+ 3 5))
  • 7. Variables  Inicializaciones  (defvar *contador* 1)  Cambiando el valor a una variable  (setf *contador* 2)  Variables locales  (let ((contador 1)) (print contador))  (let ((contador 1)) (setf contador 2) (print contador))
  • 8. Condiciones  (if (= *a* *b*) (print “hola”) (print “adios”))  (when (= *a* *b*) (print “hola”)) – Equivalente a (if (= *a* *b*) (print “hola”))  (unless (= *a* *b*) (print “hola”)) – Equivalente a (if (not (= *a* *b*)) (print “hola”))  (Cond ((= *a* *b*) (print “uno”)) ((> *a* *b*) (print “dos”)) (t (print “tres”)))
  • 9. Relaciones de Igualdad  EQ (el más específico), compara si dos variables apuntan al mismo objeto.  (eq ‘(a b c) ‘(a b c)) NIL  (setf x 1) (setf y x) (eq x y) T  EQL como EQ pero también compara números si son del mismo tipo o para caracteres  (eql x y) T  (eql 3 3) T  (eql 3.0 3) NIL  EQUAL (El más general)  (equal ‘(a b c) ‘(a b c )) T  (equal 3.0 3) T  (equal “hola” “HOLA”) NIL  EQUALP Como EQUAL pero compara cadenas en mayúsculas y minúsculas  (equalp “hola” “HOLA”) T  Relaciones numéricas: = <, >, <=, >=
  • 10. Bucles  (dotimes (i 3) (print i))  (dolist (i ‘(0 1 2)) (print i))  (setf *i* 0) (loop (when (= *i* 3) (return)) (print *i*) (setf *i* (+ *i* 1)))
  • 11. Creación de Listas  (setf *lista* ‘(1 2 3 4 5))  (setf *lista* (list 1 2 3 4 5))
  • 12. Funciones Básicas de Manejo de Listas  (car *lista*) = (first *lista*) = (nth 0 *lista*)  (rest *lista*) = (cdr *lista*)  (last *lista*) = (list (nth (- (length lista) 1) *lista*))  (push 8 *lista*)  (pop *lista*)  (cons 1 ‘(2 3 4 5))  (append ‘(1 2) ‘(3 4 5))  (member 1 ‘(3 4 1 5 6))  (sort ‘(3 2 1) ‘<)  (remove 1 ‘(3 4 1 5 6))  (length ‘(3 2 5))
  • 13. Declaración de Funciones de Usuario  (defun nombre (args) “descripcion” (expresión)) – (defun mi-funcion (lista) “obtiene el primer elemento del argumento lista” (car lista))  Devuelven el valor de la última expresión
  • 14. Apply y Funcall  Permiten aplicar una función a un conjunto de datos – Apply (apply #’+ ‘(2 3)) – Funcall: (funcall #’+ 2 3)
  • 15. Mapcar  Permite aplicar una función a cada uno de los elementos de una lista. (mapcar #’list ‘(1 2 3 4)) (mapcar #’+ ‘(1 2 3 4)’(10 20 30 40))
  • 16. Funciones Lambda  Permite definir funciones en tiempo de ejecución – Muy útil para las funciones tipo map o para definir funciones de Test  (mapcar #’(lambda (x) (format t “El doble de ~a es ~a~&“ x (* 2 x))) ‘(1 2 3))  (member 2 ‘((1 2) (3 4) (5 6)) :test #’(lambda (x y) (equal x (second y))))
  • 17. Entrada / Salida  Lectura sobre entrada estándar  (setf *respuesta* (read))  Escritura sobre salida estándar  (print “Hola mundo”)  Salida con formato (format t literal argumentos) – El literal puede indicar: ~% nueva línea ~d número ~a carácter  (format t “el cuadrado de ~d es ~d ~&” 3 (* 3 3))  Abrir un fichero.  (setq fichero (open “nombre-fichero” :direction :input))  Escribir en un fichero.  (format fichero “el cuadrado de ~d es ~d ~&” 3 (* 3 3))  Cerrar fichero  (close fichero)
  • 18. Buenos hábitos de programación  Introducir comentarios – ; para comentar una línea – #| para comentar Varias líneas |#  Nombres de variables y funciones descriptivos  Funciones con pocas líneas y cortas  Utilice editor que resalte emparejado de paréntesis y con sangría automática – (i.e. emacs o xemacs)  Use cond en lugar de ifs anidados  Variables globales comiencen y acaben con * – *variable1*  Utilice lógica positiva al dar nombre a las funciones y predicados: que devuelvan t si es cierto. – (numberp 5)
  • 19. Libros  LISP : el lenguaje de la inteligencia artificial / A.A. Berk  AutoLISP versión 12 / José Antonio Tajadura Zapirain, Javier López Fernández  LISP / Patrick Henry Winston, Berthold Klaus Paul Horn  Common LISP : the language. Steele, Guy L.
  • 20. Web  Referencia Funciones Lisp – http://www.lispworks.com/documentation/HyperSpec/Front/index.htm