Tema 3. Listas Recursión sobre datos
|
|
|
- Daniel Silva Olivares
- hace 7 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
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
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))) (+
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
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
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
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
Programació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
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
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:
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
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:
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-
Aná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
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
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:
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
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
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
Tema 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
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
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
Tema 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
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
UNIDAD 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
Qué 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.
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á
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
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
Funciones recursivas
Introducción a la Computación Funciones recursivas Esteban E. Mocskos ([email protected]) Facultad de Ciencias Exactas y Naturales, UBA CONICET 13/09/2017 E. Mocskos (UBA CONICET) Funciones Recursivas
RECURSIVIDAD. 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
Recursividad... 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
Computació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
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
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..................
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 ([email protected]) Sevilla, 1991 Contenido 1 El cálculo aritmético 1 1.1 Los
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
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,
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............................
Tema 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
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
Departamento 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
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
Resolució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
Programació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
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 [email protected] http://www.uv.mx/aguerra
ANÁ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
PROGRAMACIÓN ORIENTADA A LA INTELIGENCIA ARTIFICIAL
PROGRAMACIÓN ORIENTADA A LA INTELIGENCIA ARTIFICIAL Ejercicios de programación en LISP y PROLOG [email protected] Dpto. Inteligencia Artificial E.T.S.I. Informática (UNED) C/ Juan del Rosal 16 28040
Inteligencia 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
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.
LISP 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
Programación I Recursividad.
Programación I Recursividad http://proguno.unsl.edu.ar [email protected] Recursividad Técnica de resolución de problemas particulares. La definición de un concepto es recursiva si el concepto es definido
Recursividad. 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
PHP: 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
Recursividad... 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
Tema 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
Tema 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
FUNDAMENTOS 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
Tema 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 [email protected] @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Árbol binario de
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/
Algoritmos 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 [email protected] Universidad Politécnica de Madrid Curso 2015-2016 Guillermo Román, UPM AED: Introducción
Tema 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, [email protected] Estructuras de datos y de la información Universitat
Tipos 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
TEMA 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
Estructura 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
2º 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
Tema 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
Tema 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
Divide & 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.
ARBOLES 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
Tema 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
La 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
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 [email protected] Dpto. Inteligencia
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
Tema 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
