Tema 3. Listas Recursión sobre datos
|
|
- Daniel Silva Olivares
- hace 5 años
- Vistas:
Transcripción
1 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 3.1
2 Recursión sobre datos Contenido: Recursión plana. Recursión profunda. Recursión terminal. Informática ListasRecursión sobre datos 3.2
3 Recursión sobre listas: suma-elementos (suma-elementos ( )) => 10 (suma-elementos (5 1 3)) => 9 (suma-elementos ()) => 0 Algoritmo recursivo de suma-elementos: Entrada: L (lista numérica plana) SI L es la lista vacía ENTONCES devolver 0 EN CASO CONTRARIO devolver la suma de * el primer elemento de L y * el resultado de sumar los elementos del resto de L Informática ListasRecursión sobre datos 3.3
4 Recursión sobre listas: suma-elementos Definición del procedimiento suma-elementos: (define suma-elementos (lambda (l) (if (null? l) 0 (+ (car l) (suma-elementos (cdr l)))))) Informática ListasRecursión sobre datos 3.4
5 Traza de suma-elementos > (suma-elementos ( )) (suma-elementos ( )) (suma-elementos (2 3 4)) (suma-elementos (3 4)) (suma-elementos (4)) (suma-elementos ()) Informática ListasRecursión sobre datos 3.5
6 Recursión sobre listas: ordenada? (ordenada? ( )) => #t (ordenada? ( )) => #f (ordenada? ()) => #t Algoritmo recursivo de ordenada?: Entrada: L (lista numérica plana) SI L es la lista vacía o tiene un sólo elemento ENTONCES devolver #t SI el primer elemento de L es mayor estricto que el segundo ENTONCES devolver #f EN OTRO CASO comprobar si los elementos del resto de L están en orden creciente Informática ListasRecursión sobre datos 3.6
7 Recursión sobre listas: ordenada? Definición del procedimiento ordenada?: (define ordenada? (lambda (l) (cond ((or (null? l) (null? (cdr l))) #t) ((> (car l) (cadr l)) #f) (else (ordenada? (cdr l)))))) Informática ListasRecursión sobre datos 3.7
8 Construcción de listas por recursión: suc-decreciente (suc-decreciente 0) => (0) (suc-decreciente 2) => (2 1 0) (suc-decreciente 6) => ( ) Algoritmo recursivo de suc-decreciente: Entrada: N (número natural) SI N es el cero ENTONCES devolver la lista (0) EN OTRO CASO * añadir el número N a la lista obtenida al * construir la sucesión decreciente desde N-1 hasta 0 Informática ListasRecursión sobre datos 3.8
9 Construcción de listas por recursión: suc-decreciente Definición del procedimiento suc-decreciente: (define suc-decreciente (lambda (n) (if (zero? n) (0) (cons n (suc-decreciente ( n 1)))))) Traza de suc-decreciente: (suc-decreciente 2) (suc-decreciente 1) (suc-decreciente 0) (0) (1 0) (2 1 0) Informática ListasRecursión sobre datos 3.9
10 Construcción de listas por recursión: quita-primera (quita-primera a (c d a b a e)) => (c d b a e) (quita-primera a (c (a b) a d)) => (c (a b) d) (quita-primera a ()) => () (quita-primera a (1 2 3)) => (1 2 3) Algoritmo recursivo de quita-primera: Entrada: X (dato cualquiera) y L (lista) SI L es la lista vacía, devolver () SI el primer elemento de L es igual a X, devolver el resto de L EN OTRO CASO * añadir el primer elemento de L a la lista resultante de * eliminar la primera ocurrencia de X en el resto de L Informática ListasRecursión sobre datos 3.10
11 Construcción de listas por recursión: quita-primera Definición del procedimiento quita-primera: (define quita-primera (lambda (x l) (cond ((null? l) ()) ((equal? (car l) x) (cdr l)) (else (cons (car l) (quita-primera x (cdr l))))))) Informática ListasRecursión sobre datos 3.11
12 Construcción de listas por recursión: cambia (cambia a b (c d a b)) => (c d b b) (cambia a b (c d b a b (a c) f)) => (c d b b b (a c) f) Algoritmo recursivo de cambia: Entrada: X (dato cualquiera), Y (dato cualquiera) y L (lista) SI L es la lista vacía, devolver la lista vacía SI el primer elemento de L es igual a X * añadir Y a la lista resultante de * cambiar X por Y en el resto de L EN OTRO CASO * añadir el primer elemento de L a la lista resultante de * cambiar X por Y en el resto de L Informática ListasRecursión sobre datos 3.12
13 Construcción de listas por recursión: cambia Definición del procedimiento cambia: (define cambia (lambda (x y l) (cond ((null? l) ()) ((equal? (car l) x) (cons y (cambia x y (cdr l)))) (else (cons (car l) (cambia x y (cdr l))))))) Informática ListasRecursión sobre datos 3.13
14 Recursión plana: lugares-pares (lugares-pares (1 s 3 d f g 5)) => (s d g) (lugares-pares (1 (2) (6 7))) => ((2) 4 (6 7)) (lugares-pares ()) => () (lugares-pares (uno)) => () Definición del procedimiento lugares-pares: (define lugares-pares (lambda (l) (if (or (null? l) (null? (cdr l))) () (cons (cadr l) (lugares-pares (cddr l)))))) Informática ListasRecursión sobre datos 3.14
15 Recursión plana: producto-escalar (producto-escalar (1 1 1) (1 2 3)) => 6 (producto-escalar ( ) ( )) => 60 (producto-escalar () ()) => 0 Definición del procedimiento producto-escalar: (define producto-escalar (lambda (l1 l2) (if (null? l1) 0 (+ ( (car l1) (car l2)) (producto-escalar (cdr l1) (cdr l2)))))) Informática ListasRecursión sobre datos 3.15
16 Recursión profunda: suma-todos (suma-todos ( )) => 10 (suma-todos (1 (2) (3 (4)))) => 10 (suma-todos ()) => 0 Algoritmo recursivo de suma-todos: Entrada: L (lista numérica) SI L es la lista vacía, devolver 0 SI el primer elemento de L es una lista devolver la suma de * el resultado de sumar los números del primer elemento de L * el resultado de sumar los números del resto de L EN OTRO CASO devolver la suma de * el primer elemento de L y * el resultado de sumar los números del resto de L Informática ListasRecursión sobre datos 3.16
17 Recursión profunda: suma-todos Definición del procedimiento suma-todos: (define suma-todos (lambda (l) (cond ((null? l) 0) ((list? (car l)) (+ (suma-todos (car l)) (suma-todos (cdr l)))) (else (+ (car l) (suma-todos (cdr l))))))) Informática ListasRecursión sobre datos 3.17
18 Recursión profunda: cambia-todos (cambia-todos a b (c d a b)) => (c d b b) (cambia-todos a b (c d b a b (a c) f)) => (c d b b b (b c) f) (cambia-todos (0) 1 ((0) 0 ((0) 1 ()))) => (1 0 (1 1 ())) Definición del procedimiento cambia-todos: (define cambia-todos (lambda (x y l) (cond ((null? l) ()) ((equal? x (car l)) (cons y (cambia-todos x y (cdr l)))) ((pair? (car l)) (cons (cambia-todos x y (car l)) (cambia-todos x y (cdr l)))) (else (cons (car l) (cambia-todos x y (cdr l))))))) Informática ListasRecursión sobre datos 3.18
19 Recursión profunda: cuenta-parentesis (cuenta-parentesis ()) => 2 (cuenta-parentesis ((1) ((2)))) => 8 (cuenta-parentesis (() (a ()) (b () (c ())))) => 16 Definición del procedimiento cuenta-parentesis: (define cuenta-parentesis (lambda (l) (cond ((null? l) 2) ((list? (car l)) (+ (cuenta-parentesis (car l)) (cuenta-parentesis (cdr l)))) (else (cuenta-parentesis (cdr l)))))) Informática ListasRecursión sobre datos 3.19
20 Representación de listas mediante árboles (a (b (c)) ((d)) (e (f g))) a (b (c)) ((d)) (e (f g)) Nivel b (c) (d) e (f g) Nivel c d f g Nivel 3 Informática ListasRecursión sobre datos 3.20
21 Listas y árboles: profundidad (profundidad (a b c)) => 1 (profundidad (a (b c) (d))) => 2 (profundidad (a (b (c)) ((d)) (e (f g)))) => 3 (profundidad a) => 0 (profundidad ()) => 0 Definición del procedimiento profundidad: (define profundidad (lambda (expr) (if (not (pair? expr)) 0 (max (+ 1 (profundidad (car expr))) (profundidad (cdr expr)))))) Informática ListasRecursión sobre datos 3.21
22 Listas y árboles: aplanar (aplanar ((a ((b c))) d ((e) f))) => (a b c d e f) (aplanar (a (b ()) ())) => (a b) (aplanar ()) => () Definición del procedimiento aplanar: (define aplanar (lambda (l) (cond ((null? l) ()) ((list? (car l)) (append (aplanar (car l)) (aplanar (cdr l)))) (else (cons (car l) (aplanar (cdr l))))))) Informática ListasRecursión sobre datos 3.22
23 Recursión terminal: fact-it (fact-it 3) => 6 (fact-it 5) => 120 Definición del procedimiento fact-it: (define fact-it (lambda (n) (fact-it-aux n 1))) (define fact-it-aux (lambda (n acumulador) (if (zero? n) acumulador (fact-it-aux ( n 1) ( n acumulador))))) Informática ListasRecursión sobre datos 3.23
24 Tabla y traza de fact-it-aux Tabla: n acumulador Traza: > (fact-it 4) (fact-it-aux 4 1) (fact-it-aux 3 4) (fact-it-aux 2 12) (fact-it-aux 1 24) (fact-it-aux 0 24) Informática ListasRecursión sobre datos 3.24
25 Recursión-terminal: suma-elementos-it (suma-elementos-it ( )) => 10 (suma-elementos-it (5 1 3)) => 9 (suma-elementos-it ()) => 0 Definición del procedimiento suma-elementos-it: (define suma-elementos-it (lambda (lista) (suma-elementos-it-aux lista 0))) (define suma-elementos-it-aux (lambda (l ac) (if (null? l) ac (suma-elementos-it-aux (cdr l) (+ ac (car l)))))) Informática ListasRecursión sobre datos 3.25
26 Recursión terminal: cambia-it (cambia-it a b (c d a b a c f)) => (c d b b b c f) (cambia-it a b (c d a b)) => (c d b b) (cambia-it a b (c d b a b (a c) f)) => (c d b b b (a c) f) Definición del procedimiento cambia-it: (define cambia-it (lambda (x y l) (cambia-it-aux x y l ()))) (define cambia-it-aux (lambda (x y l ac) (cond ((null? l) ac) ((equal? x (car l)) (cambia-it-aux x y (cdr l) (append ac (list y)))) (else (cambia-it-aux x y (cdr l) (append ac (list (car l)))))))) Informática ListasRecursión sobre datos 3.26
27 Tabla y traza de cambia-it-aux Tabla: l ac (c d a b) () (d a b) (c) (a b) (c d) (b) (c d b) () (c d b b) Traza: > (cambia-it a b (c d a b)) (cambia-it-aux a b (c d a b) ()) (cambia-it-aux a b (d a b) (c)) (cambia-it-aux a b (a b) (c d)) (cambia-it-aux a b (b) (c d b)) (cambia-it-aux a b () (c d b b)) (c d b b) (c d b b) (c d b b) (c d b b) (c d b b) (c d b b) Informática ListasRecursión sobre datos 3.27
28 Recursión terminal: fib-it La sucesión de Fibonacci: 0,1,1,2,3,5,8,13,... Definición mediante recursión terminal de fib-it: (define fib-it (lambda (n) (if (zero? n) 0 (fib-it-aux n 0 1)))) (define fib-it-aux (lambda (n ac1 ac2) (if (= n 1) ac2 (fib-it-aux ( n 1) ac2 (+ ac1 ac2))))) Informática ListasRecursión sobre datos 3.28
29 Tabla y traza de fib-it-aux Tabla: n ac1 ac Traza: > (fib-it 5) (fib-it-aux 5 0 1) (fib-it-aux 4 1 1) (fib-it-aux 3 1 2) (fib-it-aux 2 2 3) (fib-it-aux 1 3 5) Informática ListasRecursión sobre datos 3.29
30 Recursión terminal y recursión profunda: suma-todos-it (suma-todos-it ( )) => 10 (suma-todos-it (1 (2) (3 (4)))) => 10 (suma-todos-it ()) => 0 Definición del procedimiento suma-todos-it: (define suma-todos-it (lambda (lista) (suma-todos-it-aux lista 0))) (define suma-todos-it-aux (lambda (l ac) (cond ((null? l) ac) ((pair? (car l)) (suma-todos-it-aux (append (car l) (cdr l)) ac)) (else (suma-todos-it-aux (cdr l) (+ (car l) ac)))))) Informática ListasRecursión sobre datos 3.30
31 Tabla de suma-todos-it-aux l (1 (2) (3 (4))) ((2) (3 (4))) (2 (3 (4))) ((3 (4))) ac l (3 (4)) ((4)) (4) () ac Informática ListasRecursión sobre datos 3.31
32 Bibliografía [Abelson 96] Cap. 1: Building abstractions with procedures. Cap. 1.2: Procedures and processes they generate. [Springer 94] Cap. 2: Procedures and recursion. Cap. 3: Data driven recursion. Informática ListasRecursión sobre datos 3.32
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 detalles4.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 detallesProgramació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 detallesTema 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 detallesGUÍ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 detallesTema 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 detallesAbstracció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 detallesPROGRAMACIÓ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 detallesTema 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 detallesProgramación Estructurada. Complementos de Informática Tema 2: Programación Estructurada y Programación Modular. Números Amigos
Programación Estructurada Complementos de Informática Tema 2: Programación Estructurada y Programación Modular Álo Romero Jiménez Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad
Más detallesTema 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 detallesProgramació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 detallesProcedimientos 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 detallesTema 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 detallesAplicació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 detallesTema 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 detallesTema 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 detallesAnálisis de algoritmos. Recursividad
Análisis de algoritmos Recursividad 1 Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más pequeña dentro de sí. Ésta muñeca, también contiene
Más detallesTema 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 detallesInducció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 detallesLenguajes 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 detallesTema 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 detallesAnexo 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 detallesProcedimientos Definidos Localmente
Capítulo 5 Procedimientos Definidos Localmente 5.1 Distinguiendo entre definiciones globales ylocales Todas las primitivas (o procedimientos) disponibles en Scheme (p.ej., car, cons, cdr, etc.) se definen
Más detallesTema 3.- Predicados y sentencias condicionales
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 detallesTema 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 detallesTema 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 detallesProgramació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 detallesTema 6: Funciones recursivas
Tema 6: Funciones recursivas Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla Tema 6: Funciones
Más detallesTema 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 detallesUNIDAD 7: PROGRAMACIÓN EN R
UNIDAD 7: PROGRAMACIÓN EN R Técnicas Inteligentes en Bioinformática Master en Lógica, Computación e Inteligencia Artificial Dpto. Ciencias de la Computación e Inteligencia Artificial Francisco J. Romero
Más detallesQué es la recursividad?
Recursividad 1 Ejemplo Matrushka La Matrushka es una artesanía tradicional rusa. Es una muñeca de madera que contiene otra muñeca más pequeña dentro de sí. Esta muñeca, también contiene otra muñeca dentro.
Más detallesTP 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 detallesFunciones recursivas
Introducción a la Computación Funciones recursivas Esteban E. Mocskos (emocskos@dc.uba.ar) Facultad de Ciencias Exactas y Naturales, UBA CONICET 08/04/2014 E. Mocskos (UBA CONICET) Clase 9: Funciones Recursivas
Más detalles4.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 detalles4.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 detallesDescubrir los árboles como paradigma de los tipos Recursivos de Datos
TEMA 5 ÁRBOLES(*) Una de las estructuras las datos más importantes y prominentes que existen es el árbol. No es un árbol en el sentido botánico de la palabra, sino uno de naturaleza más abstracta. Todos
Más detallesFunciones recursivas
Introducción a la Computación Funciones recursivas Esteban E. Mocskos (emocskos@dc.uba.ar) Facultad de Ciencias Exactas y Naturales, UBA CONICET 13/09/2017 E. Mocskos (UBA CONICET) Funciones Recursivas
Más detallesRECURSIVIDAD. Prof. Ing. M.Sc. Fulbia Torres
ESTRUCTURAS DE DATOS 2006 Prof. UNIDAD II ESTRUCTURAS DE DATOS RECURSIVIDAD Definición. Estado base. Estado general. Ejemplos. Ejercicios. DEFINICIÓN Es una técnica de programación muy potente que permite
Más detallesRecursividad... un análisis posterior. Aurelio Sanabria Introducción a la programación
Recursividad... un análisis posterior Aurelio Sanabria Introducción a la programación II semestre, 2016 Construyendo Programas Buscar soluciones a problemas (pensar en un algoritmo) requiere de una etapa
Más detallesComputación I. Facultad de Ingeniería Universidad de la República
Computación I Curso 2017 Facultad de Ingeniería Universidad de la República Ejercicio 1 Buscar la n-ésimaocurrencia de un elemento en un vector y devolver su posición. Si el elemento no pertenece al vector
Más detalles4.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 detallesCurso 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 detallesCurso 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 detallesEstructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2
Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2 Diseño de algoritmos recursivos 1. Dado un vector de enteros de longitud N,
Más detallesManual 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 detallesProgramación Declarativa. Ingeniería Informática Especialidad de Computación Cuarto curso. Primer cuatrimestre
Programación Declarativa Ingeniería Informática Especialidad de Computación Cuarto curso. Primer cuatrimestre Escuela Politécnica Superior de Córdoba Universidad de Córdoba Curso académico: 2013 2014 Práctica
Más detallesTema 5- Diseño Recursivo y. Objetivos Principales. Bibliografía Básica
Tema 5- Diseño Recursivo y Eficiente Tema 5- Diseño Recursivo y Eficiente Germán Moltó Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica de Valencia Índice general: 1. Introducción
Más detallesTema 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 detallesDepartamento de Informática Universidad de Valladolid Campus de Segovia TEMA 1: RECURSIÓN
Departamento de Informática Universidad de Valladolid Campus de Segovia TEMA 1: RECURSIÓN ÍNDICE Definición Conceptos básicos Ejemplos recursivos Recursión mútua Recursión e iteración DEFINICIÓN Técnica
Más detallesAbstracció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 detallesTema 7: Programación imperativa. Sesión 21: Programación imperativa (2)
Tema 7: Programación imperativa Sesión 21: Programación imperativa (2) Indice Historia de la programación imperativa Características principales Datos mutables en Scheme y en Scala Estructuras de control
Más detallesAbstracció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 detallesResolución de Problemas y Algoritmos Segundo cuatrimestre 2015 Clase 11: Construcción de primitivas (Funciones)
Resolución de Problemas y Algoritmos Segundo cuatrimestre 2015 Clase 11: Construcción de primitivas (Funciones) Dr. Sergio A. Gómez http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la
Más detallesProgramación 2. Lección 3. Introducción a la recursividad
Programación 2 Lección 3. Introducción a la recursividad 1 1. Definiciones recursivas Número natural y número entero Múltiplos de 7 Secuencia de datos Factorial de un número natural Sucesión de Fibonacci
Más detallesMetodologí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 detallesANÁLISIS SINTÁCTICO PREDICTIVO NO RECURSIVO
1 UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIERÍA DEPARTAMENTO DE COMPUTACIÓN ANÁLISIS SINTÁCTICO PREDICTIVO NO RECURSIVO Elaborado el Martes 12 de Octubre de 2004 I.- INTRODUCCIÓN Es posible realizar
Más detallesPROGRAMACIÓ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 detallesInteligencia Artificial: Prolog
Inteligencia Artificial: Prolog Recursión Christopher Expósito-Izquierdo 1, Belén Melián-Batista 2 {cexposit 1, mbmelian 2 }@ull.es Universidad de La Laguna (España) Contenidos Concepto de Recursión Recursión
Más detallesPRIMER 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 detallesProgramación Declarativa. Ingeniería Informática Especialidad de Computación Cuarto curso. Primer cuatrimestre
Programación Declarativa Ingeniería Informática Especialidad de Computación Cuarto curso. Primer cuatrimestre Escuela Politécnica Superior de Córdoba Universidad de Córdoba Curso académico: 2014 2015 Práctica
Más detallesLISP I. Programación recursiva frente a iterativa. Características de la programación recursiva:
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
Más detallesTema 2: Introducción a la programación con Haskell
Tema 2: Introducción a la programación con Haskell Informática (2010 11) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2
Más detallesProgramación I Recursividad.
Programación I Recursividad http://proguno.unsl.edu.ar proguno@unsl.edu.ar Recursividad Técnica de resolución de problemas particulares. La definición de un concepto es recursiva si el concepto es definido
Más detallesRecursividad. Dept. Ciencias de la Computación e I.A. Universidad de Granada
TEMA Recursividad Dept. Ciencias de la Computación e I.A. Universidad de Granada Índice Introducción a la recursión Recursividad frente a iteración Eficiencia de los algoritmos recursivos Ejemplos y ejercicios
Más detallesPHP: Lenguaje de programación
Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054
Más detallesRecursividad... un análisis posterior. Jaime Gutiérrez Alfaro Introducción a la programación
Recursividad... un análisis posterior Jaime Gutiérrez Alfaro Introducción a la programación I semestre, 2015 Agenda Introducción Cálculos por aproximación Tipos de recursión Concepto de error Depuración
Más detallesTema 9: Declaraciones de tipos y clases
Tema 9: Declaraciones de tipos y clases Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla
Más detallesTema 4: Definición de funciones
Tema 4: Definición de funciones Informática (2010 11) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2 / 30 Tema 4: Definición
Más detallesFUNDAMENTOS DE PROGRAMACIÓN Datos recursivos II
FUNDAMENTOS DE PROGRAMACIÓN Datos recursivos II Ángela Villota Gómez Escuela de Ingeniería de Sistemas y Computación Facultad de Ingeniería Universidad del Valle Primera parte: Repaso de funciones con
Más detallesTema 9: Declaraciones de tipos y clases
Tema 9: Declaraciones de tipos y clases Informática (2016 17) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2 / 41 Tema 9:
Más detallesTema 10: Árbol binario de búsqueda
Tema 10: Árbol binario de búsqueda M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Árbol binario de
Más detallesIntroducció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 detallesPROYECTO DOCENTE ASIGNATURA: "Complementos de Informática"
PROYECTO DOCENTE ASIGNATURA: "Complementos de Informática" Grupo: Grupo de CLASES TEORICAS de COMPLEMENTOS DE INFOR.(865978) Titulacion: LICENCIADO EN CIENCIAS Y TÉCNICAS ESTADÍSTICAS ( Plan 97 ) Curso:
Más detallesAlgoritmos y Estructuras de Datos: Introducción a la Recursión de Programas. Guillermo Román Díez
Algoritmos y Estructuras de Datos: Introducción a la Recursión de Programas Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2015-2016 Guillermo Román, UPM AED: Introducción
Más detallesTema 9. Recursividad
Tema 9. Recursividad http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz@icc.uji.es Estructuras de datos y de la información Universitat
Más detallesRecursión. Recursión continuación
Recursión Recursión continuación Recursión Temas que veremos hoy Estructuras de control iterativas, repetitivas y la recursión. Ejemplos recursivos Búsqueda lineal Eficiencia y recursión Conclusiones Recursión
Más detallesTipos en Haskell. Cecilia Manzino
Tipos Tipo: conjunto de valores asociados a operaciones. Ejemplos: enteros, caracteres, booleanos, funciones de enteros a enteros. Sirven para: detectar errores antes de la evaluación especificar programas
Más detallesTema 2: Introducción a la programación con Haskell
Tema 2: Introducción a la programación con Haskell Informática (2017 18) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2
Más detallesTEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica
TEMA 3. Árboles Objetivos En este tema se estudia una de las estructuras de datos no lineal más importante en computación, el árbol. Comenzaremos introduciendo la terminología asociada a los árboles y
Más detallesEstructura de datos y de la información Boletín de problemas - Tema 10
Estructura de datos y de la información Boletín de problemas - Tema 10 1. En el caso de que sea posible, dar un ejemplo de los siguientes puntos. Si no, explicar por qué no lo es. Considerar un valor genérico
Más detalles2º Certamen ILI-253 Lenguajes de Programación Juan Pablo Menichetti Jorge Mujica 10 de Junio del 2004
º Certamen ILI-53 Lenguajes de Programación Juan Pablo Menichetti Jorge Mujica 10 de Junio del 004 ta: Tiempo: 10 Minutos. Responda con lápiz indeleble para acceder a recorrecciones. Utilice solo las hojas
Más detallesTema 2: Introducción a la programación con Haskell
Programación declarativa (2010 11) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2. 4. 2 / 26 El sistema GHC El sistema GHC
Más detallesTema 2: Introducción a la programación con Haskell
Tema 2: Introducción a la programación con Haskell Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad
Más detallesDivide & Conquer. Herman Schinca. Clase de Junio de 2011
Divide & Conquer Herman Schinca Clase 20 7 de Junio de 2011 Divide y vencerás Idea aplicable a muchas situaciones de la vida. Origen histórico atribuído a Julio César en relación a sus estrategias militares.
Más detallesARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES
ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES TEMAS Recorrido de un árbol Máximo y mínimo Búsqueda de un elemento Borrado de un nodo 3 Características ARBOLES - CONCEPTOS Cada elemento del árbol
Más detallesTema 2: Características de la programación funcional
Tema 2: Características de la programación funcional Índice 1 Aproximación teórica a la programación funcional...2 1.1 Programación declarativa... 2 1.2 El Lisp y el paradigma funcional...4 1.3 El cálculo
Más detallesLa recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados.
RECURSIVIDAD La recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados. Los algoritmos recursivos ofrecen soluciones estructuradas, modulares
Más detallesExamen 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 detallesPROGRAMACIÓ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 detallesImplementació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 detallesTema 13: Aplicaciones de programación funcional
Tema 13: Aplicaciones de programación funcional Programación declarativa (2010 11) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de
Más detalles