Examen de Programació II UDL 2011 · Segundo Parcial Curso 2011-2012
Examen de Programació II de la UDL (Grado en Ingeniería Informática) 2011, Segundo Parcial Curso 2011-2012: 2 problemas con solución. Gratis.
Temas del examen: Diseño de clases y objetos en Java, herencia e igualdad · Ficheros en Java: texto secuencial y acceso directo binario
Problema 1 · Diseño de clases y objetos en Java, herencia e igualdad
Segundo parcial de Programación 2 (Curso 2011/2012)
A continuación se resumen algunas clases y métodos de la API estándar de Java disponibles para la resolución del examen:
StringTokenizer: constructores new StringTokenizer(String str) y new StringTokenizer(String str, String delims); métodos boolean hasMoreTokens() y String nextToken().
String: charAt(int index), substring(int begin, int end), equals(String other), equalsIgnoreCase(String other), indexOf(String s), indexOf(String s, int begin), toUpperCase(), toLowerCase(), trim().
Double e Integer: métodos de conversión estáticos Double.parseDouble(String s) e Integer.parseInt(String s).
FileReader: constructores y operaciones read(), close().
BufferedReader: new BufferedReader(FileReader reader), String readLine(), void close().
Math: métodos estáticos abs(double val), max(double val1, double val2), min(double val1, double val2).
Problema 1. Diseño e implementación de la clase Duration
Se requiere modelar e implementar una clase en Java denominada Duration concebida para almacenar y manipular magnitudes temporales compuestas por horas y minutos. Considérese la siguiente traza de ejecución como referencia del comportamiento esperado:
Duration d = new Duration(2, 15); // 2 horas y 15 minutos
int h = d.getHours(); // h vale 2
int m = d.getMinutes(); // m vale 15
double th = d.toHours(); // th vale 2.25
double tm = d.toMinutes(); // tm vale 135.0
d.add(new Duration(0, 50));
int h2 = d.getHours(); // h2 vale 3
int m2 = d.getMinutes(); // m2 vale 5
println(d.toString()); // Escribe 3:05
Duration d2 = Duration.add(d, new Duration(2, 10));
int h3 = d2.getHours(); // h3 vale 5
int m3 = d2.getMinutes(); // m3 vale 15
Especificaciones y consideraciones de diseño:
Codifique la clase Duration incluyendo el constructor y las operaciones públicas evidenciadas en el ejemplo precedente (nótese la presencia de una operación add modificadora de instancia y otra estática que devuelve un nuevo objeto).
Pueden declararse los atributos, constantes y métodos privados que se consideren oportunos para estructurar y clarificar la lógica interna.
Comportamiento del constructor: ante cualquier parámetro con valor estrictamente negativo, se tomará automáticamente 0. La cantidad de minutos suministrada puede superar el valor de 59, debiendo ajustarse adecuadamente.
Método toHours: debe devolver el equivalente en horas en formato decimal de doble precisión (por ejemplo, 15 minutos corresponden a 0,25 horas).
Método toString: devolverá la representación textual con el esquema horas:minutos, garantizando que el campo de los minutos conste siempre de dos cifras (con cero a la izquierda si es necesario).
Problema 2 · Ficheros en Java: texto secuencial y acceso directo binario
Segundo parcial de Programación 2 (Curso 2011/2012)
A continuación se resumen algunas clases y métodos de la API estándar de Java disponibles para la resolución del examen:
StringTokenizer: constructores new StringTokenizer(String str) y new StringTokenizer(String str, String delims); métodos boolean hasMoreTokens() y String nextToken().
String: charAt(int index), substring(int begin, int end), equals(String other), equalsIgnoreCase(String other), indexOf(String s), indexOf(String s, int begin), toUpperCase(), toLowerCase(), trim().
Double e Integer: métodos de conversión estáticos Double.parseDouble(String s) e Integer.parseInt(String s).
FileReader: constructores y operaciones read(), close().
BufferedReader: new BufferedReader(FileReader reader), String readLine(), void close().
Math: métodos estáticos abs(double val), max(double val1, double val2), min(double val1, double val2).
Problema 2. Procesamiento de fichero y medias de duración por proceso
En el marco de un estudio comparativo orientado a determinar la efectividad de diversos métodos de manufactura (buscando aquellos que logran duraciones operativas más prolongadas), se dispone de un fichero de texto donde cada registro responde a la estructura:
Nº pieza, Proceso, Horas, Minutos
Donde el campo Proceso adopta exclusivamente uno de los cuatro identificadores válidos: A, B, C o D. Se asume que el fichero no contiene errores de sintaxis ni valores anómalos.
Se pide estructurar y desarrollar un programa completo en Java que:
Lea línea por línea el fichero de datos.
Calcule la media de duración (expresada en horas decimales) para cada uno de los cuatro procesos mediante la clase Duration y su método toHours implementados en el Problema 1.
Imprima por pantalla los resultados computados para cada proceso.
Instrucciones adicionales: No se limite a transcribir código fuente; justifique y razone brevemente el planteamiento adoptado. Se valorará positivamente la modularización de la solución mediante métodos o clases auxiliares.
También puedes estudiar por temas
Practica un tema con ejercicios de los exámenes de todos los años, mezclados.
- Diseño de clases y objetos en Java, herencia e igualdad · 7 problemas · 35 % de que salga
- Recursión: diseño, traza y diagramas de llamadas · 10 problemas · 25 % de que salga
- Ficheros en Java: texto secuencial y acceso directo binario · 5 problemas · 25 % de que salga
- Árboles binarios y heaps · 2 problemas · 40 % de que salga
- Tablas hash · 1 problema · 40 % de que salga
- Listas en Java: uso de la API, implementación enlazada y coste · 3 problemas · 35 % de que salga
Otras convocatorias de 2011
Juny (2011) · Examen Primer Parcial (Curso 2011/2012) (2011)