La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tratamientos Secuenciales Generalizados II Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 19 Versión 1.0.0.

Presentaciones similares


Presentación del tema: "Tratamientos Secuenciales Generalizados II Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 19 Versión 1.0.0."— Transcripción de la presentación:

1 Tratamientos Secuenciales Generalizados II Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 19 Versión 1.0.0

2 UD19: Tratamientos Secuenciales Generalizados II Índice 1. Otros Tratamientos Secuenciales: 1. máximos vs. mínimos: clase Ordering 2. Otros métodos a destacar de Iterables y Ordering 2. La clase Iterables2: clase auxiliar de programación propia: no está en Guava 3. Ejercicio

3 UD19: Tratamientos Secuenciales Generalizados II Otros Tratamientos Secuenciales En el cálculo de un máximo o un mínimo lo primero que tenemos que determinar es respecto a qué orden lo estamos calculando 1. Orden natural: “Comparable”(primer cuatrimestre) 2. Orden auxiliar o externo: “Comparator” (práctica 14) package java.lang; public interface Comparable { int compareTo(T o); } package java.util; public interface Comparator { int compare(T o1, T o2); }

4 UD19: Tratamientos Secuenciales Generalizados II Otros Tratamientos Secuenciales 1. Se puede programar una versión general del código que vimos en el primer cuatrimestre para máximos y mínimos 2. Podemos usar la clase Ordering de Guava: Pasos a seguir: 1. Se crea un objeto de tipo Ordering que encierra la información sobre cuál es el orden que utilizamos 2. Dicho objeto auxiliar invoca a una propiedad suya que se llama max para el máximo y min para el mínimo

5 UD19: Tratamientos Secuenciales Generalizados II Otros Tratamientos Secuenciales 1º) Se crea el objeto auxiliar de Ordering (encierra información sobre el orden a usar) Comparator: objeto de Ordering usando un orden auxiliar Natural: objeto de Ordering usando un Comparable Nota: observe las restricciones de los tipos genéricos en la signatura de los métodos, ¿sabría explicar el motivo?

6 UD19: Tratamientos Secuenciales Generalizados II Otros Tratamientos Secuenciales Ejemplos tomados de la práctica 14: Construcción de objetos de tipo Ordering a partir de 3 métodos estáticos: Método: from Comparator c = new ComparadorPorEdad(); Ordering ord1 = Ordering.from(c); Método: natural Ordering ord3 = Ordering.natural(); Método: usingToString (se crea el orden alfabético según el toString de los objetos del Iterable) Ordering ord2 = Ordering.usingToString();

7 UD19: Tratamientos Secuenciales Generalizados II Otros Tratamientos Secuenciales 2º) Se invocan los métodos: max: para el cálculo del máximo min: para el cálculo del mínimo Obsérvese que la información del orden se ha dado en el paso 1º)

8 UD19: Tratamientos Secuenciales Generalizados II Otros Tratamientos Secuenciales máximo: (Ejemplo) Dado un conjunto de puntos, ¿cuál es el punto más distante al origen? (en este código programado usando un for y sin usar llamadas a librerías de código hay un fallo: ¿sabrías decir cuál es?)

9 UD19: Tratamientos Secuenciales Generalizados II Otros Tratamientos Secuenciales máximo: (Ejemplo) Dado un conjunto de puntos, ¿cuál es el punto más distante al origen?

10 UD19: Tratamientos Secuenciales Generalizados II Otros Tratamientos Secuenciales mínimo: (Ejemplo) Dado un conjunto de puntos, ¿cuál es el punto más cercano al origen? Nota: el Comparador ya lo teníamos hecho del paso anterior

11 UD19: Tratamientos Secuenciales Generalizados II Otros Tratamientos Secuenciales Otros métodos de Iterables:  transform: dado un mecanismo que transforma un objeto de un tipo en otro y un Iterable sobre el que actuar, realiza dicha transformación en todos y cada uno de los elementos del Iterable dado. El mecanismo de transformación es una Function y el Iterable es sobre el tipo Mediante el método transform ocultamos una llamada a un for junto a un cálculo Ejemplo: dado un List devolver un List con todas las coordenadas X de dichos puntos.

12 UD19: Tratamientos Secuenciales Generalizados II Otros Tratamientos Secuenciales Ejemplo: dado un List devolver un List con todas las coordenadas X de dichos puntos.

13 UD19: Tratamientos Secuenciales Generalizados II Otros Tratamientos Secuenciales Otros métodos de Iterables:  Métodos:  static Iterable concat (Iterable a, Iterable b) Concatena dos Iterable (listas, conjuntos, etc). Hay varias versiones de este método según sean dos, tres, cuatro, etc, los Iterable a concatenarIterableconcatIterable  static int frequency (Iterable iterable, Object element) Devuelve el número de apariciones del elemento dentro del IterablefrequencyIterableObject  static T[]toArray (Iterable iterable, Class type) Devuelve un array con los elementos del IterabletoArrayIterableClass  etc… Nota: consultar la API de Guava y leer la clase Iterables http://guava-libraries.googlecode.com/svn/tags/release08/javadoc/index.html http://guava-libraries.googlecode.com/svn/tags/release08/javadoc/index.html

14 UD19: Tratamientos Secuenciales Generalizados II Otros Tratamientos Secuenciales Otros métodos de Ordering:  Métodos:  List sortedCopy(Iterable iterable) Devuelve una copia ordenada de un iterable dado. El orden del iterable depende del criterio de comparación asociado al objeto ordering que invoque este método.TListsortedCopyIterable  int binarySearch(List sortedList, T key) Devuelve la posición del element key en el iterable ordenado sortedList utilizando el algoritmo de búsqueda binaria.binarySearchListT  Ordering nullsFirst() Devuelve un ordering que trata iterables con elementos null, de manera que estos se consideran menores al resto de objetos (si se ordena, los elementos null quedan al principio)TOrderingnullsFirst  Ordering nullsLast() Similar al anterior, pero los elementos null quedan al final del iterable si este es ordenado.TOrderingnullsLast

15 UD19: Tratamientos Secuenciales Generalizados II La clase Iterables2 (clase propia) La clase Iterables2 es una clase auxiliar programada por nosotros con ciertas funcionalidades útiles a la hora de programar Dicha clase se suministra como material de esta unidad didáctica NO ESTÁ EN GUAVA

16 UD19: Tratamientos Secuenciales Generalizados II La clase Iterables2 (clase propia) Métodos en Iterables2:

17 UD19: Tratamientos Secuenciales Generalizados II La clase Iterables2 (clase propia) Métodos en Iterables2:  sum: versión con filtro (Iterable, Predicado, Función) versión sin filtro (Iterable, Función) Se corresponde con el sumatorio que programamos al comienzo de la unidad didáctica anterior. Es decir, dado un Iterable realiza un cálculo sobre todos sus elementos sumando un valor real que se obtiene de cada uno a través de un mecanismo dado (i.e., una Función) Hay dos versiones, una que permite filtrar los elementos de dicho Iterable y otra que no. El alumno debe saber cómo programar este método.

18 UD19: Tratamientos Secuenciales Generalizados II La clase Iterables2 (clase propia)

19 UD19: Tratamientos Secuenciales Generalizados II La clase Iterables2 (clase propia) Métodos en Iterables2:  modify: dado un Iterable y un mecanismo de modificación de los objetos, lleva a cabo dicha modificación sobre todos los elementos del Iterable. Entrada: Iterable, Function Salida: es una modificación, i.e., void El alumno debe saber cómo programar este método

20 UD19: Tratamientos Secuenciales Generalizados II La clase Iterables2 (clase propia)

21 UD19: Tratamientos Secuenciales Generalizados II La clase Iterables2 (clase propia) Métodos from:  static Iterable from(String cadena, String delimitadores) Dada una cadena la trocea según los delimitadores (sin incluirlos) y genera un Iterable de String con los trozos (El alumno NO tiene por qué saber cómo programar este método)

22 UD19: Tratamientos Secuenciales Generalizados II La clase Iterables2 (clase propia) Métodos from:  static Iterable from(String fileName) Dado un fichero genera un Iterable con cada línea del fichero El alumno NO tiene por qué saber cómo programar este método, no obstante (por curiosidad) obsérvese su programación. Usa de la API de Java: FileReader BufferedReader Método readLine()

23 UD19: Tratamientos Secuenciales Generalizados II La clase Iterables2 (clase propia) Métodos from:  static Iterable from(T[] array) Transforma un array en un Iterable  static Iterable from() Devuelve un Iterable de String con las cadenas que se vayan introduciendo por teclado terminadas con Enter El alumno NO tiene por qué saber cómo programar estos métodos.

24 UD19: Tratamientos Secuenciales Generalizados II La clase Iterables2 (clase propia) Métodos en Iterables2:  static void saveToFile(String filename, Iterable it) Guarda la información de un Iterable en un fichero El alumno NO tiene por qué saber cómo programar este método.

25 UD19: Tratamientos Secuenciales Generalizados II Ejercicio: Problema sobre vuelos: (recordatorio práctica nº10) Se trata de volver a realizar la práctica 10 pero resolviendo cada cuestión usando la nueva metodología (sin usar ningún for) Vuelo (recordatorio) Propiedades: Codigo, Integer mayor que cero, sólo consultable Destino, String, sólo consultable Precio, Double, consultable y modificable NumeroDePlazas, Integer mayor que cero, sólo consultable NumeroDePasajeros, Integer mayor o igual que cero y menor o igual que NumeroDePlazas, sólo consultable Pasajeros, Vector, sólo consultable Fecha, Fecha, posterior a 1/1/2000, sólo consultable Orden natural: por Destino y Codigo Criterio de Igualdad: si tienen el mismo Destino y Codigo

26 UD19: Tratamientos Secuenciales Generalizados II Ejercicio: Problema sobre vuelos: (recordatorio práctica nº10) 1º) Obtén el primer vuelo (en orden cronológico) con destino a París 2º) ¿Cuánto vale la suma de las recaudaciones de todos los vuelos que están completos? 3º) Construye un List con los vuelos con destino Madrid 4º) ¿Cuál es el vuelo con destino París con más pasajeros? 5º) ¿Cuál es el vuelo más barato de todos? 6º) ¿Cuántos vuelos hay a Bilbao que estén completos? 7º) ¿Cuál es la recaudación de los vuelos a París? 8º) ¿Hay algún vuelo a Londres? 9º) ¿Hay algún vuelo a Madrid con plazas libres? Programar la clase Vuelos2 y compararla con la que ya teníamos hecha en la práctica nº10 Vuelos


Descargar ppt "Tratamientos Secuenciales Generalizados II Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 19 Versión 1.0.0."

Presentaciones similares


Anuncios Google