1. Cuántas sentencias hay en la secuencia principal del siguiente programa? public class PruebaSwitch { System.out.print ("Opcion: "); case 3: System.out.println ("miércoles "); A. 1. B. 4. C. Más de 10. 2. Cuántos métodos diferentes se invocan en el siguiente programa? public class PruebaSwitch { System.out.print ("Opcion: "); case 3: System.out.println ("miércoles"); //
A. 1. B. 4. C. 6. 3. Dado el código siguiente Cuál de los métodos que se utilizan es un método de objeto? public class PruebaRegistro { static void cargartabla (RegistroAlumno [ ] alumnos) throws IOException { for (i = 0; i < 6; i ++) { System.out.println ("Datos del alumno N: " + i); alumnos [i] = alumnos [i].cargarregistro (); static float mediacalif (RegistroAlumno [ ] alumnos) { float resul; resul = 0; for (i = 0; i < 6; i ++) resul = resul + alumnos [i].calificacion; return resul / 6; public static void main (String [ ] args) throws IOException { RegistroAlumno [ ] alumnos = new RegistroAlumno [6]; float media; for (i = 0; i < 6; i ++) alumnos [i] = new RegistroAlumno (); cargartabla (alumnos); media = mediacalif (alumnos); System.out.println ("La media de las calificaciones es: " + media); A. cargarregistro. B. mediacalif. C. RegistroAlumno. 4. Qué resultado aparecería en la pantalla del ordenador al ejecutar el código siguiente si el usuario introduce como opción: 3. public class PruebaSwitch { System.out.print ("Opcion: "); case 3: System.out.println ("miércoles");
default: System.out.println ("opcion no valida"); A. miercoles B. miercoles jueves C. El código anterior no puede ejecutarse. Se generaría previamente un error de compilación. 5. Qué resultado aparecerá en la pantalla del ordenador si el usuario responde con 0 la primera vez que el programa la pide un dato? public class PruebaDoWhile { int opc = 7; BufferedReader linea=new BufferedReader(new InputStreamReader(System.in)); do { case 2: System.out.println ( martes"); case 3: System.out.println("miercoles"); case 6: System.out.println ("sabado"); System.out.print ("Opción: "); while (opc!= 0); System.out.println ("Adiós"); A. Adiós. B. domingo Adiós. C. opción no válida.
6. Qué resultado aparecerá en la pantalla del ordenador si en la primera ejecución el usuario responde con 0? public class PruebaDoWhile { do { case 3: System.out.println ("miércoles"); System.out.print ("Opción: "); while (opc!= 0); System.out.println ("Adiós"); Seleccione una respuesta: A. El código anterior no puede ejecutarse. Se generaría previamente un error de compilación. B. El resultado es imprevisible. No se ha inicializado la variable opc. C. domingo Adiós. 7. En un método main escrito en Java se desea invocar a un método estático que devuelva un número real (media) correspondiente a un conjunto de edades de alumnos almacenadas en un vector. Cuál de las siguientes afirmaciones es correcta? A. El resultado media se debe pasar como argumento por valor. B. El resultado media se debe pasar como argumento por referencia. C. El resultado media no se puede pasar como argumento. 8. Dada la siguiente clase en Java Cuál es el máximo número de copias del método recursivo que pueden llegar a encontrarse en la memoria al introducir como dato de entrada el valor 3? public class PruebaRecursividad { static int factorial (int dato) { int resul; if (dato > 0) resul = dato * factorial (dato - 1); else resul = 1; return resul;
public static void main(string[] args) throws NumberFormatException,IOException { int d, f; System.out.print ("Introduzca el dato: "); d = Integer.parseInt (linea.readline ()); if (d >= 0) { f = factorial (d); System.out.println ("El factorial de " + d + " es: " + f); else System.out.println ("No existe el factorial de un número negativo"); A. 3. B. 4. C. No puede determinarse a priori. 9. El código siguiente constituye un paquete (package) junto con la clase RegistroAlumno Cuántos ficheros.class se generan al compilarlo? public class PruebaRegistro { static void cargartabla (RegistroAlumno [ ] alumnos) throws IOException { for (i = 0; i < 6; i ++) { System.out.println ("Datos del alumno N: " + i); alumnos [i] = alumnos [i].cargarregistro (); static float mediacalif (RegistroAlumno [ ] alumnos) { float resul = 0; for (i = 0; i < 6; i ++) { System.out.println (alumnos [i].tostring ()); resul = resul + alumnos [i].calificacion; return resul / 6; public static void main (String [ ] args) throws IOException { RegistroAlumno [ ] alumnos = new RegistroAlumno [6]; float media; for (i = 0; i < 6; i ++) alumnos [i]= new RegistroAlumno (); cargartabla (alumnos); media = mediacalif (alumnos); System.out.println ("La media de las calificaciones es: " + media); A. Uno, correspondiente a la clase PruebaRegistro. B. Uno, correspondiente al método main. C. Dos, correspondientes, respectivamente, a las clases PruebaRegistro y RegistroAlumno.
10. La siguiente clase define un registro que va a constituir un paquete (package) con otra que pretende generar un fichero binario en disco de dichos registros: class RegistroAlumno { public String numeromatricula; public String apellidos; public String nombre; public String email; public int año; public float calificacion; public RegistroAlumno () { numeromatricula= null; apellidos = null; nombre = null; email= null; año = 1980; calificacion = 0; public String acadena () { return numeromatricula + " " + apellidos + " " + nombre + " " + email +" " + año + " " + calificacion; public void cargarregistro () throws IOException { System.out.println ("Numero de matricula: "); numeromatricula = new String (linea.readline ()); System.out.println ("Apellidos: "); apellidos = new String (linea.readline ()); System.out.println ("Nombre: "); nombre = new String (linea.readline ()); System.out.println ("Correo electronico: "); email = new String (linea.readline ()); System.out.println ("Año de nacimiento: "); año = Integer.parseInt (linea.readline()); System.out.println ("Calificación: "); calificacion = Float.parseFloat (linea.readline()); System.out.println (this.acadena ()); Cuál de las siguientes afirmaciones es cierta? A. El paquete funcionará correctamente. B. Se producirá un error de compilación. C. Se producirá un error de ejecución.
Soluciones: Pregunta Respuesta Justificación 1 B La estructura de mayor nivel jerárquico del programa contiene 4 sentencias: 1. Asignación. 2. Entrada /salida. 3. Asignación. 4. Control de flujo. Alternativa múltiple (Ésta es compuesta). Ver apartado 1.2.5 Sentencias 2 C En el programa se invocan 6 métodos distintos: print, println, parseint, readln y dos constructores sobre diferentes clases. Ver apartado 1.2.4 Clases, objetos, métodos y excepciones. 3 A o Los métodos de objeto se aplican sobre objetos definidos en otras clases con la sintaxis general <objeto>.<método> o mediacalif es un método estático (definido en la propia clase). o RegistroAlumno es una clase externa (se supone accesible). Ver apartado 1.2.3 Clases, objetos, métodos y excepciones. 4 B Al entrar en la sentencia switch con el valor 3: o Se salta a la línea que hace mostrar el literal "miercoles", ya que la siguiente sentencia break está comentada (no se ejecuta). o Se pasa a la línea que hace mostrar el literal "jueves". o Se ejecuta la sentencia break. o Se sale del ámbito de la sentencia switch y finaliza la ejecución del programa. Ver apartado 1.2.3 Clases, objetos, métodos y excepciones. 5 B Se trata de una estructura do..while en que el módulo que se repite se ejecuta (al menos) una vez. A continuación se solicita al usuario el nuevo valor de opc que al ser "0" hace salir de la estructura. Ver apartado 1.2.5.3.2 Estructura iterativa. 6 A Se trata de una estructura do...while en la que el bloque que se repite se ejecuta al menos una vez, pero no se ha inicializado la variable opc. Lo que suceda depende de cómo esté diseñado el compilador que utilice. En el caso del entorno de desarrollo utilizado en la asignatura esta circunstancia produce un error de compilación y no se genera la clase PruebaDoWhile.class. Ver apartado 1.2.5.3.2 Estructura iterativa. En este caso deberá ejecutar el código para comprobarlo. 7 C o El módulo de llamada no tiene acceso a los cambios producidos sobre un parámetro pasado por valor en el módulo llamado. o El lenguaje Java no permite pasar por referencia tipos primitivos. o No se puede recuperar desde el módulo de llamada una variable de un tipo primitivo generado o modificado por un método. Deberá ser un miembro accesible de la clase o bien el resultado del método (static float). Ver apartado 1.3.3 Mecanismos para el paso de información. 8 B Se ejecutan 4 instancias en la fase de "ida" (3 más la de "transición") que irán desapareciendo progresivamente en la fase de "vuelta"). Ver apartado 1.3.5 Recursividad. 9 C Los métodos no generan ficheros.class. Se generan tantos ficheros.class como declaraciones de clases existan (contando tanto las del paquete como clases internas). Ver apartado 1.4.2.2 Estructuras de datos heterogéneas. 10 A Los objetos de la clase RegistroAlumno deben ser serializables (opción implements Serializable en la declaración de la clase). Esta circunstancia no es detectada por el compilador (al menos en el entorno de desarrollo utilizado en la asignatura) pero sí producirá un error de ejecución cuando se intente leer o escribir registros en el fichero. Ver apartado 1.5.2 Ficheros binarios