6
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:.................................................................................................... 1 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”

Examen de Turbo C

Embed Size (px)

Citation preview

Page 1: Examen de Turbo C

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

1

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”

Page 2: Examen de Turbo C

Representación de Datos y Aplicaciones 15 de diciembre de 2005

2

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?

Page 3: Examen de Turbo C

Representación de Datos y Aplicaciones 15 de diciembre de 2005

3

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

Page 4: Examen de Turbo C

Representación de Datos y Aplicaciones 15 de diciembre de 2005

4

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

Page 5: Examen de Turbo C

Representación de Datos y Aplicaciones 15 de diciembre de 2005

5

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?

Page 6: Examen de Turbo C

Representación de Datos y Aplicaciones 15 de diciembre de 2005

6

a) num = sum + num; b) num + sum = sum; c) sum = sum + num; d) sum + num = num;