You are on page 1of 15

C.I.F.P CAMINO DE LA MIRANDA.

PALENCIA
FECHA: Friday, 12 de January de 2024. EVALUACIÓN: SEGUNDA.
MODULO: Programación.
GRUPO: Primero de Desarrollo de Aplicaciones Multiplataforma.
NOMBRE: calificación

Los siguientes problemas son similares a los que se pueden dar en un


examen.
Por favor, responda cada uno lo mejor que pueda. Con el fin de aprobar el
examen. Haga clic en el botón "Inicio" cuando esté listo para comenzar el
examen. Haga clic en el botón "Pausa" para pausar el examen (no podrá ver
las preguntas cuando el examen esté en pausa). Pase el cursor sobre el
icono del reloj para ver la hora actual restante. Haga clic en el botón
"Enviar respuestas" al final cuando haya terminado. Mostrará el número
correcto, el número incorrecto y el número omitido después del botón
"Enviar respuesta". Y luego esto esto me llegará a mi en una hoja excel
con los resultados.

1. Cuál es el valor de total después de ejecutar el siguiente código?


int[][] matrix = {{4, 5, 6, 7}, {0, 1, 2, 3}, {3, 2, 1, 0}, {8, 9, 1, 2}};
int total = 0;
for (int row = 0; row < len; row++) {
total = total + matrix[row][1]; }

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.

2. ¿Cuál es la diferencia entre una interfaz y una clase abstracta?


a) No hay diferencia.
b) Las clases abstractas pueden tener métodos con cuerpos (código en ellos), pero
las interfaces no.
c) Se pueden crear instancias de clases abstractas, mientras que las interfaces no.
d) Las clases abstractas se pueden extender, pero las interfaces no.
e) Las clases abstractas pueden declarar métodos abstractos, pero las interfaces
no.Final del formulario

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.

3. Supongamos que la lista se ha inicializado con los siguientes objetos


enteros: [9, 3, 17, 2, 16, 4, 1]. ¿Cuál de las siguientes muestra los
valores de la lista después de una llamada de mystery(4)?private List
list<Integer>;
private List list<Integer>;
public void mystery(int n) {
for (int i= 0; i < n; i++) {
Object obj = list.remove(0);
list.add((Integer)obj); } }

Principio del formulario


a) [9, 3, 17, 2, 16, 4, 1]
b) [1, 4, 16, 2, 17, 3, 9]
c) [9, 3, 17, 16, 4, 1, 2]
d) [16, 4, 1, 9, 3, 17, 2]
e) [2, 16, 4, 1, 9, 3, 17]

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.

4. Dadas las dos declaraciones de clase siguientes, ¿cuál es la relación


entre Dog y DogOwner?
public class Dog {
private String name;
public void setName(String n) {
name = n;
}
public String getName() { return name;
}
} public class DogOwner {
private String name;
private Dog[] dogs; }

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.

6. La clase C extiende o deriva de la clase B, que extiende o deriva


de la clase A. Además, las tres clases implementan un método público
test(). ¿Cómo puede un método de un objeto de la clase C invocar el método
test() definido en la clase A (sin crear una nueva instancia de la clase
A)?

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

7. ¿Cuál de las siguientes es una llamada correcta para test?


public class Vehicle {
public void test(Car x, SportsCar y) {}
}
public class Car extends Vehicle {
} public class SportsCar extends Car {
} public class VechicleTest {
public static void main(String[] args) {
Vechicle v = new Vechicle();
Car c = new Car();
SportsCar sporty = new SportsCar();
} }

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.

8. Dada la siguiente declaración de método. ¿Qué valor se devuelve desde


recur(5)?
public static int recur(int n) {
if (n <= 1) return 1;
else return (recur(n-1) + recur(n-2));
}

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.

9. ¿Qué se imprime cuando se ejecuta el siguiente código?


for (int k = 0; k < 20; k = k + 1)
{
if (k % 2 == 0) System.out.print(k + " ");
}

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.

10. 14-3-9: ¿Qué se imprime cuando se ejecuta el siguiente código?


for (int k = 0; k < 20; k = k + 1)
{
if (k % 2 == 0)
System.out.print(k + " ");
}

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.

12. Supongamos que el padre p es nuevo Child(); aparece en un programa


cliente. ¿Cuál es el resultado de la llamada p.m1()?
public class Parent {
public void m1() {
System.out.print("pm1");
m2();
}
public void m2() {
System.out.print("pm2");
}
}
public class Child extends Parent {
public void m1() {
super.m1();
System.out.print("cm1");
} public void m2()
{
super.m2(); System.out.print("cm2");
}
}

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.

13. Supongamos que la lista se ha inicializado con los siguientes objetos


enteros: [9, 3, 17, 2, 16, 4, 1]. ¿Cuál de las siguientes muestra los
valores de la lista después de una llamada de mystery(4)?

public class Animal {


// constructors not shown
public void eat()
{ // code not shown
}
}
public class Bear extends Animal {
// constructors not shown
public void growl() {
// code not shown
}
}
Assume that the following declaration is in a different class.
Animal b = new Bear();
Which of the following will compile without error?
I. b.eat();
II. b.growl;
III. ((Bear) b).growl();

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.

14. ¿Cuál de las siguientes explica mejor lo que hace el método m?

public void m(int[][]p)


{
int height = p.length;
for (int row = 0; row < height / 2; row++)
{
for (int col = 0; col <p[0].length; col++)
{
p[row][col] = p[height - row - 1][col];
}
}
}

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

15. ¿Cuál es la salida de mystery(4321) cuando mystery se define de la


siguiente manera?

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

a) Clase pública La sala extiende el Aula implementa El edificio ...


b) clase pública Aula extiende la habitación á ... - clase pública Edificio - Habitaciones privadas[]
c) Clase pública La habitación se extiende el edificio de la sala privada del aula; ....
d) Clase pública Aula extiende Edificio, Sala ...
e) Clase pública La sala extiende El Aula, el Edificio ...

a) Clase pública La sala extiende el Aula implementa El edificio ...


Respuesta incorrecta. ¿Es un Aula un tipo de edificio? No use extends a menos que un objeto de la clase secundaria se
pueda sustituir por un objeto de la clase primaria.
b) clase pública Aula extiende la habitación á ... - clase pública Edificio - Habitaciones privadas[]
Respuesta correcta. Si un aula es una sala, Entonces Classroom debe extender Room (heredar de ella). Si un edificio
tiene habitaciones debe tener un campo que las contiene. Dado que un edificio puede tener más de una habitación,
podemos utilizar una matriz para mantener las habitaciones.
c) Clase pública La habitación se extiende el edificio de la sala privada del aula; ....
Respuesta incorrecta. ¿Es una habitación un tipo de edificio? No use extiende a menos que el niño sea el mismo tipo
de cosa que el padre.
d) Clase pública Aula extiende Edificio, Sala ...
Respuesta incorrecta. No puede extender dos clases en Java, por lo que esto no puede ser correcto.
e) Clase pública La sala extiende El Aula, el Edificio ...
Respuesta incorrecta. No puede extender dos clases en Java, por lo que esto no puede ser correcto.

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) Siempre que el primer elemento de a sea igual a val


b) Siempre que a contenga cualquier elemento que sea igual a val.
c) Siempre que más de 1 elemento en a sea igual a val.
d) Siempre que exactamente 1 elemento en a es igual a val.
e) Siempre que el último elemento de a sea igual a val.

a) Siempre que el primer elemento de a sea igual a val


Respuesta incorrecta. ¿Para qué es la cuenta?
b) Siempre que a contenga cualquier elemento que sea igual a val.
Programación. 12-15
Respuesta incorrecta. Solo establece temp en true cuando count es mayor que 1.
c) Siempre que más de 1 elemento en a sea igual a val.
Respuesta correcta. Esto incrementa el recuento una vez para cada valor en un que es igual a val. Devuelve true
cuando count es mayor que 1.
d) Siempre que exactamente 1 elemento en a es igual a val.
Respuesta incorrecta. Esto sería cierto si se trata de temp - recuento de 1.
e) Siempre que el último elemento de a sea igual a val.
Respuesta incorrecta. Esto podría ser una línea de retorno de código (a[a.length-1] á val).

18. ¿Cuál es la salida del siguiente segmento de código?


for (int j = 1; j <=5; j++) { for (int k = 1; k < 3; k++) System.out.print(j * k + " "); }

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.

19. Tenga en cuenta los siguientes métodos. ¿Cuál de method1, method2 y


method3 daría el mismo resultado que el ejemplo?

public void sample(int num1, int num2) {


int result = 99;
if (num1==num2) {result = 0;}
else if (num1>num2){result = 1;}
else {result = -1;}
System.out.println(result);
}

public void method1(int num1, int num2) {


int result=99;
Programación. 13-15
if (num1 == num2) {result = 0;}
else {
if(num1 > num2) {result = 1;}
else {result = -1;}
}
System.out.println(result);
}

public void method2(int num1, int num2) {


int result = 99;
if (num1 == num2) {result = 0;}
if (num1 >= num2) {result = 1;}
else {result = -1;}
System.out.println(result);
}

public void method3(int num1, int num2) {


int result = 99 ;
if (num1 == num2) {result = 0;}
if (num1 > num2) {result = 1;}
if (num1 < num2) {result = -1;}
System.out.println(result);}

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?

int t = 13; while (t < 29) { System.out.println(t); t++; }

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

You might also like