PARCIAL INFORMATICA III – AÑO 2006 NOMBRE: LEGAJO: I.-Indique todas las respuestas correctas 1. ¿Cuál de las siguientes afirmaciones representa mejor el concepto de multiprogramación? a) Es la capacidad de ejecutar dos o mas programas simultáneamente. b) Es la presencia de un scheduler en el sistema operativo local c) Es la capacidad de los computadores basados en múltiples procesadores d) Es la capacidad de los computadores basados en procesadores superescalares 2. ¿Qué es una máquina virtual? a) Un dispositivo adicional al procesador principal b) Una pieza de software que ofrece un entorno operativo particular c) El soporte de los lenguajes de programación interpretados d) Un compilador de bytecodes 3. ¿Que es una recuperación de fallos basada en rollback? a) Una corrección limitada de las variables visibles del sistema b) La restauración de un estado interno conocido c) Una continuación de la ejecución con correcciones parciales d) Un cambio de estado interno del sistema 4. En el tratamiento de excepciones de Java: a) Sólo las operaciones relacionadas con un tipo de objeto pueden compartir los mismos manejadores de excepción b) Los manejadores de excepción deben usar como argumento objetos de la misma clase c) Los manejadores de excepción no pueden ser utilizados por más de una operación. d) Múltiples operaciones pueden compartir los mismos manejadores de excepción II.- Indique falso o verdadero (V o F) en cada una de las siguientes afirmaciones: a) Un patrón de diseño depende del lenguaje de programación b) Un patrón de diseño es una solución de diseño c) Un programador debe crear los patrones de diseño d) Un patrón de diseño promueve la reutilización del software e) Un hilo puede invocar yield( ) para ceder el procesador a un hilo de mayor prioridad f) Un hilo puede recuperarse después de invocar al método stop() g) Una llamada al método notify(), despierta a todos los hilos que habían invocado a sleep() h) El método resume() , hace que un thread pase del estado suspendido al estado listo III.- Se tiene una colección de Double. En el siguiente trozo de código complete con el código adecuado para eliminar, en forma segura, todos los números negativos de dicha colección. Ayuda: para transformar un Double en double use el método: public double doubleValue() de la clase Double import java.util.*; public class SinDoubleNegativos{ public static void eliminaNegativos(Collection c) { // su código } //la public static void main(String[] args) { double[] array = {1.2, 3.4, 4.5, -5.7, 2.9, -3.14, 2.2, -3.337, 2.2}; Collection c = _______________________________;//completar for(int i = 0; i < array.length; i++) { c.add(new Double(array[i])); } eliminaNegativos(c); System.out.println(c); }} salida es [1.2, 3.4, 4.5, 2.9, 2.2, 2.2] IV.-Transforme la siguiente clase en Serializable: public class NaipesEspañoles { public int valor; // 1 al 12 public char palo; // 'b', 'c','o','e' public NaipesEspañoles(int r, char s) { valor = r; palo = s; }} Se han grabado un número cualquiera de NaipesEspañoles en un archivo llamado cartas.dat. Escriba código para leer todas los NaipesEspañoles almacenados en dicho archivo e imprima por pantalla la suma de los palos de cada uno de los NaipesEspañoles. import java.io.*; class Test{ public static void main(String [ ]args) { //leer todos los NaipesEspañoles hasta la marca de fin de archivo }} V.- Dado el siguiente código, complete el código del método run() y del main de TestThread: class int MiThread implements Runnable { valores []; public MiThread () { valores= new int[5]; } public int run() { //el método run debe asignarle valores a los elementos del vector //(los numero que quieran, por ej.los primeros 5 enteros) //y calcular el valor promedio de los elementos y lo imprima. } class TestThread { public static void main (String [] args) { // cree dos threads de la clase MiThread y lancelos. }}