ANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS
|
|
- María del Pilar Córdoba Rivas
- hace 5 años
- Vistas:
Transcripción
1 ANÁLISIS Y DISEÑO DE ALGORITMOS. PRACTICAS PRACTICA 1: MEDICIÓN DEL TIEMPO. ALGORITMOS DE ORDENACIÓN Crear un conjunto de funciones que permitan la medición del tiempo de ejecución de los programas, y razonar sobre los problemas que se plantean. Como aplicación, se medirá el tiempo de ejecución de los principales algoritmos de ordenación. 1) Implementar la clase Crono, que va a ser la que vamos a utilizar para medir tiempos. public class Crono { public long mide(); // devuelve el número de centésimas de segundo // trascurridos desde la creación del objeto. [Indicación: usar la función System.currentTimeMillis() ] Un ejemplo de uso viene descrito a continuación: Crono c = new Crono(); long t1, t2, tarda; t1 = c.mide(); // segmento de programa a medir t2 = c.mide(); tarda = t2 t1; System.out.println( el programa ha tardado + tarda ); // pueden hacerse nuevas mediciones sobre el mismo crono t1 = c.mide(); // otro segmento de programa a medir t2 = c.mide(); tarda = t2 t1; System.out.println( el otro programa ha tardado + tarda ); 2) Realmente, lo que acabamos de almacenar en la variable tarda es t2 t1 + t 0, siendo t 0 lo que tarda en ejecutarse la función mide(). a) Cuánto vale t 0? (es decir, cuánto tarda la función que mide el tiempo?) b) Hacemos bien en despreciar este tiempo? Qué error estamos cometiendo? 3) Como aplicación, se medirá lo que tarda en ejecutarse el algoritmo de ordenación por Inserción, para distintos tamaños del vector a ordenar (N = 1.000, 2.000, 5.000, , , , , ) y para distintas disposiciones de los datos originales (creciente, decreciente, todos los elementos iguales, y aleatoria). Cada medición se realizará 10 veces, y los resultados se presentarán mediante 4 tablas (una para cada una de las distintas disposiciones originales de los datos), en donde para cada valor de N se mostrarán las 10 mediciones, la media aritmética de esas diez mediciones, y la media
2 aritmética de las 8 mediciones resultantes de eliminar la mayor y la menor de esas 10 mediciones. a) Por qué es necesario medir más de una vez el tiempo de ejecución de un mismo algoritmo sobre los mismos datos? No debería obtenerse el mismo tiempo todas las veces? b) En caso de que no se obtengan los 10 valores iguales, por qué será? c) Qué técnica estadística podemos aplicar para obtener, a partir de los resultados obtenidos, un valor lo más correcto posible? ( la media? la mediana? la moda? la media de todos los valores menos los dos valores extremos?...) por qué? 4) Finalmente, nos planteamos hacer un análisis comparativo del tiempo de ejecución de algunos de los algoritmos de ordenación. Para el desarrollo de esta práctica se utilizarán los algoritmos de ordenación por Inserción, Selección, ordenación rápida de Hoare (Quicksort) y por Montículos (Heapsort). Para cada uno de estos algoritmos se realizarán una serie de tablas que representan los tiempos medidos dependiendo del número de elementos a ordenar (N = 1.000, 2.000, 5.000, , , , , ) y la disposición original de los datos (creciente, decreciente, todos los elementos iguales, y aleatoria). Cada medición se realizará 10 veces, se eliminarán los dos valores extremos, y se calculará la media de los 8 valores restantes.
3 PRÁCTICA 2. DISEÑO DIVIDE Y VENCERÁS. PRODUCTO DE NÚMEROS GRANDES Aplicando la técnica de diseño Divide y Vencerás calcular el producto de dos números naturales grandes (tienen un numero de cifras superior al que puede representarse en el ordenador). Dados dos números naturales grandes u y v de número de cifras n 1, n 2 respectivamente, una solución pasa por descomponer cada número en dos mitades: u = 10 s w + x v = 10 s y + z donde s = n / 2, siendo n el número de cifras del natural mayor. Según esta expresión el producto puede calcularse como: u v = (10 s w + x ) ( 10 s y + z ) = 10 2s w y + 10 s (w z + x y ) + x z con lo cual se reduce el tamaño de los naturales a multiplicar, procediendo de esta manera hasta que el producto pueda realizarse, es decir que el número de cifras de los naturales a multiplicar sea 2. Para representar estos números naturales grandes se define la clase Numero, que ofrece las siguientes operaciones: public class Numero { public Numero () // constructor. Devuelve un numero grande, con valor 0. public Numero (int m) // constructor. Devuelve un numero grande, con valor m. public Numero (String s) // constructor. Devuelve un numero grande, con valor el // indicado por el String s public String tostring () // transforma un numero grande en un String public int numdigitos () // devuelve el numero de digitos del numero. public int obtdigito(int i) // devuelve el i-ésimo digito del numero (0 i<numdigitos) // convención: 0=unidades, 1=decenas, 2=centenas, etc. public void insdigito(int i, int d) //inserta el digito d en la posicion i, desplazando el resto // a la derecha. (0 i numdigitos)&&(0 d 9) public void desplazar(int e) // multiplica por 10 e. Si e es positivo, sirve para multiplicar // por potencias de 10. Si e es negativo, sirve para dividir // por potencias de 10. Si e es 0, no modifica el numero. Basado en esta clase, y para poder manipular este tipo de números naturales, definimos la clase Calculadora: public class Calculadora { public static Numero suma(numero a, Numero b); public static Numero resta(numero a, Numero b); public static Numero por(numero a, Numero b); public static Numero mult(numero a, Numero b); public static Numero div(numero a, Numero b); public static boolean iguales(numero a, Numero b); public static bolean esmenor(numero a, Numero b);
4 Se pide: a) Implementar la clase Numero, de alguna de las dos formas siguientes. O bien haciendo uso de un vector o una lista de números enteros (cada uno representando un dígito), o bien mediante un String. Así en la primera implementación el número se almacenaría en el vector {4,8,3,6,5,1, y en la segunda implementación en el String b) Implementar la clase Calculadora, suponiendo que se dispone de una implementación de la clase Número. Las operaciones por y mult corresponden ambas a la multiplicación de números naturales, una realizada de forma iterativa, y la otra de forma recursiva siguiendo el algoritmo enunciado al principio de esta práctica. c) Realizar una programa que se dedique a realizar operaciones aritméticas haciendo uso de las clases anteriores, tratando de detectar fallos de funcionamiento.
5 PRÁCTICA 3: ALGORITMOS ÁVIDOS. PROGRAMACIÓN DINÁMICA. EL PROBLEMA DEL CAMBIO Dado un sistema monetario compuesto por monedas de valores T 1,T 2,..., T n, el problema del cambio consiste en descomponer en monedas de curso legal cualquier cantidad dada L, utilizando el menor número posible de monedas de dicho sistema monetario. El problema puede ser resuelto siguiendo distintas estrategias. Por ello se pide implementar y determinar el tiempo de ejecución de cada uno de los siguientes algoritmos, presentando los resultados en una tabla para distintos valores de entrada: 1) Utilizando un diseño ávido. Ordenadas las monedas de mayor a menor valor, y comenzando por la de máximo valor posible, se tomarán cuantas monedas se pueda de ese valor y se continuará de esta manera con las siguientes monedas hasta completar el cambio. 2) Utilizando programación dinámica. Sea n el número de tipos de monedas distintos del sistema monetario, L la cantidad a descomponer y T[1..n] un vector con el valor de cada tipo de moneda. Supondremos que se dispone de una cantidad inagotable de monedas de cada valor. Para resolver este problema siguiendo un diseño recursivo llamaremos C(i,j) (1 i n, 1 j L) al número mínimo de monedas necesario para obtener la cantidad j restringiéndose a los tipos T[1], T[2],..., T[i]. La solución vendrá dada por el valor de C(n,L). Con esto: 2.1.Resolver la ecuación en recurrencia que determina cada valor de C(i,j) mediante un algoritmo recursivo. 2.2.Aplicar programación dinámica para construir una tabla que almacene los distintos valores de C(i, j), que permitan encontrar la solución C(n, L) con un coste polinómico. Para resolver el apartado 2 puede utilizarse la siguiente clase: public class cambio{ //variables de instancia int [] tipodemonedas; // almacena los distintos tipos de monedas int [][] numerodemonedas; //tabla que calcula el número mínimo de monedas int [][] procedencia; // tabla que permite determinar que monedas // intervienen en el cambio public cambio(int [] monedas) //constructor public int Valor(int pos) //devuelve el valor de la moneda que esta almacenada //en la posicion pos del array tipodemonedas public int cambiorecursivo(int cantidad) //calcula el número mínimo de monedas para devolver una cantidad //introducida como parámetro, utilizando un algoritmo recursivo
6 public int cambiodinamica(int cantidad) //calcula el número mínimo de monedas para devolver una cantidad //introducida como parámetro, utilizando Programación Dinámica public int [] quemonedas(int cantidad) //devuelve en un array el número de monedas de cada tipo de la solución //para una cantidad introducida como parámetro private int [][] construirnumerodemonedas(int cantidad) //construye la tabla numerodemonedas private int [][] construirprocedencia(int cantidad) //construye la tabla procedencia public int [][] devolvernumerodemonedas(int cantidad) //devuelve la tabla numerodemonedas
7 PRACTICA 4: DISEÑO VUELTA ATRÁS. DISEÑO RAMIFICACIÓN Y PODA. PROBLEMA DEL LABERINTO Una matriz bidimensional n x n puede representar un laberinto cuadrado. Cada posición contiene un entero no negativo que indica si la casilla es transitable (0) o no lo es (-1). Las casillas [1,1] y [n,n] corresponden a la entrada y salida del laberinto y siempre serán transitables. Dada una matriz con un laberinto, el problema consiste en diseñar un algoritmo que encuentre el camino más corto (en número de pasos), si existe, para ir de la entrada a la salida. El problema puede ser resuelto siguiendo distintas estrategias, se pide implementar y determinar el tiempo de ejecución, presentando los resultados en una tabla en los siguientes casos: 1) Mediante un diseño Vuelta Atrás 2) Mediante un algoritmo de Ramificación y Poda, definiendo un función de mínimo coste y resolviéndolo con una estrategia L-C.
Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios
6.1.(Clase) Un programa que utiliza la técnica divide y vencerás, divide un problema de tamaño n en a subproblemas de tamaño n/b. El tiempo g(n) de la resolución directa (caso base) se considerará constante.
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 detallesAlgoritmos sobre Listas
TEMA 6 Algoritmos sobre Listas V1.1 Manuel Pereira González Agenda Introducción Algoritmos de Búsqueda Búsqueda Secuencial Búsqueda Binaria Análisis de Eficiencia Algoritmos de Inserción Algoritmos de
Más detallesExamen escrito de Programación 1
Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 31 de agosto de 2012 Disponer sobre la mesa en lugar visible un documento de identificación
Más detallesTema 3. Análisis de costes
Tema 3. Análisis de costes 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
Más detallesPrograma de teoría. Algoritmos y Estructuras de Datos II. 2. Divide y vencerás. 1. Análisis de algoritmos
Programa de teoría Algoritmos y Estructuras de Datos II 1. Análisis de algoritmos 2. Divide y vencerás 3. Algoritmos voraces 4. Programación dinámica 5. Backtracking 6. Ramificación y poda A.E.D. II 1
Más detallesEstructura de datos y de la información Boletín de problemas - Tema 9
Estructura de datos y de la información Boletín de problemas - Tema 9 1. Dada la siguiente función recursiva: void F(char c) { if (( A
Más detalles259. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m
258. Aplicar el algoritmo de programación dinámica para el problema del cambio de monedas sobre el siguiente ejemplo: n = 3, P = 9, c = (1, 3, 4). Qué ocurre si multiplicamos P y c por un valor constante,
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 detallesFUNDAMENTOS DE INFORMÁTICA
ÁREA DE LENGUAJES Y SISTEMAS INFORMÁTICOS DEPARTAMENTO DE INFORMÁTICA E INGENIERÍA DE SISTEMAS ESCUELA DE INGENIERÍA Y ARQUITECTURA FUNDAMENTOS DE INFORMÁTICA 1ª CONVOCATORIA (16-junio-2011) Ejercicio
Más detallesPrograma de teoría. Algoritmos y Estructuras de Datos II. 3. Algoritmos voraces. 1. Análisis de algoritmos 2. Divide y vencerás
Programa de teoría Algoritmos y Estructuras de Datos II 1. Análisis de algoritmos 2. Divide y vencerás 3. Algoritmos voraces 4. Programación dinámica 5. Backtracking 6. Ramificación y poda A.E.D. II 1
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 detallesExamen de Programación II (Ingeniería Informática)
Examen de Programación II (Ingeniería Informática) Septiembre 2010 1) Lenguaje C (2 puntos) Escribir el módulo "elimina_substring" (ficheros elimina_substring.h y elimina_substring.c) que defina una única
Más detallesPARTE II: ALGORÍTMICA
Programa de teoría Parte I. Estructuras de Datos.. Abstracciones y especificaciones.. Conjuntos y diccionarios.. Representación de conjuntos mediante árboles. 4. Grafos. Parte II. Algorítmica.. Análisis
Más detallesVersión Iterativa de recuperar en un. Ejercicios Tema 11. Implementa una versión del método recuperar iterativa con la siguiente especificación:
Versión Iterativa de recuperar en un ABB Ejercicios Tema 11 Ejercicios Adaptados de Apuntes y Exámenes de EDA Germán Moltó Martínez gmolto@dsic.upv.es Estructuras de Datos y Algoritmos Escuela Técnica
Más detallesANÁLISIS Y DISEÑO DE ALGORITMOS
ANÁLISIS Y DISEÑO DE ALGORITMOS CURSO 2005/2006 BOLETÍN DE PROBLEMAS: DIVIDE Y VENCERÁS Ejercicio 1 Dado un vector ordenado y rotado k veces: diseñar un algoritmo O(log n) que encuentre el elemento mayor
Más detallesTema 2. Divide y vencerás.
Programa de teoría Parte I. Estructuras de Datos. 1. Abstracciones especificaciones. 2. Conjuntos diccionarios. 3. Representación de conjuntos mediante árboles. 4. Grafos. Parte II. Algorítmica. 1. Análisis
Más detalles1. Planteamiento general
Algoritmos de tipo Divide y Vencerás 1. Planteamiento general 2. Determinación del caso base 3.1. Búsqueda binaria 3.3. Problema de la selección 3.4. Multiplicación de matrices de Strassen 1. Planteamiento
Más detallesDivide-y-vencerás, backtracking y programación dinámica
Divide-y-vencerás, backtracking y programación dinámica Diseño y Análisis de Algoritmos Cátedra de Programación Carrera de Ingeniería de Sistemas Prof. Isabel Besembel Carrera Noviembre, 2012 Prof. Isabel
Más detallesEjercicio de Programación Orientada a Objetos Curso 2016/2017 Exámenes
Ejercicio de Programación Orientada a Objetos Curso 2016/2017 Exámenes Introducción El ejercicio consiste en la implementación de una aplicación para la creación, edición, resolución y corrección de exámenes.
Más detallesExamen de Estructuras de Datos y Algoritmos. (Modelo 2)
Examen de Estructuras de Datos y Algoritmos (Modelo 2) 17 de junio de 2009 1. Se dispone de una tabla hash de tamaño 12 con direccionamiento abierto y sondeo cuadrático. Utilizando como función hash la
Más detallesExamen de Estructuras de Datos y Algoritmos. (Modelo 1)
Examen de Estructuras de Datos y Algoritmos (Modelo 1) 17 de junio de 2009 1. Qué rotación se necesita para transformar el árbol de la figura en un árbol AVL? a) Rotación simple izquierda-izquierda b)
Más detallesEjercicio Práctico 2 Enunciado
Fundamentos de Programación Grupo 15 Samuel Martín Ejercicio Práctico 2 Enunciado Instrucciones generales El alumno deberá presentar los ejercicios planteados en este documento. Adicionalmente, se facilitarán
Más detallesAlgoritmos Iterativos de Búsqueda y Ordenación y sus tiempos
Estructura de Datos y Algoritmos Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos 1. Algorimos de ordenación Discutiremos el problema de ordenar un array de elementos. A los efectos de simplificar
Más detallesParte de Algoritmos de la asignatura de Programación Master de Bioinformática. Divide y vencerás
Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Divide y vencerás Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: domingo@um.es Transparencias preparadas
Más detallesSoluciones del Examen de Fundamentos de Computadores y Lenguajes
Soluciones del Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Final. Junio 2003 1) Escribir un fragmento de programa que haga lo siguiente Declara
Más detallesGrado en Ingeniería Informática Estructura de Datos y Algoritmos, Grupo 80M, 2014/ de Marzo de
Grado en Ingeniería Informática Estructura de Datos y Algoritmos, Grupo 80M, 2014/2015 09 de Marzo de 2015 Nombre y Apellidos:... PROBLEMA 1 (1 punto) Programación Orientada a Objetos. Una compañía solicita
Más detallesExamen de Introducción al Software (Ingeniería Informática)
Examen de Introducción al Software (Ingeniería Informática) Febrero 2011 Primera parte (5 puntos, 50% nota del examen) 1) Escribir en Java el siguiente algoritmo descrito en pseudocódigo, que calcula los
Más detallesAlgoritmos de búsqueda con espacio de memoria limitado
Algoritmos de búsqueda con espacio de memoria limitado Los métodos de búsqueda por primero el mejor, tales como A, no escalan bien a grandes problemas de búsqueda debido a su consumo de memoria, mientras
Más detallesBenemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación Área de Programación
Asignatura: Programación I Fecha: Marzo 2012 Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación Área de Programación Funciones 1. Escriba un programa en C que intercambie
Más detallesDecrementa y vencerás II
Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 21 de febrero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Decrementa y vencerás II 21 de febrero de 2018 1 / 22 1 Decrementa y vencerás II Dr. Eduardo
Más detalles4.2. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m
4.1. Aplicar el algoritmo de programación dinámica para el problema del cambio de monedas sobre el siguiente ejemplo: n = 3, P = 9, c = (1, 3, 4). Qué ocurre si multiplicamos P y c por un valor constante,
Más detallesFundamentos de Programación
Fundamentos de Programación Arrays 18.10.2010 José A. Mañas Dpto. de Ingeniería de Sistemas Telemáticos http://www.dit.upm.es/~pepe/doc/fprg/ Arrays Cuando tenemos N datos del mismo
Más detallesEDA. Tema 8 Colas de Prioridad: Heaps
EDA. Tema 8 Colas de Prioridad: Heaps Natividad Prieto Sáez. DSIC EDA, T-8. Curso 02/03. N.Prieto p.1/55 Objetivos Estudio de las definiciones asociadas a las Colas de Prioridad: Especificación: operaciones
Más detallesPROGRAMACIÓN DE AULA MATEMÁTICAS 5.º CURSO
PROGRAMACIÓN DE AULA MATEMÁTICAS 5.º CURSO Página 1 UNIDAD 1: SISTEMAS DE NUMERACIÓN CEIP El Parque Conocer los nueve primeros órdenes de unidades y las equivalencias entre ellos. Leer, escribir y descomponer
Más detalleso Los arreglos son colecciones ordenadas de datos del mismo tipo. o Ejemplos: 2
Arreglos en Java o Los arreglos son colecciones ordenadas de datos del mismo tipo. o Ejemplos: 3 27 50 4 Arreglo de bytes Arreglos con tipos primitivos hola Casa Auto No Arreglo de Strings EII147-01-02
Más detallesCONTENIDOS 1 SEMESTRE
1 BÁSICO PROFESORA: NADIA BIALOSTOCKI PERÍODO 1 MARZO A MAYO. 1.-Contar números del 0 al 100 de 1 en 1, de 2 en 2, de 5 en 5 y de 10 en 10. Hacia adelante y hacia atrás, empezando por cualquier número
Más detallesevaluables - Leer y escribir (con cifras y letras) números de dos cifras.
Criterios de evaluación Bloque 2. Números (Primer Curso) 2.1. Leer, escribir y ordenar, utilizando razonamientos apropiados, distintos tipos de números (romanos, naturales, fracciones y decimales hasta
Más detallesdit UPM Tema 2: Algoritmos /ordenación /java Análisis y diseño de software José A. Mañas
Análisis y diseño de software dit UPM Tema 2: Algoritmos /ordenación /java José A. Mañas http://jungla.dit.upm.es/~pepe/doc/adsw/index.html 23.2.2018 objetivos algoritmos de ordenación conocer nombres
Más detallesEJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFACE COMPARABLE Y MÉTODO COMPARETO DE JAVA. COMPARAR OBJETOS (CU00913C)
APRENDERAPROGRAMAR.COM EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFACE COMPARABLE Y MÉTODO COMPARETO DE JAVA. COMPARAR OBJETOS (CU00913C) Sección: Cursos Categoría: Lenguaje de programación Java nivel
Más detalles* Operador de Indirección ( o de referencia ) ( o de desreferencia )
PUNTEROS INTRODUCCION Una de las características más poderosas del C, es el puntero o apuntador. Los punteros permiten simular las llamadas por referencia y crear y manipular estructuras de datos dinámicas,
Más detallesPROGRAMACIÓN DE AULA MATEMÁTICAS 4º EP CENTRO EDUCATIVO LA AMISTAD. PLAN DE TRABAJO TRIMESTRAL MATEMÁTICAS 4º EP TRIMESTRE 1º REG0801 Pág.
GRUPO: 4ºEP PLAN DE TRABAJO Y ACTIVIDADES PROGRAMADAS 1 er TRIMESTRE CURSO 2016-17 Temas: 1, 2, 3, 4 Y 5 ÁREA: MATEMATICAS CONTENIDOS CRITERIOS DE EVALUACIÓN ESTÁNDARES DE APRENDIZAJE COMPETENCIAS TEMA
Más detallesPráctica 5. Fecha límite de entrega: viernes, 14 de diciembre
Algoritmos http://www.lfcia.org/alg/ 2007-2008 Ingeniería Informática Ingeniería Técnica de Informática de Gestión Práctica 5 Fecha límite de entrega: viernes, 14 de diciembre Implementación de un Diccionario
Más detallesComplejidad de algoritmos recursivos
Tema 3. Complejidad de algoritmos recursivos 1. INTRODUCCIÓN... 1 CLASIFICACIÓN DE FUNCIONES RECURSIVAS... 1 DISEÑO DE FUNCIONES RECURSIVAS... 2 2. VENTAJAS E INCONVENIENTES DE LA RECURSIVIDAD... 4 3.
Más detallesManos a la obra: Recursión, división y listas
Manos a la obra: Recursión, división y listas Taller de Álgebra I Cuatrimestre de verano de 2015 Calentando motores La clase pasada vimos ejemplos de definiciones recursivas. Hoy vamos a continuar con
Más detallesESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:
Nombre y apellidos: Nota: Escribe tu nombre y apellidos en esta hoja e inmediatamente en todas las suplementarias, incluso las de sucio. El no hacerlo puede suponer tu expulsión Puedes utilizar el lápiz
Más detallesTeoría de los Lenguajes de Programación Práctica curso Enunciado. Fernando López Ostenero y Ana García Serrano
Teoría de los Lenguajes de Programación Práctica curso 2015-2016 Enunciado Fernando López Ostenero y Ana García Serrano Sumario 1. Introducción: Skyline de una ciudad...3 2. Enunciado de la práctica...3
Más detallesEstructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa
Contenido Estructura de un programa en Java... 2 Tipos de datos básicos... 2 Operadores... 3 Literales... 4 Entrada / Salida... 4 Sentencias condicionales... 5 Funciones... 5 Ejercicios... 6 Variables,
Más detallesPlan de trabajo Anual Matemáticas. Subsector: Matemáticas Curso: 2 año Básico Docente: Giovanna Alarcón González
Plan de trabajo Anual Matemáticas Subsector: Matemáticas Curso: 2 año Básico Docente: Giovanna Alarcón González PERÍODO 1 EJES OBJETIVOS DE APRENDIZAJE EVALUACIÓN Nº semanas: 8 (1 a 8) Nº clases: 24 (1
Más detallesEjercicios sobre recursividad
Ejercicios sobre recursividad 11 de febrero de 2003 1. Implementa una función recursiva que devuelva la suma de los dígitos de un número natural, que se le pasa por parámetro. 2. Implementa una función
Más detallesColegio Juan de la Cierva. PROGRAMACIÓN DIDÁCTICA Asignatura: MATEMÁTICAS Curso: 6º Etapa: PRIMARIA Curso académico:
Colegio Juan de la Cierva PROGRAMACIÓN DIDÁCTICA Asignatura: MATEMÁTICAS Curso: 6º Etapa: PRIMARIA Curso académico: 2016-2017 Estadística y probabilidad Geometría Magnitudes y medidas 1º TRIMESTRE OBJETIVOS
Más detallesCONTENIDOS Y CRITERIOS DE EVALUACIÓN MATEMÁTICAS 6º ED. PRIMARIA
CONTENIDOS Y CRITERIOS DE EVALUACIÓN MATEMÁTICAS 6º ED. PRIMARIA El cálculo y los problemas se irán trabajando y evaluando a lo largo de todo el año. 1ª EVALUACIÓN CONTENIDOS El Sistema de numeración decimal
Más detallesLENGUAJES DE PROGRAMACIÓN. Pregunta 1 (3 puntos)
LENGUAJES DE PROGRAMACIÓN INSTRUCCIONES Por favor, entregue esta primera hoja de enunciado junto con el examen. Dispone de 2 horas para realizar el examen. MATERIAL PERMITIDO: Ninguno. Pregunta 1 (3 puntos)
Más detallesAPELLIDOS NOMBRE GRUPO CALIFICACIÓN FECHA
Hoja 1/10 Duración: una hora y media Resultados de aprendizaje que se evalúan en este examen: R2: Saber emplear las estructuras de control de flujo de programación para implementar algoritmos sencillos.
Más detallesProgramación II Práctica 03: Recursividad Versión del 10/08/2016
Programación II Práctica 03: Recursividad Versión del 10/08/2016 Como vimos en clase un algoritmo recursivo es un algoritmo que expresa la solución de un problema en términos de una llamada a sí mismo.
Más detallesLOS NÚMEROS ENTEROS. Para restar un número entero, se quita el paréntesis y se pone al número el signo contrario al que tenía.
Melilla Los números Enteros y operaciones elementales LOS NÚMEROS ENTEROS 1º LOS NÚMEROS ENTEROS. El conjunto de los números enteros Z está formado por los números naturales (enteros positivos) el cero
Más detallesProgramación (PRG) PRÁCTICA 10. Algoritmos de búsqueda
Programación (PRG) Facultad de Informática Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia 1. Introducción El objetivo de esta práctica es estudiar el comportamiento
Más detallesIntroducción Algoritmos de tipo dividir para vencer Algoritmos de rastreo Inverso. Recursividad. Programación Avanzada. 8 de septiembre de 2017
Recursividad Programación Avanzada 8 de septiembre de 2017 Contenido Introducción Objetivos Definición y características Caso de análisis: factorial Contenido Introducción Objetivos Definición y características
Más detallesMultiplicación de matrices simétricas
Multiplicación de matrices simétricas La traspuesta de una matriz A n n es definida como una matriz A T n n tal que A T [i, j] =A[j, i] paracadai, j 2{1,...,n} Además, una matriz A es simétrica si A =
Más detallesExamen de Programación 1. Viernes 31/enero/2014. Problema 1 o (2.5 puntos) Disponer un documento de identificación con fotografía sobre la mesa.
Examen de Programación 1. Viernes 31/enero/2014 Disponer un documento de identificación con fotografía sobre la mesa. Comenzar a resolver cada problema del examen en una hoja de papel diferente. Escribir
Más detallesCONTENIDOS Y ESTÁNDARES DE APRENDIZAJE EVALUABLES IMPRESCINDIBLES PARA SUPERAR LA MATERIA
DEPARTAMENTO DE MATEMÁTICAS Área: TALLER DE MATEMÁTICAS Curso: 1º E.S.O. CONTENIDOS Y ESTÁNDARES DE APRENDIZAJE EVALUABLES IMPRESCINDIBLES PARA SUPERAR LA MATERIA Los contenidos mínimos y estándares de
Más detallesPráctica 5.- Recursividad
Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación Programación Avanzada en Java Prim. 2009 Práctica 5.- Recursividad Datos de la práctica Fecha 6 de marzo de 2009 Conceptos
Más detalles<tipo> Tipo de dato de los elementos del vector
Vectores y matrices Declaración Vector (array unidimiensional): []; Tipo de dato de los elementos del vector Identificador de la variable.
Más detallesGrado en Ingeniería Informática Estructura de Datos y Algoritmos, Grupo 81M, 2014/ de Marzo de
Grado en Ingeniería Informática Estructura de Datos y Algoritmos, Grupo 81M, 2014/2015 11 de Marzo de 2015 Nombre y Apellidos:... PROBLEMA 1 (1 punto) Programación Orientada a Objetos. Un club deportivo
Más detallesUNIDAD 12: ESTADISTICA. OBJETIVOS
UNIDAD 12: ESTADISTICA. OBJETIVOS Conocer y manejar los términos básicos del lenguaje de la estadística descriptiva elemental. Conocer y manejar distintas técnicas de organización de datos estadísticos
Más detallesESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:
Nombre y apellidos: Nota: Escribe tu nombre y apellidos en esta hoja e inmediatamente en todas las suplementarias, incluso las de sucio. El no hacerlo puede suponer tu expulsión Puedes utilizar el lápiz
Más detallesAnálisis de algoritmos
Tema 08: Divide y vencerás (DyV) M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Introducción Divide y vencerás Observaciones
Más detallesEstrategias de Programación y Estructuras de Datos
Estrategias de Programación y Estructuras de Datos Grado en Ingeniería Informática Grado en Tecnologías de la Información Práctica curso 2014-2015 Enunciado Índice 1. Presentación del problema...3 2. Diseño...3
Más detallesTitulación: Ingeniero Técnico en Informática de Gestión Curso: 2º
1. Ejercicio (3 puntos) Dado una lista L, cuyo contenido son números enteros y están ordenados en orden ascendente, escribir en Java un programa óptimo que crea y devuelve dos listas: una de pares y otra
Más detallesFundamentos de Programación
Fundamentos de Programación Colecciones de Objetos José A. Mañas Dpto. de Ingeniería de Sistemas Telemáticos http://www.dit.upm.es/~pepe/doc/fprg/ colecciones Cuando tenemos varios
Más detallesTema: Programación Dinámica.
Programación IV. Guía 11 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Programación Dinámica. Objetivos Específicos Definir el concepto de programación dinámica. Interpretar
Más detallesIntroducción Supongamos un subconjunto de n elementos X = {e 1,,e n de un conjunto referencial Y, X Y. Dentro de Y se define una relación de orden tot
Algoritmos de ordenación Análisis y Diseño de Algoritmos Algoritmos de ordenación Algoritmos básicos: Θ(n 2 ) Ordenación por inserción Ordenación por selección Ordenación por intercambio directo (burbuja)
Más detallesSoluciones al Examen de Fundamentos de Computadores y Lenguajes
Soluciones al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Parcial. Junio 2004 1) Se desea crear una clase para hacer cálculos sobre el movimiento
Más detallesAnálisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera
Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera RECURSIÓN La recursión es una técnica fundamental en el diseño de algoritmos, que está basada en la solución de versiones más pequeñas del
Más detallesPRACTICA Nº Realizar una aplicación que calcule el volumen de una esfera, que viene dado por la fórmula:
PROGRAMACION III SIS - 221 PRACTICA Nº 1 1. Realizar una aplicación que calcule el volumen de una esfera, que viene dado por la fórmula: 2. Realizar una aplicación que pregunte el nombre y el año de nacimiento
Más detallesPráctica 4: Diseño modular de programas C++ que trabajan con vectores
Práctica 4: Diseño modular de programas C++ que trabajan con vectores 4.1. Objetivos de la práctica Los diferentes lenguajes de programación presentan uno o más tipos de datos predefinidos para trabajar
Más detallesk. Son métodos de la clases y respectivamente, que analiza un para devolver un entero con
La multiplicación de matrices bidimensionales se puede realizar mediante el uso de hilos. Desde un hilo de ejecución, se pueden crear varios hilos, uno por cada entrada de la matriz resultante. Dos sentencias
Más detallesedu.xunta.gal/centros/iescarral/
CONSELLERÍA DE CULTURA, EDUCACIÓN E ORDENACIÓN UNIVERSITARIA IES DE CARRAL Rúa Costa do Pincho, s/nº 1 5 1 7 5 Carral 881 96 04 80 ies.carral@edu.xunta.es edu.xunta.gal/centros/iescarral/ P á g i n a 2
Más detallesExamen escrito de Programación I
Examen escrito de Programación I Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 12 de septiembre de 2011 Disponer sobre la mesa en lugar visible un documento
Más detallesFrancisco J. Hernández López
Francisco J. Hernández López fcoj23@cimat.mx Acomodar algo en alguna secuencia especifica Objetos ordenados: Directorio telefónicos Registro de pacientes Libros en una biblioteca Cosas del hogar Se puede
Más detallesCOMPETENCIA S Y OBJETIVOS DE M A T E M ÁTICAS DE SEXTO
1 CONSEJERÍA DE EDUCACIÓN CEIP EL ZARGAL C/ Zargal s/n; 18190 CENES DE LA VEGA Telfs. 958893177-78 ; FAX 958893179 18001792.averroes@juntadeandalucia.es COMPETENCIA S Y DE M A T E M ÁTICAS DE SEXTO ÍNDICE
Más detallesExamen No. 3 - Final
Examen No. 3 - Final Valor: 50 pts (30% de la Nota Final) Tiempo Máximo: 2 Horas Fecha: 03 de Mayo del 2017 Observaciones Generales: El examen es individual. No se puede utilizar ningún tipo de material,
Más detallesCAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS
CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS Capítulo 3 Estructuras de datos estáticas 1/37 1. INTRODUCCIÓN Las estructuras de datos se utilizan, generalmente, para procesar una colección de valores que están
Más detalles2. Con una lista ordenada, aunque la localización y eliminación es rápida el problema es en la inserción de datos pues puede ser del orden de O(n).
Capítulo 7 Heap 7.1 Introducción Una cola de prioridad es una estructura de datos apropiada cuando la tarea más importante es localizar y/o eliminar el elemento con valor menor de una colección. Ejemplo
Más detallesApuntes de Teórico PROGRAMACIÓN 3
Apuntes de Teórico PROGRAACIÓN Programación Dinámica Versión. Índice Índice... Introducción... Principio de optimalidad...5 Ejemplo: Camino de menor costo...6 Ejemplo: problema de la mochila...6 Aplicación
Más detallesDiseño y Análisis de Algoritmos
1. Recursividad 2. "Dividir para Reinar" 3. Recursividad y Tabulación (Programación Dinámica) 4. Métodos Matemáticos Funciones discretas Notación O Ecuaciones de recurrencia 5. Casos de Estudio Breve descripción
Más detallesLa transformada rápida de Fourier (FFT) y otros algoritmos para la implementación de la DFT
1 La transformada rápida de Fourier (FFT) y otros algoritmos para la implementación de la DFT Existen diversas formas de implementar la transformada discreta de Fourier (DFT). Para estudiar algunas de
Más detallesSoluciones al Examen de Fundamentos de Computadores y Lenguajes
Soluciones al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Final. Septiembre 2003 1) Se dispone del siguiente array de números reales ya creado.
Más detallesExamen de Programación (Grados en Física y Matemáticas)
Examen de Programación (Grados en Física y Matemáticas) Junio 2012 Primera parte (5 puntos, 50% nota del examen) 1) Escribir en Java el método posicion(), que retorna el valor correspondiente a la expresión
Más detallesA l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información 1º año
Trabajo práctico Nº 5 (Resolución de problemas Arreglos bidimensionales ). Realiza el programa en Lenguaje C correspondiente. 1- Qué hay de incorrecto en los siguientes códigos? int main() { int x,y; int
Más detallesUNIDAD 1 NUMEROS COMPLEJOS
UNIDAD 1 NUMEROS COMPLEJOS El conjunto de los números complejos fue creado para poder resolver algunos problemas matemáticos que no tienen solución dentro del conjunto de los números reales. Por ejemplo
Más detallesAlgoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos
Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos 1! 1. Algoritmos recursivos " 1.1 Algoritmos recursivos. Recursión simple " 1.2 Algoritmos con vuelta atrás y ejemplos! 2. Complejidad de
Más detallesLa eficiencia de los programas
La eficiencia de los programas Jordi Linares Pellicer EPSA-DSIC Índice General 1 Introducción... 2 2 El coste temporal y espacial de los programas... 2 2.1 El coste temporal medido en función de tiempos
Más detallesÍNDICE INTRODUCCIÓN...13
ÍNDICE INTRODUCCIÓN...13 CAPÍTULO 1. LENGUAJE ALGORÍTMICO...15 1.1 DEFINICIÓN DE ALGORITMO...16 1.2 LA ROTACIÓN DE UNA LISTA DE NÚMEROS NATURALES...20 1.3 CUESTIONES...23 1.3.1 Dos comerciales en el restaurante...23
Más detallesCRITERIOS DE EVALUACIÓN
DEPARTAMENTO DE MATEMATICAS IES ROSA CHACEL (Colmenar Viejo) Criterios de evaluación y criterios de calificación Recuperación de Matemáticas. 2º de E.S.O. CRITERIOS DE EVALUACIÓN RESOLUCIÓN DE PROBLEMAS
Más detallesCONTENIDOS Y CRITERIOS DE EVALUACIÓN MATEMÁTICAS 6º ED.
. G r e d o s S a n D i e g o V a l l e c a s CONTENIDOS Y CRITERIOS DE EVALUACIÓN MATEMÁTICAS 6º ED. PRIMERA EVALUACIÓN El Sistema de numeración decimal El sistema de numeración decimal. Lectura y escritura
Más detallesTema: Métodos de Ordenamiento. Parte 3.
Programación IV. Guía 4 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Métodos de Ordenamiento. Parte 3. Objetivos Específicos Identificar la estructura de algunos algoritmos
Más detallesTema: Programación Dinámica.
Programación IV. Guía No. 12 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Programación Dinámica. Objetivos Específicos Definir el concepto de programación dinámica. Interpretar
Más detalles