LISP I. Programación recursiva frente a iterativa. Características de la programación recursiva:

Tamaño: px
Comenzar la demostración a partir de la página:

Download "LISP I. Programación recursiva frente a iterativa. Características de la programación recursiva:"

Transcripción

1 LISP I 1 Programación recursiva frente a iterativa Características de la programación recursiva:» Implementación intuitiva y elegante. La traducción de la solución recursiva de un problema (caso base y caso recursivo a código Lisp es prácticamente inmediata.» Útil para optimizar cálculos. Las estructuras de datos en Lisp hacen un uso implíctito de los punteros, como en las listas: NIL ó Un cons cuyo cdr es, a su vez, una lista» Útil cuando hay varios niveles de anidamiento. La solución para un nivel es válida para el resto. Formas de hacer versión iterativa:» Con mapcar» Con bucles (dolist, dotimes, etc. Desaconsejado. 2

2 Ejemplos de recursividad, (1 Ejemplo del cálculo de la potencia de un número optimizada > (defun potencia (x n ;; Optimizacion calculo potencia" (cond ((= n 0 1 ((evenp n (expt (potencia x (/ n 2 2 (t (* x (potencia x (- n 1 > (potencia 2 8 La interpretación y comprensión del código es compleja. Por ello es importante llegar a un compromiso entre la claridad de la programación y la eficiencia en la misma. Ejemplos de recursividad, (2 Contar los átomos de cualquier expresión LISP: > (cuenta-atomos '(a (b c ((d e f 6 > (defun cuenta-atomos (expr (cond ((null expr 0 ((atom expr 1 (t (+ (cuenta-atomos (first expr (cuenta-atomos (rest expr 4

3 Ejemplos de recursividad, ( Aplanar una lista:» (aplana (a (b c ((d e f >>> (A B C D E F > (defun aplana (lista (cond ((null lista NIL ((atom (first lista (cons (first lista (aplana (rest lista (t (append (aplana (first lista (aplana (rest lista 5 Ejemplos de recursividad, (4 Número de sublistas de una lista (número de veces que se abre paréntesis, menos 1:» (sublistas (a (b c ((d e f >>> > (defun sublistas (expresion (cond ((or (null expresion (atom expresion 0 (t (+ (if (atom (first expresion 0 1 (sublistas (first expresion (sublistas (rest expresion 6

4 Ejemplos de recursividad, (5 Producto escalar:» (producto '(2 '(4 5 >>> 2» 2 x 4 + x 5 = 2 Versiones válidas:» Versión recursiva: > (defun producto (vector1 vector2 (if (or (null vector1 (null vector2 0 (+ (* (first vector1 (first vector2 (producto (rest vector1 (rest vector2» Versión con mapcar >(defun producto (vector1 vector2 (apply #'+ (mapcar #'* vector1 vector2 7 Ejemplos de recursividad, (6 Versión no válida del producto escalar:» Versión iterativa (no recomendable: > (defun producto (vector1 vector2 (let ((suma 0 (dotimes (i (length vector1 (setf suma (+ suma (* (nth i vector1 (nth i vector2 suma 8

5 Ejemplos de recursividad, (7 > (defun profundidad-maxima (expresion (cond ((null expresion 0 ((atom expresion 1 (t (+ 1 (apply #'max (mapcar #'profundidad-maxima expresion >>> PROFUNDIDAD-MAXIMA > (profundidad-maxima '(1 >>>> 2 > (profundidad-maxima '((1 (2 ( 4 >>>> 5 9 Repaso de operadores, (1 Recordemos los siguientes operadores:» COUNT-IF, FIND-IF, REMOVE-IF, REMOVE-IF-NOT, DELETE-IF, DELETE-IF-NOT» COUNT / COUNT-IF Contar apariciones: (count <elemento> <lista> [:test <fun-igualdad>]» (count 2 ( Contar los elementos que cumplen /no cumplen una condición de una lista (count-if[-not] <predicado><lista>» (count-if oddp (

6 Repaso de operadores, (2» FIND / FIND-IF Devuelve la primera aparición: (find <elemento> <lista> [:test <fun-igualdad>]» (find 2 ( Devuelve el primer elemento que cumple/o no cumple el predicado (find-if[-not] <predicado><lista>» (find-if oddp '( » REMOVE / REMOVE-IF Borrar las apariciones de un elemento indicado (remove <elemento> <lista> [:test <fun-igualdad>]» (remove 2 ( ( Elimina los que cumple/o no cumple el predicado (remove-if[-not] <predicado><lista>» (remove-if oddp '( ( Ejemplos de recursividad, (8 Objetivo: sin utilizar remove-if, conseguir la misma funcionalidad del operador:» (quitar-si evenp '(1 2 4 (1 Versiones válidas:» Versión recursiva: (defun quitar-si (predicado lista (cond ((null lista nil ((funcall predicado (car lista (quitar-si predicado (cdr lista (t (cons (car lista (quitar-si predicado (cdr lista» Versión con mapcar (defun quitar-si (predicado lista (delete NIL (mapcar #'(lambda (elemento (when (not (funcall predicado elemento elemento lista 12

7 Ejemplos de recursividad, (9 Recorriendo la lista con dolist: (defun QUITAR-SI (predicado lista (let (listaaux (dolist (i lista listaaux (if (not (eval (list predicado i (setf listaaux (append listaaux (list i 1 Ejemplos de recursividad, (10 Versión errónea:» Mal uso de mapcar. El hecho de que hagamos uso de mapcar no garantiza la corrección del código programado. (defun QUITAR-SI2 (predicado lista (mapcar # (lambda (elemento (if (apply predicado (list elemento (remove elemento lista lista > (QUITAR-SI2 'evenp '(1 2 4 (NIL (1 4 NIL (1 2 14

El lenguaje LISP. LISP is an easy language to learn

El lenguaje LISP. LISP is an easy language to learn El lenguaje LISP LISP is an easy language to learn (Henry et.al., 1984) 1 Origen: 1958 Introducción John McCarthy, pionero en IA, empezó a trabajar con la primera implementación de Lisp en 1958.» McCarthy,

Más detalles

El lenguaje LISP. LISP is an easy language to learn (Henry et.al., 1984) Introducción

El lenguaje LISP. LISP is an easy language to learn (Henry et.al., 1984) Introducción El lenguaje LISP LISP is an easy language to learn (Henry et.al., 1984) 1 Introducción Origen: 1958 John McCarthy, pionero en IA, empezó a trabajar con la primera implementación de Lisp en 1958.»McCarthy,

Más detalles

Resumen de LISP. Javier Gil Julio, 2011

Resumen de LISP. Javier Gil Julio, 2011 Resumen de LISP Javier Gil Julio, 2011 ; conceptos fundamentales de Lisp ; sintaxis basica (+ 2 3) (* 2 (+ 4 6)) (+ 2/7 7/67) (/ #c(2 3) 6/4) ; operadores matematicos basicos (+ 2 3) (- 8 6) (* 2/7 6/5)

Más detalles

Tema 1: Introducción a Lisp

Tema 1: Introducción a Lisp Inteligencia Artificial I Curso 202 203 Tema : Introducción a Lisp José L. Ruiz Reina Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla IA-I 202 203 CcIa Introducción

Más detalles

Metodologías de Programación II Listas en Lisp

Metodologías de Programación II Listas en Lisp Metodologías de Programación II Listas en Lisp Dr. Alejandro Guerra-Hernández Departamento de Inteligencia Artificial Facultad de Física e Inteligencia Artificial aguerra@uv.mx http://www.uv.mx/aguerra

Más detalles

Manual de Lisp para IACS (Curso 91 92)

Manual de Lisp para IACS (Curso 91 92) Dpto. de Álgebra, Computación, Geometría y Topología Universidad de Sevilla Manual de Lisp para IACS (Curso 91 92) Sevilla, 1992 Contenido 1 Introducción 1 1.1 Introducción............................

Más detalles

3 LISTAS EN LISP. Figura 1: Una lista de un elemento, como cons a nil. nil. 1 CL-USER> (cons a nil) 2 (A) 3 CL-USER> (car (a)) 4 A

3 LISTAS EN LISP. Figura 1: Una lista de un elemento, como cons a nil. nil. 1 CL-USER> (cons a nil) 2 (A) 3 CL-USER> (car (a)) 4 A 3 LISTAS EN LISP Las listas fueron originalmente la principal estructura de datos en Lisp De hecho, el nombre del lenguaje es un acrónimo de LISt Processing Las implementaciones modernas de Lisp incluyen

Más detalles

Curso de programación en Lisp

Curso de programación en Lisp Dpto. de Álgebra, Computación, Geometría y Topología Universidad de Sevilla Curso de programación en Lisp José A. Alonso Jiménez (jalonso@us.es) Sevilla, 1991 Contenido 1 El cálculo aritmético 1 1.1 Los

Más detalles

Curso de Lisp con Golden Common Lisp

Curso de Lisp con Golden Common Lisp Curso de Lisp con Golden Common Lisp Dpto. de José A. Alonso Álgebra, Computación, Geometría y Topología Universidad de Sevilla Sevilla, 1990 Contenido 1 El cálculo aritmético 1 1.1 Los números y sus operaciones..................

Más detalles

Anexo 3: Implementaciones en Lisp

Anexo 3: Implementaciones en Lisp Anexo 3: Implementaciones en Lisp José A. Alonso Jiménez Carmen Graciani Díaz Francisco Jesús Martín Mateos José Luis Ruiz Reina Dpto. Ciencias de la Computación e Inteligencia Artificial UNIVERSIDAD DE

Más detalles

Implementación de algoritmos y cálculo simbólico

Implementación de algoritmos y cálculo simbólico Dpto. de Álgebra, Computación, Geometría y Topología Universidad de Sevilla Implementación de algoritmos y cálculo simbólico (Curso 90 91) José A. Alonso Jiménez Sevilla, 1990 Contenido 1 Cálculo aritmético

Más detalles

PRACTICA 1. PROGRAMACIÓN EN LISP Fecha de publicación: 29 de septiembre de Duración: 3 sesiones de laboratorio. Versión: 2011/09/29

PRACTICA 1. PROGRAMACIÓN EN LISP Fecha de publicación: 29 de septiembre de Duración: 3 sesiones de laboratorio. Versión: 2011/09/29 PRACTICA 1. PROGRAMACIÓN EN LISP Fecha de publicación: 29 de septiembre de 2011. Duración: 3 sesiones de laboratorio. Versión: 2011/09/29 Forma de entrega: Según lo dispuesto en las normas de entrega generales,

Más detalles

PROGRAMACIÓN DECLARATIVA

PROGRAMACIÓN DECLARATIVA UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA CUARTO CURSO PRIMER CUATRIMESTRE Tema 5.-

Más detalles

Tema 3. Listas Recursión sobre datos

Tema 3. Listas Recursión sobre datos Tema 3 Listas Recursión sobre datos José A. Alonso M. José Hidalgo Álvaro Romero Dpto. Ciencias de la Computación e Inteligencia Artificial UNIVERSIDAD DE SEVILLA Informática ListasRecursión sobre datos

Más detalles

Dpto. de. Álgebra, Computación, Geometría y Topología Universidad de Sevilla. Manual de Lisp. José A. Alonso Jiménez

Dpto. de. Álgebra, Computación, Geometría y Topología Universidad de Sevilla. Manual de Lisp. José A. Alonso Jiménez Dpto. de Álgebra, Computación, Geometría y Topología Universidad de Sevilla Manual de Lisp José A. Alonso Jiménez (jalonso@us.es) Sevilla, 1991 Contenido 1 Introducción 1 1.1 Introducción............................

Más detalles

Tema 3: Técnicas básicas de

Tema 3: Técnicas básicas de Inteligencia Artificial Curso 999 2000 Tema 3: Técnicas básicas de búsqueda José A. Alonso Jiménez Francisco J. Martín Mateos Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de

Más detalles

Práctica 2 de IA /2012. LÓGICA Fecha publicación: 26 de octubre de 2011 Duración: 3 sesiones de laboratorio Versión: 2011/10/26

Práctica 2 de IA /2012. LÓGICA Fecha publicación: 26 de octubre de 2011 Duración: 3 sesiones de laboratorio Versión: 2011/10/26 Práctica 2 de IA - 2011/2012. LÓGICA Fecha publicación: 26 de octubre de 2011 Duración: 3 sesiones de laboratorio Versión: 2011/10/26 Forward y backward chaining en lógica proposicional En la práctica

Más detalles

Introducción al Lenguaje Common Lisp

Introducción al Lenguaje Common Lisp UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Introducción al Lenguaje Common Lisp JESÚS GONZÁLEZ BOTICARIO DEPARTAMENTO DE INTELIGENCIA ARTIFICIAL Dpto. de Inteligencia Artificial UNIVERSIDAD NACIONAL

Más detalles

LECCIÓN 8. BÚSQUEDAS CON ÁRBOL

LECCIÓN 8. BÚSQUEDAS CON ÁRBOL LECCIÓN 8. BÚSQUEDAS CON ÁRBOL En esta lección se presenta una implementación de algoritmos generales de búsqueda en grafos que emplean árboles de búsqueda. También se analiza la resolución de dos problemas

Más detalles

GUÍA BÁSICA DE SCHEME v.4

GUÍA BÁSICA DE SCHEME v.4 Esta guía básica pretende ser una introducción elemental al lenguaje de programación Scheme. Se presenta como una guía de comienzo rápido de tal forma que permita conocer de una forma muy esquemática los

Más detalles

TP 3: intérprete de C en LISP (alias máquina virtual de C en LISP )

TP 3: intérprete de C en LISP (alias máquina virtual de C en LISP ) TP 3: intérprete de C en LISP (alias máquina virtual de C en LISP Introducción Se deberá programar un intérprete de C en LISP. El código que ingresará al intérprete tendrá ciertas restricciones: Se utilizará

Más detalles

Programación Funcional en LISP Lógica para Ciencias de la Computación

Programación Funcional en LISP Lógica para Ciencias de la Computación Programación Funcional en LISP Lógica para Ciencias de la Computación Primer Cuatrimestre de 2009 Material Adicional Introducción A lo largo de la carrera estudiaremos diversos paradigmas de programación:

Más detalles

Tema 5.- Tipos de datos compuestos

Tema 5.- Tipos de datos compuestos UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMAC CIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO

Más detalles

Lenguajes de Programación Programación funcional

Lenguajes de Programación Programación funcional Lenguajes de Programación Programación funcional Roberto Bonvallet Departamento de Informática Universidad Técnica Federico Santa María Concepto de función En el paradigma imperativo: Una función es una

Más detalles

Tema 6: Técnicas heurísticas en juegos

Tema 6: Técnicas heurísticas en juegos Inteligencia Artificial I Curso 2005 2006 Tema 6: Técnicas heurísticas en juegos José A. Alonso Jiménez Francisco J. Martín Mateos José L. Ruiz Reina Dpto. de Ciencias de la Computación e Inteligencia

Más detalles

Programación Funcional Lisp-Scheme

Programación Funcional Lisp-Scheme Programación Funcional Lisp-Scheme Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional Dónde bajar? Lisp (EdScheme): www.schemers.com com Ejemplo: => (+ (* 3(+ (* 24) (+ 35))) (+

Más detalles

Inteligencia Artificial I 3ra. Práctica: Algoritmos de Búsqueda

Inteligencia Artificial I 3ra. Práctica: Algoritmos de Búsqueda Inteligencia Artificial I 3ra. Práctica: Algoritmos de Búsqueda 1 Descripción general de la práctica El objetivo de esta práctica es estudiar el comportamiento de diferentes algoritmos de búsqueda, para

Más detalles

Tema 6: Búsqueda local y algoritmos genéticos

Tema 6: Búsqueda local y algoritmos genéticos Inteligencia Artificial I Curso 2003 2004 Tema 6: Búsqueda local y algoritmos genéticos José A. Alonso Jiménez Francisco J. Martín Mateos José L. Ruiz Reina Dpto. de Ciencias de la Computación e Inteligencia

Más detalles

LECCION 3. FUNCIONES (I).

LECCION 3. FUNCIONES (I). LECCION 3. FUNCIONES (I). En esta lección se dan los primeros pasos para emplear Common Lisp como lenguaje de programación funcional. Al finalizar la lección, el alumno debe ser capaz de -manejar la notación

Más detalles

Tema 3: Características de la programación funcional. Sesión 6: El paradigma funcional (2)

Tema 3: Características de la programación funcional. Sesión 6: El paradigma funcional (2) Tema 3: Características de la programación funcional Sesión 6: El paradigma funcional (2) Referencias Capítulo 1.1.5 SICP: [[http://mitpress.mit.edu/sicp/full-text/book/book-z- H-10.html#%_sec_1.1.5][The

Más detalles

Tema 4: Programación funcional avanzada en Scheme

Tema 4: Programación funcional avanzada en Scheme Tema 4: Programación funcional avanzada en Scheme Índice 1 Let... 2 2 Let*... 5 3 Letrec... 5 4 Quote...6 5 Eval... 7 6 Datos compuestos: parejas...8 7 Los datos compuestos pueden ser funciones...11 8

Más detalles

PRIMER TUTORIAL DE LipsWorks Personal Edition 6.0.1

PRIMER TUTORIAL DE LipsWorks Personal Edition 6.0.1 PRIMER TUTORIAL DE LipsWorks Personal Edition 6.0.1 Interprete 1. Realizar una suma Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP más elementales.

Más detalles

4.3 Recursión en Scheme. Recursión simple y asignación

4.3 Recursión en Scheme. Recursión simple y asignación 4.3 Recursión en Scheme Recursión simple y asignación Recursión Simple Un procedimiento recursivo es aquel se aplica a si mismo. Ejemplo: (define length (lambda (ls (if (null? ls 0 (+ 1 (length (cdr ls

Más detalles

4.3 Recursión en Scheme

4.3 Recursión en Scheme 4.3 Recursión en Scheme Recursión simple y asignación Recursión Simple Un procedimiento recursivo es aquel se aplica a si mismo. Ejemplo: (define length (lambda (ls (if (null? ls 0 (+ 1 (length (cdr ls

Más detalles

Tema 3: Características de la programación funcional

Tema 3: Características de la programación funcional Tema 3: Características de la programación funcional Sesión 5: El paradigma funcional (1) martes 22 de febrero de 2011 Referencias Capítulo 1.1.5 SICP: [[http://mitpress.mit.edu/sicp/full-text/book/book-z-

Más detalles

FUNCIONES BÁSICAS TIMES ADD1 SUB1

FUNCIONES BÁSICAS TIMES ADD1 SUB1 LENGUAJES DE PROGRAMACIÓN (Sesión 10) 5. PROGRAMACIÓN FUNCIONAL 5.3. Subprogramas y gestión de almacenamiento 5.4. Evaluación del lenguaje Objetivo: Manejar la estructura de un programa bajo LISP y evaluarlo

Más detalles

Procedimientos y Recursividad

Procedimientos y Recursividad Capítulo 2 Procedimientos y Recursividad 2.1 Introducción Es muy fácil definir un procedimiento en Scheme. El lenguaje proporciona una forma elegante de hacerlo, basada en el cálculo lambda de Alonzo Church

Más detalles

Aplicación de la Inducción Matemática Programación Funcional. Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca

Aplicación de la Inducción Matemática Programación Funcional. Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca Aplicación de la Inducción Matemática Programación Funcional Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca Motivación Programación Imperativa Declarativa Procedimental Ejemplo:

Más detalles

Tablas Hash y árboles binarios

Tablas Hash y árboles binarios Tablas Hash y árboles binarios Algoritmos Tablas hash Árboles Binarios Árboles Balanceados Tablas Hash Introducción Las tablas hash son estructuras tipo vector que ayudan a asociar claves con valores o

Más detalles

Tema 2: Introducción a Scheme. Sesión 4: Introducción a Scheme (2)

Tema 2: Introducción a Scheme. Sesión 4: Introducción a Scheme (2) Tema 2: Introducción a Scheme Sesión 4: Introducción a Scheme (2) Referencias DrRacket (http://racket-lang.org/) A brief tour of DrScheme (http://www.plt-scheme.org/software/drscheme/ tour/) Structure

Más detalles

Programación Declarativa

Programación Declarativa Programación Declarativa Tema 2: LISP (SCHEME) 2 Tema 2: LISP (SCHEME) Introducción Representación de Datos Definición de Funciones Predicados Listas 3 Introducción (I) SCHEME es un dialecto de LISP (LISt

Más detalles

LISP. El manejo de símbolos. Ejemplos de expresiones simbólicas. Motivación

LISP. El manejo de símbolos. Ejemplos de expresiones simbólicas. Motivación El manejo de símbolos LISP García Osorio Área de Lenguajes y Sistemas Informáticos Universidad de Burgos Febrero, 1999! En todo programa de Inteligencia Artificial la manipulación de símbolos es una parte

Más detalles

CLIPS Definición de funciones

CLIPS Definición de funciones CLIPS Definición de funciones Por función consideramos tanto las funciones predefinidas en CLIPS como las definidas por el usuario en este lenguaje, o las definidas en un lenguaje externo (C, FORTRAN o

Más detalles

1. INTRODUCCIÓN AL COMMON LISP Introducción al Common Lisp. La primera sesión de prácticas consiste en una introducción al Common Lisp, empezando por lo más básico: el concepto de CONS. Asimismo se realiza

Más detalles

p(b, n) =b n, (b Z, n N) Esta definición matemática, recursiva, proporciona el procedimiento computacional

p(b, n) =b n, (b Z, n N) Esta definición matemática, recursiva, proporciona el procedimiento computacional Recursión e iteración Se exponen en este apartado diversos ejemplos simples de definiciones de procedimientos que generan procesos recursivos o iterativos. Se comienza precisando algoritmos y sus correspondientes

Más detalles

Tema 4: Procedimientos y estructuras recursivas

Tema 4: Procedimientos y estructuras recursivas Tema 4: Procedimientos y estructuras recursivas Contenidos 1. Recursión 1.1 Pensando recursivamente 1.2 El coste de la recursión 1.3 Soluciones al coste de la recursión: procesos iterativos 1.4 Soluciones

Más detalles

Tema 4: Recursión e inducción en ACL2

Tema 4: Recursión e inducción en ACL2 Tema 4: Recursión e inducción en ACL2 José Luis Ruiz Reina Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Razonamiento automático, 2012/13 José L. Ruiz Reina

Más detalles

Funciones & Estructuras de control

Funciones & Estructuras de control Funciones & Estructuras de control Universidad de Concepción, Chile Departamento de Geofísica Programación Científica con Software libre Primavera, 2011 Universidad de Concepción Contenidos 1 2 3 En la

Más detalles

Complejidad de Algoritmos

Complejidad de Algoritmos Complejidad de Algoritmos Tema 5 Introducción Un algoritmo es una secuencia de instrucciones que resuelve un problema Puede tener diferentes implementaciones Para comparar las diferentes formas (algoritmos)

Más detalles

4.7 Operaciones sobre Objetos en Scheme

4.7 Operaciones sobre Objetos en Scheme 4.7 Operaciones sobre Objetos en Scheme Equivalencias y predicados de tipos, listas, números, caracteres, strings y vectores Ejemplos de Equivalencia (eq? a a) ;=> #t (eq? 3.1 3.1) ;=> () (eq? (cons a

Más detalles

Introducción a OCaml. October 19, 2015

Introducción a OCaml. October 19, 2015 Introducción a OCaml October 19, 2015 OCaml: introducción Es un dialecto de ML. Lenguaje de programación funcional. Fuertemente tipado. Con inferencia de tipos. Polimórfico. [Página oficial: http://www.ocaml.org/

Más detalles

4.7 Operaciones sobre Objetos en Scheme. Equivalencias y predicados de tipos, listas, números, caracteres, strings y vectores

4.7 Operaciones sobre Objetos en Scheme. Equivalencias y predicados de tipos, listas, números, caracteres, strings y vectores 4.7 Operaciones sobre Objetos en Scheme Equivalencias y predicados de tipos, listas, números, caracteres, strings y vectores a) Equivalencias (eq? obj 1 obj 2 ) retorno: #t si son idénticos (eqv? obj 1

Más detalles

2 INTRODUCCIÓN A LISP

2 INTRODUCCIÓN A LISP 2 INTRODUCCIÓN A LISP El objetivo de este capítulo es que puedan programar en Lisp tan pronto como sea posible Al final de la misma, conocerán lo suficiente de Lisp como para comenzar a escribir sus propios

Más detalles

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional CAPÍTULO IV: Programación Funcional 4.1 Introducción a la Programación Funcional 1 Programación Funcional Paradigma diferente a los imperativos, que se aleja de la máquina de von Neumann Basado en funciones

Más detalles

Niveles de abstracción. Lisp y la pedagogía

Niveles de abstracción. Lisp y la pedagogía Niveles de abstracción. Lisp y la pedagogía F. Javier Gil Chica versión de enero de 2015 Resumen Estudiar implica alcanzar sucesivos niveles de abstracción. En este artículo se muestra cómo estos niveles

Más detalles

PROGRAMACIÓN ORIENTADA A LA INTELIGENCIA ARTIFICIAL

PROGRAMACIÓN ORIENTADA A LA INTELIGENCIA ARTIFICIAL PROGRAMACIÓN ORIENTADA A LA INTELIGENCIA ARTIFICIAL Ejercicios de programación en LISP y PROLOG prog-ia@dia.uned.es Dpto. Inteligencia Artificial E.T.S.I. Informática (UNED) C/ Juan del Rosal 16 28040

Más detalles

PROGRAMACIÓN AUTOLISP

PROGRAMACIÓN AUTOLISP Departamento de Ingeniería Geográfica y Técnicas de Expresión Gráfica PROGRAMACIÓN AUTOLISP (PERSONALIZACIÓN DE AUTOCAD P Pa a/2 cenp a/2 ceng T a/3 a a/2 a/3 cen T a/2 a/12 a a/12 a/12 Sistema de rectas

Más detalles

Indice DISEÑO ASISTIDO POR ORDENADOR TEMA: SELECCIÓN DE OBJETOS

Indice DISEÑO ASISTIDO POR ORDENADOR TEMA: SELECCIÓN DE OBJETOS TEMA: DE OBJETOS Designe objetos: con este mensaje comienzan todos los comandos para modificar entidades gráficas. Los objetos designados pasarán a formar parte de un conjunto de selección. Un conjunto

Más detalles

4.5 Ligado de Variables en Scheme

4.5 Ligado de Variables en Scheme 4.5 Ligado de Variables en Scheme Referencia a variables, lambda, formas let y asignación a) Referencia a una Variable variable retorno: valor de la variable Cualquier identificador no citada en una expresión

Más detalles

Abstracción de procedimientos

Abstracción de procedimientos Abstracción de procedimientos 1.- Consideremos ABN (árboles binarios numéricos) sin nodos repetidos. Denimos los siguientes conceptos: Se pide: Dados dos ABN, A y B, decimos que B es SUBARBOL PRINCIPAL

Más detalles

Tema 6: Estructuras de datos recursivas

Tema 6: Estructuras de datos recursivas Tema 6: Estructuras de datos recursivas Índice 1 Listas jerárquicas...2 2 Árboles binarios... 4 3 Árboles genéricos...7 4 Referencias...10 1. Listas jerárquicas Las listas tienen la propiedad de la clausura

Más detalles

Tema 4.- Recursión e iteración

Tema 4.- Recursión e iteración UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER

Más detalles

Tema 3: Recursión. Índice

Tema 3: Recursión. Índice Índice 1 Recursión... 2 2 Confía en la recursión... 2 3 El coste espacial de la recursión... 5 4 Procesos recursivos e iterativos... 7 4.1 Ejemplos...10 5 Referencias...12 1. Recursión Ya hemos visto algunos

Más detalles

MANUAL BÁSICO DEL LENGUAJE SQL

MANUAL BÁSICO DEL LENGUAJE SQL MANUAL BÁSICO DEL LENGUAJE SQL INTRODUCCIÓN A continuación se presentan lo que son comandos DLL y DML, las clausulas, lo operadores (lógicos y de comparación), funciones de agregado, consultas, tipos de

Más detalles

Tema 10: Tipos de datos mutables

Tema 10: Tipos de datos mutables Índice 1 Introducción... 2 2 Primitivas set-car! y set-cdr!...2 2.1 Como implementar cons, set-car! y set-cdr!...3 3 Mutación... 3 4 Igualdad...6 5 TADs con datos mutables... 9 5.1 Lista ordenada... 9

Más detalles

Proposiciones Condicionales

Proposiciones Condicionales SENTENCIAS CONDICIONALES SIMPLES: if- Anteriormente se discutió que una de las estructuras utilizadas en la programación estructurada es la Estructura Selectiva o Condicional. Se explican aquí las sentencias

Más detalles

Inducción, Recursión y Alcance. Inducción, Recursión y alcance. Inducción, Recursión y Alcance. Inducción, Recursión y Alcance

Inducción, Recursión y Alcance. Inducción, Recursión y alcance. Inducción, Recursión y Alcance. Inducción, Recursión y Alcance Inducción, Recursión y alcance Especificación inductiva de tipos de datos Tipo de datos: Conjunto de valores Conjunto de operaciones sobre dichos valores ejemplo: Sea S el conjunto más pequeño tal que:

Más detalles

Introducción a la programación funcional

Introducción a la programación funcional Introducción a la programación funcional Salvador Lucas Alba Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia http://www.dsic.upv.es/users/elp/slucas.html Objetivos

Más detalles

Lección 8: Potencias con exponentes enteros

Lección 8: Potencias con exponentes enteros GUÍA DE MATEMÁTICAS III Lección 8: Potencias con exponentes enteros Cuando queremos indicar productos de factores iguales, generalmente usamos la notación exponencial. Por ejemplo podemos expresar x, como

Más detalles

Lenguajes de programación. Abdiel E. Cáceres González Instituto Tecnológico de Monterrey Campus Ciudad de México Verano 2004

Lenguajes de programación. Abdiel E. Cáceres González Instituto Tecnológico de Monterrey Campus Ciudad de México Verano 2004 Lenguajes de programación Abdiel E. Cáceres González Instituto Tecnológico de Monterrey Campus Ciudad de México Verano 2004 Tower of Babel by Gustav Dore 1986 1 LISP (Antecedentes Históricos) El interés

Más detalles

PROGRAMACIÓN ORIENTADA A LA INTELIGENCIA ARTIFICIAL

PROGRAMACIÓN ORIENTADA A LA INTELIGENCIA ARTIFICIAL PROGRAMACIÓN ORIENTADA A LA INTELIGENCIA ARTIFICIAL Ejercicios de programación en LISP y PROLOG Angeles Manjarrés Riesco Severino Fernández Galán Jesús González Boticario prog-ia@dia.uned.es Dpto. Inteligencia

Más detalles

Metodologías de Programación II Macros en Lisp

Metodologías de Programación II Macros en Lisp Metodologías de Programación II Macros en Lisp Dr. Alejandro Guerra-Hernández Departamento de Inteligencia Artificial Facultad de Física e Inteligencia Artificial aguerra@uv.mx http://www.uv.mx/aguerra

Más detalles

7 MULTI-PROCESAMIENTO EN LISP

7 MULTI-PROCESAMIENTO EN LISP 7 MULTI-PROCESAMIENTO EN LISP Normalmente, las implementaciones de Lisp pueden ejecutar diferentes hilos dentro de un solo proceso, compartiendo el mismo espacio de memoria De hecho, Lispworks 60 soporta

Más detalles

LECCION 1. ATOMOS Y LISTAS.

LECCION 1. ATOMOS Y LISTAS. LECCION 1. ATOMOS Y LISTAS. En la lección 1 se introducen las construcciones básicas del lenguaje LISP. Al finalizar esta lección, el alumno debe ser capaz de -escribir cualquier expresión numérica en

Más detalles

Tema 3: Programación funcional

Tema 3: Programación funcional Tema 3: Programación funcional Contenidos 5. Funciones como tipos de datos de primera clase 5.1. Forma especial lambda 5.2. Las funciones son objetos de primera clase 5.3. Funciones de orden superior 6.

Más detalles

TEMA 1 FUNDAMENTOS DE PROGRAMACIÓN

TEMA 1 FUNDAMENTOS DE PROGRAMACIÓN TEMA 1 FUNDAMENTOS DE PROGRAMACIÓN 1.1 Introducción 1.2 Evolución de los lenguajes de programación 1.3 Paradigmas de programación 1.4 Métodos de implementación 1.5 Lecturas recomendadas 1.6 Ejercicios

Más detalles

Estructura de Datos y de la Información

Estructura de Datos y de la Información Universidad Rey Juan Carlos Curso 2009/10 Ingeniería Técnica en Informática de Gestión Estructura de Datos y de la Información Examen Final Junio 2010 Fecha: 24-6-2010 Soluciones Ejercicio 1. (Puntuación

Más detalles

Access SQL: DDL y DML. Una empresa de Ingeniería precisa una base de datos para la gestión de sus proyectos.

Access SQL: DDL y DML. Una empresa de Ingeniería precisa una base de datos para la gestión de sus proyectos. SGBD y SQL Access SQL: DDL y DML Ejercicio Una empresa de Ingeniería precisa una base de datos para la gestión de sus proyectos. Necesita almacenar información acerca de sus empleados y los proyectos en

Más detalles

Abstracción Sintáctica y Abstracción de Datos

Abstracción Sintáctica y Abstracción de Datos Abstracción Sintáctica y Abstracción de Datos Abstracción Sintáctica y de Datos (2) Abstracción de datos De las representaciones procedurales a las representaciones estructuradas (Data Structure Representations

Más detalles

Rolando Burgos Cárdenas MANUAL DE REFERENCIA RAPIDA DE LISP. http://www.ing.udec.cl/~rburgosc/ e-mail: rburgosc@ing.udec.cl

Rolando Burgos Cárdenas MANUAL DE REFERENCIA RAPIDA DE LISP. http://www.ing.udec.cl/~rburgosc/ e-mail: rburgosc@ing.udec.cl Universidad de Concepción Facultad de Ingeniería Departamento de Ingeniería Informática Y Ciencias de la Computación MANUAL DE REFERENCIA RAPIDA DE LISP http://www.ing.udec.cl/~rburgosc/ e-mail: rburgosc@ing.udec.cl

Más detalles

Macros en Lisp. 4.1. Cómo funcionan las macros?

Macros en Lisp. 4.1. Cómo funcionan las macros? Capítulo 4 Macros en Lisp Resumen Las macros en Lisp permiten al programador definir operadores que están implementados por transformación. La definición de una macro es esencialmente una función que genera

Más detalles

Capítulo 3 Algoritmos recursivos

Capítulo 3 Algoritmos recursivos Capítulo 3 Algoritmos recursivos Los algoritmos recursivos se basan en la metodología de llamar repetidamente la propia función en que están definidos, y son de gran utilidad en multitud de campos en la

Más detalles

APÉNDICE: EJERCICIOS DE PROGRAMACIÓN JESÚS GONZÁLEZ BOTICARIO

APÉNDICE: EJERCICIOS DE PROGRAMACIÓN JESÚS GONZÁLEZ BOTICARIO APÉNDICE: EJERCICIOS DE PROGRAMACIÓN JESÚS GONZÁLEZ BOTICARIO EJERCICIOS BÁSICOS DE LISP 81 EJERCICIOS DE LISP 1. Ejercicios Básicos de Lisp 1.1 Definir una función que calcule el valor de: F = 1 ax2

Más detalles

Composición Asistida por Computadora

Composición Asistida por Computadora Facultad de Artes y Ciencias Musicales Composición Asistida por Computadora Seminario de Composición Asistida y Procesamiento en Tiempo Real de Sonido y Música Doctorado en Música Área Composición Junio

Más detalles

Metodologías de Programación II Introducción

Metodologías de Programación II Introducción Metodologías de Programación II Introducción Dr. Alejandro Guerra-Hernández Departamento de Inteligencia Artificial Facultad de Física e Inteligencia Artificial aguerra@uv.mx http://www.uv.mx/aguerra Maestría

Más detalles

UNIDAD I. ALGORITMOS

UNIDAD I. ALGORITMOS UNIDAD I. ALGORITMOS 1.1 Definición Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema específico. 1.2 Tipos Cualitativos: Son aquellos

Más detalles

Estructuras de control. Secuencial, condicional y repetitivas.

Estructuras de control. Secuencial, condicional y repetitivas. Estructuras de control. Secuencial, condicional y repetitivas. 1 Estructuras de control. Hemos visto en los diagramas de flujo y pseudo-código que: 1) Se piden datos de entrada (al usuario) Asiganción

Más detalles

Introducción a las sentencias de control

Introducción a las sentencias de control INSTRUCCIONES DE CONTROL CONTENIDOS 1. Introducción a las sentencias de control. 2. Instrucciones o sentencias condicionales: IF, IF-ELSE, SWITCH. 3. Instrucciones o sentencias repetitivas o iterativas:

Más detalles

Concepto, Paradigma, Lenguaje y Modelo de Programación

Concepto, Paradigma, Lenguaje y Modelo de Programación Concepto, Paradigma, Lenguaje y Modelo de Programación Definiciones Cada problema a resolver requiere de diferentes conceptos, cada paradigma ofrece un enfoque y un conjunto de mecanismos de razonamiento.

Más detalles

PL/SQL. DECLARE /* Parte Declarativa */ BEGIN /* Parte de Ejecución */ EXCEPTION /* Parte de Excepciones */ END;

PL/SQL. DECLARE /* Parte Declarativa */ BEGIN /* Parte de Ejecución */ EXCEPTION /* Parte de Excepciones */ END; 18 de marzo de 2002 1 1. Declaraciones Variables y constantes Cursores Excepciones 2. Instrucciones Asignación Control de flujo Bucles 3. Manejadores de excepciones 4. Anidamiento de bloques 5. Tipos de

Más detalles

Características del lenguaje SQL

Características del lenguaje SQL Lenguaje SQL Características del lenguaje SQL Es el lenguaje estándar para realizar operaciones en bases de datos relacionales. Instrucciones: SELECT Consulta. Su implementación está basada en álgebra

Más detalles

Algoritmos y Diagramas de flujo

Algoritmos y Diagramas de flujo Algoritmos y Diagramas de flujo En los pasos a seguir para el desarrollo de un problema, existen básicamente dos tipos de elementos con los cuales es posible especificar un problema en forma esquemática

Más detalles

Examen Lenguajes de Programación (CC41A)

Examen Lenguajes de Programación (CC41A) Examen Lenguajes de Programación (CC41A) Departamento de Ciencias de la Computación Universidad de Chile Profesor: Éric Tanter 21 de Noviembre 2007 (2 horas) sin apuntes 1. (1.5pt) Considere la función

Más detalles

Estructuras de control condicionales

Estructuras de control condicionales Estructuras de control condicionales Por defecto, las instrucciones de un programa se ejecutan secuencialmente: El orden secuencial de ejecución no altera el flujo de control del programa respecto al orden

Más detalles

Abstracción de Datos y

Abstracción de Datos y Capítulo 3 Abstracción de Datos y Números El cómputo numérico ha sido tradicionalmente ignorado por la comunidad de Lisp. Hasta antes del Common Lisp nadie había ideado una estrategia detallada para ordenar

Más detalles