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

Slides:



Advertisements
Presentaciones similares
Capítulo 2 Algoritmos.
Advertisements

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 13 Ing. Ronald Criollo.
Métodos y parámetros.
Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos.
TECNICATURA UNIVERSITARIA EN INFORMATICA
Definición de Clases y Variables de referencia.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Programación II Recursividad
Tipo de Dato Abstracto Tipos de datos:
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Tema 1. Introducción a la programación (Lenguaje java).
Tratamiento de listas en Java
1.2 Sintaxis del lenguaje Java.
2.4 Construcción de un TAD a partir de otro.
Algoritmo y Estructura de Datos I
Manipulación de caracteres e hileras de texto
Arreglos: Vectores en JAVA
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
L ISTAS E NLAZADAS No son mas que un conjunto o lista de objetos que a diferencia de los vectores, estas poseen la capacidad de crecer o decrecer. Por.
PROGRAMACIÓN ORIENTADA A OBJETOS
Tema 6: Clases Antonio J. Sierra.
Técnicas avanzadas de programación Interfaces
Colecciones.
Input – Scanner y Cajas de diálogo
Igor Santos Grueiro. Ahora tenemos datos y datos …
SCJP Sun Certified Programmer for Java 6
Patrones de Comportamiento: Patrón de Diseño Observer
Suponiendo que además en la clase U hay: import java.util.*; class U{ static Scanner teclado = new Scanner(System.in); static public int readInt(String.
Tema 2: Los tipos de datos

TEMA Nº 1 Conjuntos numéricos.
CONCEPTOS BÁSICOS: Números Naturales
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Estructura de Datos y Algoritmos
Capítulo 1 “Elementos de Programación”
ESTRUCTURA DE DATOS EN JAVA
COMPUTACION 2009 Clase 6 Clase 7.
METODOLOGÍA DE LA PROGRAMACIÓN
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA SIETE GENERICOS Y COLECCIONES.
Tema 2: Base de datos relacionales
Recursividad (2 clases) 1. Nivelación Funciones Menú Vectores String
Funciones Definidas por el Programador
Capítulo 2 “Subprogramas/Funciones - Arreglos”
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de.
LENGUAJE DE PROGRAMACIÓN
CONJUNTOS NUMÉRICOS. 1.Números Naturales 1.1 Consecutividad numérica 1.2 Paridad e imparidad 1.3 Números primos 1.4 Múltiplos y divisores 1.5 Mínimo Común.
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
1 Métodos. 2 Un método es un conjunto de instrucciones definidas dentro de una clase, que realizan una determinada tarea y a las que podemos invocar mediante.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
UNIVERSIDAD NACIONAL EXPERIMENTAL DEL TACHIRA UNIDAD DE ADMISION CURSO PROPEDEUTICO ASIGNATURA FISICA Prof. Juan Retamal G.
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Tratamientos secuenciales I Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 8 Versión
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Iterables virtuales Concepto, Metodología de desarrollo y Ejemplos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Criterios de ordenación y Guava Comparator, Comparable y Ordering Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión.
Tratamientos Secuenciales Generalizados I Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 18 Versión
Diseño de tipos: clase PolinomioEntero Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 8 Versión
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Fundamentos de Programación Departamento.
Estructuras Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Unidad Didáctica 25.
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
Transcripción de la presentación:

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

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

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); }

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

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?

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();

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º)

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?)

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?

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

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.

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

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

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

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

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

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.

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

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

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

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)

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()

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.

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.

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

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