1. Representación de Datos y Aplicaciones 15 de diciembre de 2005
1º de Ing. Téc. de Telecomunicación esp. Sonido e Imagen
Apellidos y nombre:....................................................................................................
PRUEBA ESCRITA
Duración: 1 hora 50 minutos
Nota: Se permite el uso de la hoja con los programas java.
Puntuación: 10 puntos (1 punto sobre la nota final)
Nota: Marca tus respuestas en la hoja adjunta utilizando un lápiz.
Cada pregunta tiene una única respuesta correcta. Cada respuesta correcta sumará 1 punto a
la nota del examen. Cada respuesta errónea restará 0,33 puntos a la nota del examen. Una
respuesta en blanco vale 0 puntos.
1) ¿Qué diferencia existe entre un lenguaje de bajo y nivel y otro de alto nivel?
a) El de bajo nivel está más próximo a lo que entiende el ser humano y el de alto nivel más
próximo a lo que entiende la máquina
b) El de bajo nivel está más próximo a lo que entiende la máquina y el de alto
nivel más próximo a lo que entiende el ser humano
c) El de bajo nivel es código máquina incomprensible y el de alto nivel es lenguaje natural
d) El de bajo nivel permite una gestión menos eficiente de la máquina y el de alto nivel una
gestión más eficiente de la máquina
2) ¿Cuál es el fallo en la siguiente implementación del método dameGrupo()?
public String dameGrupo() {
String sGrupo = this.grupo;
return sGrupo;
sGrupo = “”;
}
a) La variable sGrupo es local y no se puede devolver
b) No se puede acceder al atributo grupo de la clase en el cuerpo del método
c) La última línea del método no se ejecuta nunca
d) La asignación de la variable sGrupo no se puede hacer en el instante de su declaración
3) De acuerdo a la sintaxis del bucle for
for (inicialización ; condición ; actualización) {
sentencias
}
Señalar cuál es la afirmación FALSA:
a) La inicialización se realiza cada vez antes de entrar al bucle
b) La condición se comprueba cada vez antes de entrar al bucle
c) La actualización se realiza siempre al terminar de ejecutar la iteración
d) La inicialización, condición y actualización son elementos "opcionales”
1
2. Representación de Datos y Aplicaciones 15 de diciembre de 2005
4) Sean las siguientes sentencias:
String[] sa;
sa = new String[4];
¿Cuál de estas respuestas es INCORRECTA?
a) Tras la primera sentencia, sa vale null
b) Los elementos del array son sa[0], sa[1], sa[2] y sa[3]
c) Tras la segunda sentencia, sa[1] vale “”
d) Las dos sentencias anteriores podrían unirse en una sentencia
5) Supón que existe definida una clase Persona con un atributo público llamado edad de tipo
int, y sean las siguientes sentencias:
Persona[] pa = new Persona[4];
pa[0].edad = 19;
¿Cuál de estas respuestas es correcta?
a) El código es incorrecto porque pa[0] está fuera del rango del array
b) El código es incorrecto porque pa[0] no tiene ningún objeto asignado
c) El código es incorrecto porque intenta asignar directamente un valor al atributo edad, sin
usar un método de acceso
d) El código es incorrecto. La primera línea debería ser:
Persona[] pa = new Persona(4);
Programa 1. Cálculo de raíces
6) ¿Qué habría que hacer para cambiar el bucle do-while del método main() por el bucle
while equivalente?:
a) No habría que hacer nada
b) Habría que inicializar el objeto linea dentro del bucle while
c) Habría que inicializar el objeto linea antes de entrar en el bucle while
d) Habría que declarar el objeto linea como estático (static)
7) De la siguiente línea de código, ¿cuál de las siguientes afirmaciones es correcta?
a = Float.parseFloat(linea);
a) Float es un nombre de clase y parseFloat es un método estático
b) Float es un objeto y parseFloat es un método estático
c) En la variable a almacenamos el String que está contenido en la variable linea
d) En la variable a almacenamos el float que está contenido en la variable linea
8) ¿Qué aseguramos con la sentencia?
2
3. Representación de Datos y Aplicaciones 15 de diciembre de 2005
discriminante = (float)(Math.pow(b,2)-4*a*c);
a) Que antes de evaluar la expresión Math.pow(b,2)-4*a*c tenemos un tipo float
b) Que el resultado de evaluar la expresión Math.pow(b,2)-4*a*c se interpreta
como un float
c) Que discriminante se convertirá en tipo float después de ejecutar la sentencia
d) Asegura que Math.pow(b,2) sea de tipo float
Programa 2. Adivinanzas
9) Indica en cuál de las siguientes situaciones se ejecutaría el código que aparece en el interior
del while
while(!acertado && intentos<totalIntentos)
a) acertado = false; intentos = 3 ; totalIntentos = 3
b) acertado = true; intentos = 3 ; totalIntentos = 5
c) acertado = true; intentos = 5 ; totalIntentos = 3
d) acertado = false; intentos = 3 ; totalIntentos = 5
10) ¿Cuáles son los atributos de la clase Adivinanza?
a) java.io.* y java.math.*
b) El único atributo es main(..)
c) La clase no tiene atributos
d) teclado, superior, inferior, totalIntentos, secreto, numero,
intentos, acertado y linea
Programa 3. Alarma de temperatura (versión 1)
11) ¿Por qué se han programado dos constructores en la clase?
a) Para crear de la misma forma los posibles objetos de la clase
b) Para permitir la eliminación correcta de la memoria reservada
c) Para obligar a introducir la temperatura actual cuando creamos el objeto
d) Para permitir la inicialización del estado del objeto de dos formas diferentes
Programa 4. Alarma de temperatura (versión 2)
12) Indica cuál de las siguientes afirmaciones es correcta:
a) El atributo timbreAlarma toma el valor null cuando invocamos al constructor por
defecto
b) El atributo timbreAlarma nunca toma el valor null porque se inicializa en
todos los constructores y cambia de estado cada vez que se comprueba la
temperatura
3
4. Representación de Datos y Aplicaciones 15 de diciembre de 2005
c) timbreAlarma es un objeto de la clase Timbre y cada vez que cambia de estado es
necesario crear un nuevo objeto de dicha clase
d) activar() y desactivar() son atributos de la clase Timbre
13) Supón que creamos un objeto AlarmaDeTemperatura para medir la fiebre de un enfermo
e inicializamos la temperatua a 37º. Imagina que el sensor de temperatura conectado al
enfermo modifica la temperatura actual a 39º utilizando para ello el método
cambiaTemperaturaActual. ¿Cuál de las siguientes afirmaciones es cierta?
a) Tendríamos que cambiar el código, tal y como está escrito el timbre suena si la
temperatura es inferior a un valor dado y no si es superior
b) El timbre no sonaría al invocar a cambiaTemperaturaActual(39) porque no hemos
invocado al método comprobarTemperatura()
c) El timbre sonaría al invocar a cambiaTemperaturaActual(39), no es necesario
hacer una llamada adicional a comprobarTemperatura()
d) No se puede cambiar la temperatura de la alarma porque está almacenada en un atributo
declarado como private
14) ¿Por qué motivo la clase Timbre no tiene constructor?
a) No le hace falta constructor puesto que no tiene atributos
b) Si tiene constructor, el constructor por defecto que ofrece Java
c) No se implementa el constructor porque los métodos no hacen nada
d) Sólo hay que implementar el constructor cuando hay métodos de acceso pon/dame
Programa 5. Cesta de la compra (versión 1)
15) Sea la implementación del método añadeProducto():
public void añadeProducto(String producto) {
cesta.añadeElemento(producto);
}
¿Qué argumento se le pasa al método añadeElemento() del objeto cesta?
a) Una copia del objeto del argumento producto
b) Una copia de la referencia del argumento producto
c) La referencia a una copia del argumento producto
d) El mismo objeto del argumento producto
16) Si moviésemos el método main al principio de la declaración de la clase índica cual de las
siguientes afirmaciones es correcta:
a) El programa no funcionaría porque el método main invoca al método
imprimeCestaCompra que se declara justo después
4
5. Representación de Datos y Aplicaciones 15 de diciembre de 2005
b) No importa en qué orden estén declarados los métodos de la clase
CestaCompra. El intérprete de java comenzará siempre a ejecutar el programa
por el método main
c) El orden en el que se declaran los métodos debe ser el mismo orden en el que se invocan
en el main y el main debe aparecer en primer lugar ya que es el primero que se ejecuta
d) El orden en el que se declaran los métodos debe ser el mismo orden en el que se invocan
en el main y el main debe aparecer en último lugar ya que en el momento de ejecutarse
deben conocerse ya los métodos anteriores
Programa 6. Cesta de la compra (versión 2)
17) ¿Cuántos objetos de la clase Producto se crean en el método main?
(NOTA: ESTA PREGUNTA SE CANCELÓ POR ESTAR NUMERADAS LAS RESPUESTAS CON
LETRAS INCORRECTAS QUE PODÍAN INDUCIR RESPUESTAS FALSAS SI EL ALUMNO NO SE
DABA CUENTA. SE SUMÓ UN PUNTO A TODOS LOS ALUMNOS).
a) Ninguno porque en el main no hay ninguna invocación directa al constructor de la clase
Producto
a) Una porque el método main invoca a otros métodos de la clase CestaCompra y en la
clase CestaCompra aparece una única invocación al constructor
b) Cinco veces porque en el main se hacen cinco invocaciones al constructor de
forma indirecta a través de otros métodos.
c) Seis veces una en la declaración de uno de los métodos de la clase CestaCompra y
otras cinco cuando se invoca dicho método
18) ¿Se podría implementar un método dameNombrePrecio() en la clase Producto que
devolviese a la vez en nombre y el precio del producto?
a) No porque el método sólo puede devolver un valor
d) No porque los parámetros son por valor
e) Sí, devolviendo un objeto con los resultados
f) Sí puesto que los parámetros son por referencia
Programa 7. Cálculo estadístico
19) ¿Cuál de las siguientes afirmaciones sobre la variable cuentaDatos es cierta?
a) Su valor se inicializa a 0 al invocar al constructor por defecto y se modifica al
invocar al método entrarDatos
b) Su valor se inicializa a 0.0 al invocar al constructor por defecto y se modifica al invocar al
método entrarDatos
c) Su valor se inicializa a 0 al invocar al constructor por defecto y se modifica al invocar a los
métodos entrarDatos dameMedia y dameDesviacionTipica
d) Su valor se inicializa a 0.0 al invocar al constructor por defecto y se modifica al invocar a
los métodos entrarDatos dameMedia y dameDesviacionTipica
20) ¿A qué es equivalente sum += num?
5
6. Representación de Datos y Aplicaciones 15 de diciembre de 2005
a) num = sum + num;
b) num + sum = sum;
c) sum = sum + num;
d) sum + num = num;
6