Professional Documents
Culture Documents
Simulacro de Examen de Programación de La Segunda Evaluación
Simulacro de Examen de Programación de La Segunda Evaluación
PALENCIA
FECHA: Friday, 12 de January de 2024. EVALUACIÓN: SEGUNDA.
MODULO: Programación.
GRUPO: Primero de Desarrollo de Aplicaciones Multiplataforma.
NOMBRE: calificación
a) 10
b) 15
c) 17
d) 12
e) 22
a) 10
Respuesta incorrecta. Esto sería cierto si estuviera sumando todos los valores de la tercera columna, el del índice 2.
b) 15
Respuesta incorrecta. Esto sería cierto si estuviera sumando todos los valores de la primera columna, el del índice 0.
c) 17
Respuesta correcta. Este código suma todos los valores de la segunda columna, el del índice 1, ya que las indicaciones
de columna comienzan en 0.
d) 12
Respuesta incorrecta. Esto sería cierto si estuviera sumando todos los valores de la última columna, el del índice 3.
e) 22
Respuesta incorrecta. Esto sería cierto si estaba sumando todos los valores de la primera fila, pero la fila cambia cada
vez a través del bucle for.
a) No hay diferencia.
Respuesta incorrecta. Una interfaz es un tipo especial de clase abstracta que solo tiene métodos abstractos públicos.
b) Las clases abstractas pueden tener métodos con cuerpos (código en ellos), pero las interfaces no.
Respuesta correcta. Las clases abstractas pueden tener métodos abstractos y no abstractos, las interfaces solo
pueden tener métodos abstractos.
c) Se pueden crear instancias de clases abstractas, mientras que las interfaces no.
Respuesta incorrecta. No se puede crear un objeto de un tipo de clase abstracta o de un tipo de interfaz. Puede
declarar que un objeto sea de un tipo de clase abstracto o un tipo de interfaz (como declarar un objeto ArrayList
como List).
d) Las clases abstractas se pueden extender, pero las interfaces no.
Respuesta incorrecta. Las interfaces se pueden ampliar (una interfaz puede heredar de otra interfaz).
e) Las clases abstractas pueden declarar métodos abstractos, pero las interfaces no.
Respuesta incorrecta. El único tipo de método que puede tener en una interfaz es un método abstracto.
Programación. 2-15
a) [9, 3, 17, 2, 16, 4, 1]
Respuesta incorrecta. Esto sería cierto si moviera todos los valores del frente a la parte posterior. ¿Pero lo hace?
b) [1, 4, 16, 2, 17, 3, 9]
Respuesta incorrecta. Esto sería cierto si el código invirtieya la lista. ¿Pero lo hace? Recuerde que remove(0) quita
el primer elemento de la lista y lo devuelve. El método add agrega el elemento al final de la lista.
c) [9, 3, 17, 16, 4, 1, 2]
Respuesta incorrecta. Esto sería cierto si solo se moviera el valor 2 al final de la lista. ¿Es eso lo que hace este
código?
d) [16, 4, 1, 9, 3, 17, 2]
Respuesta correcta. Este código mueve el primer elemento al final de la lista 4 veces. Así que mueve el 9, 3, 17, y 2.
e) [2, 16, 4, 1, 9, 3, 17]
Respuesta incorrecta. Esto sería cierto si la llamada fuera misterio(3) en lugar de misterio(4). A continuación,
movería los primeros 3 valores de la lista al final de la lista.
a) Interfaz
b) Polimorfismo
c) Herencia (es-a)
d) Asociación (tiene-a)
e) Sobrecarga
a) Interfaz
Respuesta incorrecta. Una interfaz es un tipo especial de clase abstracta. No es un tipo de relación entre clases.
b) Polimorfismo
Respuesta incorrecta. El polimorfismo utiliza el tipo de tiempo de ejecución del objeto para determinar qué método
se va a ejecutar. No es un tipo de relación entre clases.
c) Herencia (es-a)
Respuesta incorrecta. La herencia es cuando una clase (la clase secundaria) extiende la otra (la clase primaria). ¿Ve
que la palabra clave se extiende aquí?
d) Asociación (tiene-a)
Respuesta correcta. Association es cuando una clase realiza un seguimiento de uno o más objetos de la otra clase. En
este caso, un objeto DogOwner tiene una matriz de objetos dog.
e) Sobrecarga
Respuesta incorrecta. La sobrecarga es cuando una clase tiene dos métodos con el mismo nombre, pero las listas de
parámetros son diferentes. No es un tipo de relación entre clases.
Programación. 3-15
5. ¿Cuál de las siguientes expresiones se puede utilizar para reemplazar
el cuerpo de misterio para que el misterio devuelva el mismo resultado
para todos los valores de y?
public static int mystery(int y) {
y = 2 * y + y;
y = 2 * y + y;
return y;
}
a) devolver 9 * y;
b) retorno 6 * y;
c) devolver y;
d) devolver 3 * y;
e) devolver 4 * y;
a) devolver 9 * y;
Respuesta correcta. La primera línea es la misma que 3y. A continuación, usted tiene que sustituir en el nuevo valor
de y en la segunda línea (2 * 3y + 3y) - 6y + 3y 9y.
b) retorno 6 * y;
Respuesta incorrecta. Esto sería cierto si la segunda línea era sólo y 2 * y. Recuerde que la segunda línea está
utilizando el valor de y calculado en la primera línea.
c) devolver y;
Respuesta incorrecta. Esto sería cierto si el cuerpo sólo tuviera la última línea en él. ¿Qué hacen las primeras 2
líneas?
d) devolver 3 * y;
Respuesta incorrecta. Esto sería cierto si faltaba la segunda línea. ¿Qué hace esa línea?
e) devolver 4 * y;
Respuesta incorrecta. Recuerde que 2 * y + y es lo mismo que 3 * y.
a) test();
Programación. 4-15
b) super.super.test();
c) super.test();
d) this.test();
e) No hay manera de llamar a un método en una clase de abuelode una clase de nieto
a) test();
Respuesta incorrecta. Esto ejecutaría el método de prueba en la clase C ya que el objeto fue creado por la clase C.
Cuando se llama a un método, el sistema en tiempo de ejecución comenzará a buscar el método en la clase que creó
el objeto.
b) super.super.test();
Respuesta incorrecta. No puedes usar super.super. Esto provocaría un error en tiempo de compilación.
c) super.test();
Respuesta incorrecta. Esto ejecutaría el método de prueba en la clase B ya que super se utiliza para ejecutar un
método en la clase primaria y B es el elemento primario de C.
d) this.test();
Respuesta incorrecta. Esto ejecutaría el método de prueba en la clase C.
e) No hay manera de llamar a un método en una clase de abuelode una clase de nieto
Respuesta correcta. Puede usar super para forzar el tiempo de ejecución para ejecutar un método en una clase
primaria, pero no hay ninguna manera de forzar una llamada a un método en una clase principal (padre de su
padre).
a) v.test(sporty,v);
b) sporty.test(c,c);
c) v.test(sporty,c);
d) sporty.test(sporty,v);
e) c.test (deportivo,deportivo);
a) v.test(sporty,v);
Respuesta incorrecta. Esto sería cierto si el método de prueba tomó un objeto SportsCar y un objeto Vehicle.
b) sporty.test(c,c);
Respuesta incorrecta. Esto sería cierto si el método de prueba tomara dos objetos Car o un Objeto Car y un Objeto
Vehicle.
Programación. 5-15
c) v.test(sporty,c);
Respuesta incorrecta. Esto sería cierto si el método de prueba tomó un objeto SportsCar y un objeto Car.
d) sporty.test(sporty,v);
Respuesta incorrecta. Esto sería cierto si el método de prueba tomó un objeto SportsCar y un objeto Vehicle.
e) c.test (deportivo,deportivo);
Respuesta correcta. El método de prueba toma un objeto Car y un objeto SportsCar. Solo esta respuesta pasa
correctamente un objeto SportsCar como segundo parámetro. Puede utilizar un objeto SportsCar como un objeto
Car, ya que es una subclase de Car. El método de prueba se puede llamar a cualquier niño del Vehículo.
a) 8
b) 1
c) 2
d) 5
e) 3
a) 8
Respuesta correcta. La llamada recur(5) devolverá recur(4) + recur(3). La llamada
recur(4) devuelve 5. La llamada recur(3) devuelve 3. Así que recur(5) devuelve 5 + 3
x 8.
b) 1
Respuesta incorrecta. Este método solo devolverá 1 cuando n sea menor o igual que 1.
En este caso n es 5.
c) 2
Respuesta incorrecta. Esto sería cierto si la llamada se repitiera(2). Esto
devolvería recur(1) + recur(0). Tanto recur(1) como recur(0) devolverían 1 por lo que
recur(2) devolvería 1 + 1 a 2.
d) 5
Respuesta incorrecta. Esto sería cierto si la llamada se repitiera(4). Esto
devolvería recur(3) + recur(2). La llamada recur(3) devuelve 3. La llamada recur(2)
devuelve 2. Por lo tanto, recur(4) devuelve 3 + 2 x 5.
e) 3
Respuesta incorrecta. Esto sería cierto si la llamada se repitiera(3). Esto
devolvería recur(2) + recur(1). La llamada a recur(1) devolvería 1. La llamada a
recur(2) devolvería recur(1) + recur(0). Tanto recur(1) como recur(0) devolverían 1
por lo que recur(2) devolvería 1 + 1 a 2. Por lo tanto, recur(3) devolvería 2 + 1 x
3.
Programación. 6-15
a) 1 3 5 7 9 11 13 15 17 19
b) 0 2 4 6 8 10 12 14 16 18
c) 2 4 6 8 10 12 14 16 18
d) 3 6 9 12 15 18
e) 0 2 4 6 8 10 13 14 16 18 20
a) 1 3 5 7 9 11 13 15 17 19
Respuesta incorrecta. Esto sería cierto si k se imprimió cuando el recordatorio era igual a 1 (cuando el valor era
impar).
b) 0 2 4 6 8 10 12 14 16 18
Respuesta correcta. Este código recorrerá todos los valores de 0 a 19, pero solo
imprimirá los que son uniformes (dividir por 2 tiene un resto de 0).
c) 2 4 6 8 10 12 14 16 18
Respuesta incorrecta. La primera vez a través del bucle k tendrá el valor 0 y 0 % 2
devuelve 0 por lo que el 0 se imprimirá.
d) 3 6 9 12 15 18
Respuesta incorrecta. Esto sería cierto si la prueba fuera (k % 3 a 0) y el bucle se
iniciara con k a 1.
e) 0 2 4 6 8 10 13 14 16 18 20
Respuesta incorrecta. El bucle se detendrá cuando k tenga el valor de 20. Así que no
imprimirá un 20.
a) 1 3 5 7 9 11 13 15 17 19
b) 0 2 4 6 8 10 12 14 16 18
c) 2 4 6 8 10 12 14 16 18
d) 3 6 9 12 15 18
e) 0 2 4 6 8 10 13 14 16 18 20
a) 1 3 5 7 9 11 13 15 17 19
Respuesta incorrecta. Esto sería cierto si k se imprimió cuando el recordatorio era igual a 1 (cuando el valor era
impar).
b) 0 2 4 6 8 10 12 14 16 18
Respuesta correcta. Este código recorrerá todos los valores de 0 a 19, pero solo imprimirá los que son uniformes
(dividir por 2 tiene un resto de 0).
c) 2 4 6 8 10 12 14 16 18
Respuesta incorrecta. La primera vez a través del bucle k tendrá el valor 0 y 0 % 2 devuelve 0 por lo que el 0 se
imprimirá.
d) 3 6 9 12 15 18
Respuesta incorrecta. Esto sería cierto si la prueba fuera (k % 3 a 0) y el bucle se iniciara con k a 1.
e) 0 2 4 6 8 10 13 14 16 18 20
Respuesta incorrecta. El bucle se detendrá cuando k tenga el valor de 20. Así que no imprimirá un 20.
Programación. 7-15
11. ¿Qué se imprime cuando se ejecuta el siguiente código (se ejecuta)?
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.set(1,"c");
list.add(2, "d");
list.set(2, "e");
list.add("g");
System.out.println(list);
a) [a, c, e, d, g]
b) [c, e, d, b, g]
c) [a, c, e, g]
d) [a, b, e, d, g]
e) [a, c, e, d, b, g]
a) [a, c, e, d, g]
Respuesta incorrecta. Esto sería cierto si fuera list.add(2, "e") en lugar de list.set(2, "e").
b) [c, e, d, b, g]
Respuesta incorrecta. Esto sería cierto si el primer elemento de una lista estaba en el índice 1, pero está en el índice
0.
c) [a, c, e, g]
Respuesta correcta. Este código agrega "a" al final de la lista: ["a"] y luego "b" al final de la lista: ["a", "b"]. A
continuación, cambia el valor del índice 1 a "c": ["a", "c"]. Luego añade "d" en la posición 2 que primero mueve a la
derecha los valores existentes ["a", "c", "d"]. A continuación, establece el valor en el índice 2 en "e": ["a", "c", "e"].
Luego añade "g" al final: ["a", "c", "e", "g"].
d) [a, b, e, d, g]
Respuesta incorrecta. Para que esto sea cierto, la 3a línea tendría que ser list.add("c"). ¿Lo es?
e) [a, c, e, d, b, g]
Respuesta incorrecta. Esto sería cierto si todos los conjuntos fueran añadidos.
Programación. 8-15
a) pm1pm2cm2cm1
b) pm1pm2
c) pm1pm2cm1cm2
d) pm1cm1
e) pm1
a) pm1pm2cm2cm1
Respuesta correcta. Cuando se ejecuta p.m1() ejecutará el método m1 en Child ya que p es un objeto de esa clase. La
primera línea llama a super.m1() que ejecutará el método m1 en Parent. Ese método imprimirá "pm1" y luego
llamará a m2(). El método m2 en child se ejecutará ya que p es un child objeto. La primera línea de ese método llama
a super.m2() que ejecutará el método m2 en Parent. Esto imprimirá "pm2". A continuación, el método m2 primario
volverá, por lo que la ejecución continuará en el método m2 de Child y se imprimirá "cm2". A continuación, el
método m2 secundario devolverá que continuará la ejecución en el método m1 de Child que imprimirá "cm1".
b) pm1pm2
Respuesta incorrecta. Esto sería cierto si p fuera un objeto de la clase Parent, pero es un objeto de la clase Child y el
tiempo de ejecución iniciará la ejecución de un método en el método de clase Child si lo tiene.
c) pm1pm2cm1cm2
Respuesta incorrecta. Recuerde que cada llamada al método se agrega a la pila de llamadas y después de que el
método devuelve la ejecución continúa con la siguiente instrucción después de la llamada al método.
d) pm1cm1
Respuesta incorrecta. Esto sería cierto si el método m1 en Parent no llamara a m2().
e) pm1
Respuesta incorrecta. Esto sería cierto si el método m1 en Parent no llamara a m2() y la p fuera realmente un objeto
de la clase Parent.
Programación. 9-15
a) Sólo
b) II sólo
c) SÓLO III
d) Sólo I y III
e) I, II y III
a) Sólo
Respuesta incorrecta. Yo trabajo, pero otro también.
b) II sólo
Respuesta incorrecta. El compilador buscará el método basado en el tipo declarado. El tipo declarado para b es
Animal y Animal no tiene un método de gruñido.
c) SÓLO III
Respuesta incorrecta. III sí funciona, pero también otro.
d) Sólo I y III
Respuesta correcta. Trabajo ya que el tipo declarado es Animal y Animal tiene un método de comer. III funciona
porque el elenco le dice al compilador que trate b es un oso y Bear tiene un método de gruñido.
e) I, II y III
Respuesta incorrecta. ¿Animal tiene un método de gruñido? Recuerde que el compilador comprueba el método
mediante el tipo declarado.
a) Refleja los valores desde la mitad superior hasta la mitad inferior de la matriz 2D
b) Refleja los valores desde la parada izquierda hasta la mitad derecha de la matriz 2D
c) Refleja los valores desde la mitad inferior hasta la mitad superior de la matriz 2D
d) Refleja los valores de la mitad derecha a la mitad izquierda de la matriz 2D
e) Todos los valores siguen siendo los mismos.
a) Refleja los valores desde la mitad superior hasta la mitad inferior de la matriz 2D
Respuesta incorrecta. Esto sería cierto si fuera p[height - row - 1][col] á p[row][col];
b) Refleja los valores desde la parada izquierda hasta la mitad derecha de la matriz 2D
Programación. 10-15
Respuesta incorrecta. Esto sería cierto si estuviera recorriendo en bucle todas las filas y la mitad de las columnas y
copiando de p[row][width - col - 1] á p[row][col];
c) Refleja los valores desde la mitad inferior hasta la mitad superior de la matriz 2D
Respuesta correcta. Esto recorre las medias filas superiores (altura / 2) y refleja los valores de la mitad inferior p[fila]
[col] á p[altura - fila - 1][col]; Por lo tanto, p[0][0] á p[height - 1][0] y p[0][1] á p[height - 1][1].
d) Refleja los valores de la mitad derecha a la mitad izquierda de la matriz 2D
Respuesta incorrecta. Esto sería cierto si estuviera recorriendo en bucle todas las filas y la mitad de las columnas y
copiando de p[row][width - col - 1] á p[row][col];
e) Todos los valores siguen siendo los mismos.
Respuesta incorrecta. ¿Cómo puede ser esto cierto desde p[row][col] á p[height - row - 1][col]?
//precondition: x >=0
public static void mystery (int x) {
System.out.print(x % 10);
if ((x / 10) != 0) {
mystery(x / 10);
}
System.out.print(x % 10);
}
a) 12344321
b) 1234
c) 4321
d) 43211234
e) 32144123
a) 12344321
Respuesta correcta. Este método imprime el dígito más a la derecha (x % 10 devuelve el dígito más a la derecha) y
luego si x / 10 no es igual a 0 (x <10) devuelve el misterio del número actual después de cortar el dígito más derecho.
Así que mystery(4321) imprime 1 y luego llama mystery(432) que imprime 2 y luego llama mystery(43) que imprime 3
y luego llama misterio (4) que imprime 4. Puesto que 4 / 10 es igual a 0 no hará una llamada recursiva. Se imprime 4
de nuevo y misterio(4) vuelve. La ejecución volverá al misterio(43) después de la llamada recursiva al misterio(4) y el
3 se imprimirá y luego el misterio (43) volverá. La ejecución volverá al misterio(432) después de la llamada recursiva
al misterio(43) y el 2 se imprimirá y luego el misterio (432) volverá. La ejecución volverá al misterio(4321) después de
la llamada recursiva al misterio(432) y el 1 se imprimirá y luego el misterio (4321) volverá.
b) 1234
Respuesta incorrecta. Esto sería cierto si no hubiera un segundo System.out.print(x % 10) después de if.
c) 4321
Respuesta incorrecta. Esto sería cierto si la primera llamada a System.out.print(x % 10); no estaba en el método.
d) 43211234
Respuesta incorrecta. Esto sería cierto si fuera misterio(1234).
e) 32144123
Respuesta incorrecta. ¿Cómo se imprime primero el 3? Recuerde que x % 10 devuelve el dígito más derecho en x.
Programación. 11-15
16. 14-3-15: Un aula es una habitación y un edificio tiene muchas
habitaciones. Si las tres clases Room, Classroom y Building crean objetos
que tienen la misma relación, ¿cuál de las siguientes es el conjunto de
declaraciones más adecuado?
17. Dado el siguiente código, ¿cuál de las respuestas describe mejor las
condiciones necesarias para que temp sea true cuando se devuelve?
boolean temp = false;
int count = 0;
for ( int testVal : a)
{
if ( testVal == val )
count++;
}
temp = count > 1;
return temp;
a) 1 1 2 2 2 2 2 3 1 3 2 4 4 4 2 5 1 5 2
b) 1 2 2 4 3 6 4 8
c) 1 1 2 2 2 2 2 3 1 3 2 4 1 4 2
d) 5 10 15 4 8 12 3 6 9 2 4 6 1 2 3
e) 1 2 2 4 3 6 4 8 5 10
a) 1 1 2 2 2 2 2 3 1 3 2 4 4 4 2 5 1 5 2
Respuesta incorrecta. Esto sería cierto si la línea 3 era: System.out.print(j + " " + k + " ");
b) 1 2 2 4 3 6 4 8
Respuesta incorrecta. Esto sería cierto si la línea 1 fuera: for (int j á 1; j <5; j++).
c) 1 1 2 2 2 2 2 3 1 3 2 4 1 4 2
Respuesta incorrecta. Esto sería cierto si la línea 1 era: for (int j á 1; j <5; j++) y si la línea 3 era: System.out.print(j + "
+ k + " ");
d) 5 10 15 4 8 12 3 6 9 2 4 6 1 2 3
Respuesta incorrecta. Esto sería cierto si la línea 1 fuera: para (int j - 5; j >-1; j--) y la línea 2 era: para (int k a 1; k <- 3;
k++).
e) 1 2 2 4 3 6 4 8 5 10
Respuesta correcta. Esto imprime j * k y para cada valor de j de 1 a 5, k cambia de 1 a 2. Así que cuando j es 1 se
imprimirá 1 2. Cuando j es 2 se imprimirá 2 4. Cuando j es 3 se imprimirá 3 6. Cuando j es 4 se imprimirá 4 8. Cuando j
es 5 se imprimirá 5 10.
a) method1 y method3
b) método1 sólo
c) método2 sólo
d) method2 y method3
e) todos ellos
a) method1 y method3
Respuesta correcta. El problema con method2 es que si num1-num2 el primero si se ejecutará, pero también lo hará
el segundo si y el resultado se establecerá en 1.
b) método1 sólo
Respuesta incorrecta. Otro también funcionará.
c) método2 sólo
Respuesta incorrecta. Este no funcionará. El problema con method2 es que si num1-num2 el primero si se ejecutará,
pero también lo hará el segundo si y el resultado se establecerá en 1.
d) method2 y method3
Respuesta incorrecta. Aunque method3 funcionará, method2 no. El problema con method2 es que si num1-num2 el
primero si se ejecutará, pero también lo hará el segundo si y el resultado se establecerá en 1.
e) todos ellos
Respuesta incorrecta. Dos funcionarán, pero uno no.
20. ¿Cuáles son los primeros y últimos valores que genera el siguiente
segmento de código?
a) 13, 28
b) 13, 29
c) 14, 28
Programación. 14-15
d) 14, 29
e) 1, 28
a) 13, 28
Respuesta correcta. Se imprimirá el valor de t antes de cambiarlo, por lo que imprimirá 13 primero y el bucle termina
cuando t es igual a 29 por lo que la última vez que se imprimirá 28.
b) 13, 29
Respuesta incorrecta. Imprime el valor de t antes de cambiarlo y el bucle termina cuando t es igual a 29 así que
¿cómo puede ser verdad?
c) 14, 28
Respuesta incorrecta. Imprime el valor de t antes de cambiarlo y t comienza en 13 por lo que imprimirá 13 primero.
d) 14, 29
Respuesta incorrecta. Imprime el valor de t antes de cambiarlo, por lo que ninguno de estos es correcto.
e) 1, 28
Respuesta incorrecta. ¿Cómo podría imprimir 1 para el valor de t cuando t se establece en 13 inicialmente?
Programación. 15-15