10.08.2015 Views

Java y Servicios Web I Hoja de Ejercicios – Tema 5 Máster en ...

Java y Servicios Web I Hoja de Ejercicios – Tema 5 Máster en ...

Java y Servicios Web I Hoja de Ejercicios – Tema 5 Máster en ...

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Java</strong> y <strong>Servicios</strong> <strong>Web</strong> I <strong>Hoja</strong> <strong>de</strong> <strong>Ejercicios</strong> – <strong>Tema</strong> 5Máster <strong>en</strong> Ing<strong>en</strong>iería Matemática 16 <strong>de</strong> Mayo <strong>de</strong> 2012Ejercicio 5.1 (0.5 puntos)Supongamos la sigui<strong>en</strong>te interfaz, que especifica que los objetos <strong>de</strong> las clases quela implem<strong>en</strong>tan son funciones reales <strong>de</strong> una variable real.public interface Funcion {public double evaluar(double v);}1. Crear clases para repres<strong>en</strong>tar las funciones constante, i<strong>de</strong>ntidad, suma,multiplicación, pot<strong>en</strong>cial, logaritmo, expon<strong>en</strong>cial, y crear otra clase querepres<strong>en</strong>te la composición <strong>de</strong> dos funciones. Todas estas clases <strong>de</strong>beránimplem<strong>en</strong>tar la interfaz Funcion.2. Implem<strong>en</strong>tar el sigui<strong>en</strong>te método para aproximar uno <strong>de</strong> los ceros <strong>de</strong> una<strong>de</strong>terminada función f pasada como parámetro.public static double cero(Funcion f, double inicio, double fin,int numIts)Para ello se <strong>de</strong>be utilizar el método <strong>de</strong> la bisección 1 . Pue<strong>de</strong> suponerse que lafunción toma valores <strong>de</strong> distinto signo <strong>en</strong> inicio y fin. El parámetro numItsespecifica el número máximo <strong>de</strong> iteraciones a realizar.3. Utilizar la función anterior para aproximar un cero <strong>de</strong> la función x 2 log x – x <strong>en</strong> elintervalo [1,2].Ejercicio 5.2 (0.5 puntos)Vamos a crear una jerarquía <strong>de</strong> clases para repres<strong>en</strong>tar figuras geométricasutilizando un <strong>en</strong>foque distinto al visto <strong>en</strong> clase. Consi<strong>de</strong>remos la sigui<strong>en</strong>te claseabstracta Figura.public abstract class Figura {protected Punto posicion;protected int alto, ancho;...public abstract boolean conti<strong>en</strong>ePunto(Punto posicion);}Los atributos posicion, alto y ancho <strong>de</strong>fin<strong>en</strong> un rectángulo <strong>en</strong> el plano que<strong>de</strong>limita la figura geométrica. A<strong>de</strong>más <strong>de</strong> los métodos <strong>de</strong> accesocorrespondi<strong>en</strong>tes, existe un método abstracto conti<strong>en</strong>ePunto que comprueba siun <strong>de</strong>terminado punto <strong>de</strong>l plano está cont<strong>en</strong>ido <strong>de</strong>ntro <strong>de</strong> la Figura.1. Crea subclases <strong>de</strong> Figura para repres<strong>en</strong>tar rectángulos y círculos <strong>en</strong> el plano.2. Aña<strong>de</strong> un método dibujar a la clase Figura para repres<strong>en</strong>tar la figura geométrica1 Más información <strong>en</strong> http://<strong>en</strong>.wikipedia.org/wiki/Bisection_method


<strong>en</strong> una v<strong>en</strong>tana. Para ello <strong>de</strong>berá comprobar qué puntos <strong>de</strong>l rectángulo<strong>de</strong>limitador están cont<strong>en</strong>idos <strong>de</strong>ntro <strong>de</strong> la figura, y utilizar el sigui<strong>en</strong>te métodocont<strong>en</strong>ido <strong>en</strong> la clase V<strong>en</strong>tana,public void dibujarMapaDeBits(double x, double y, boolean[][] dibujo)que repres<strong>en</strong>ta la matriz <strong>de</strong> booleanos <strong>en</strong> una <strong>de</strong>terminada <strong>de</strong> posición <strong>de</strong> lav<strong>en</strong>tana. Cada elem<strong>en</strong>to <strong>de</strong> la matriz <strong>de</strong> booleanos repres<strong>en</strong>ta un punto (píxel) <strong>de</strong>la pantalla. El valor true indica pres<strong>en</strong>cia <strong>de</strong> píxel, y el valor false indica aus<strong>en</strong>cia<strong>de</strong> píxel.3. Implem<strong>en</strong>tar las clases Union e Interseccion para repres<strong>en</strong>tar uniones eintersecciones <strong>de</strong> figuras <strong>en</strong> el plano. Ambas clases <strong>de</strong>berán heredar <strong>de</strong> Figura.Ejercicio 5.3 (0.5 puntos)El objetivo <strong>de</strong> este ejercicio es diseñar un procedimi<strong>en</strong>to para compararalgoritmos <strong>de</strong> or<strong>de</strong>nación. Un algoritmo <strong>de</strong> or<strong>de</strong>nación pue<strong>de</strong> caracterizarse porla sigui<strong>en</strong>te interfaz:public interface AlgoritmoOr<strong>de</strong>nacion {public String nombre();public void or<strong>de</strong>nar(double[] array);}El método or<strong>de</strong>nar <strong>de</strong>be modificar el array pasado como parámetro para colocarsus elem<strong>en</strong>tos <strong>en</strong> or<strong>de</strong>n asc<strong>en</strong><strong>de</strong>nte, mi<strong>en</strong>tras que el método nombre <strong>de</strong>vuelve elnombre <strong>de</strong>l algoritmo implem<strong>en</strong>tado <strong>en</strong> or<strong>de</strong>nar.1. Implem<strong>en</strong>tar tres algoritmos <strong>de</strong> or<strong>de</strong>nación distintos. Pue<strong>de</strong>n tomarse tres <strong>de</strong> lasigui<strong>en</strong>te lista, o consi<strong>de</strong>rar otros algoritmos conocidos:➢ Bubblesort: http://es.wikipedia.org/wiki/Or<strong>de</strong>nami<strong>en</strong>to_<strong>de</strong>_burbuja➢ Or<strong>de</strong>nación por selección:http://es.wikipedia.org/wiki/Or<strong>de</strong>nami<strong>en</strong>to_por_selecci%C3%B3n➢ Or<strong>de</strong>nación por inserción:http://es.wikipedia.org/wiki/Or<strong>de</strong>nami<strong>en</strong>to_por_inserci%C3%B3n➢ Mergesort: http://es.wikipedia.org/wiki/Or<strong>de</strong>nami<strong>en</strong>to_por_mezcla➢ Quicksort: http://es.wikipedia.org/wiki/Quicksort2. Escribir un método comparaAlgoritmos, que reciba un array <strong>de</strong> objetos queimplem<strong>en</strong>t<strong>en</strong> AlgoritmoOr<strong>de</strong>nacion y un array <strong>de</strong> valores <strong>de</strong> tipo double paraor<strong>de</strong>nar. El método <strong>de</strong>berá ejecutar cada uno <strong>de</strong> los algoritmos <strong>de</strong> or<strong>de</strong>naciónpasados como parámetro sobre este último array. El método ha <strong>de</strong> medir eltiempo <strong>de</strong> ejecución <strong>de</strong> cada algoritmo, e imprimirá los nombres <strong>de</strong> los algoritmosejecutados, junto con sus respectivos tiempos <strong>de</strong> ejecución. Para medir lostiempos <strong>de</strong> ejecución, se pue<strong>de</strong> utilizar el método curr<strong>en</strong>tTimeMillis() <strong>de</strong> lasigui<strong>en</strong>te forma:long inicio = System.curr<strong>en</strong>tTimeMillis();… aplicar algoritmo <strong>de</strong> or<strong>de</strong>nación …long fin = System.curr<strong>en</strong>tTimeMillis();long tiempoEjecucion = fin – inicio;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!