ejerciciosparaexamen

38
Fundamentos de Programación Semestre Otoño IPP Instituto Profesional Providencia Escuela de Tecnología e Informática Ejercicios Java2 Guía para Preparar Examen Fuente: Libro Java2 Serie Schaum gonzalezpe Página 1 07/02/2022

Upload: api-3735749

Post on 07-Jun-2015

2.215 views

Category:

Documents


20 download

DESCRIPTION

Guía para el EXAMEN

TRANSCRIPT

Fundamentos de Programación Semestre Otoño IPP

Instituto Profesional Providencia Escuela de Tecnología e Informática

Ejercicios Java2Guía para Preparar Examen

Fuente: Libro Java2 Serie Schaum

Profesor: Pedro Antonio González T.Curso: Fundamentos de Programación

gonzalezpe Página 1 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

ÍndiceIntroducción a Objetos......................................................................................................................3Ejercicio n.11.................................................................................................................................... 3Ejercicio n.15.................................................................................................................................... 3Ejercicio n.1...................................................................................................................................... 3Ejercicio n.12.................................................................................................................................... 5Ejercicio n.16.................................................................................................................................... 5Ejercicio n.18.................................................................................................................................... 5Ejercicio n.14.................................................................................................................................... 5Ejercicio n.13.................................................................................................................................... 6Ejercicio n.16.................................................................................................................................... 6Ejercicio n.17.................................................................................................................................... 6Ejercicio n.19.................................................................................................................................... 7Ejercicio n.19.................................................................................................................................... 7Ejercicio n.21.................................................................................................................................... 7Ejercicio n.22.................................................................................................................................... 8Ejercicio n.23.................................................................................................................................... 8Ejercicio n.24.................................................................................................................................... 8Ejercicio n.39.................................................................................................................................... 9Atributos y Métodos........................................................................................................................10Ejercicio n.14.................................................................................................................................. 10Ejercicio n.12.................................................................................................................................. 10Ejercicio n.13.................................................................................................................................. 10Ejercicio n.17.................................................................................................................................. 11Ejercicio n.25.................................................................................................................................. 11Ejercicio n.26.................................................................................................................................. 12Ejercicio n.27.................................................................................................................................. 12Ejercicio n.29.................................................................................................................................. 12Ejercicio n.32.................................................................................................................................. 13Ejercicio n.39.................................................................................................................................. 13Ejercicio n.3.................................................................................................................................... 14Ejercicio n.36.................................................................................................................................. 15Ejercicio n.38.................................................................................................................................. 15Ejercicio n.37.................................................................................................................................. 15Estructuras de Control....................................................................................................................16Ejercicio n.4.................................................................................................................................... 16Ejercicio n.19.................................................................................................................................. 17Ejercicio n.25.................................................................................................................................. 17Ejercicio n.26.................................................................................................................................. 17Ejercicio n.27.................................................................................................................................. 18Ejercicio n.27.................................................................................................................................. 18Ejercicio n.29.................................................................................................................................. 18Ejercicio n.30.................................................................................................................................. 19Ejercicio n.31.................................................................................................................................. 19Ejercicio n.31.................................................................................................................................. 20Ejercicio n.35.................................................................................................................................. 20Ejercicio n.33.................................................................................................................................. 20Ejercicio n.34.................................................................................................................................. 21Ejercicio n.5.................................................................................................................................... 21Ejercicio n.9.................................................................................................................................... 21

gonzalezpe Página 2 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

Ejercicio n.9.................................................................................................................................... 21Clases................................................................................................................................................. 24

Ejercicio n.40.................................................................................................................................. 24Ejercicio n.41.................................................................................................................................. 24Ejercicio n.42.................................................................................................................................. 24Ejercicio n.43.................................................................................................................................. 25Ejercicio n.44.................................................................................................................................. 25Ejercicio n.45.................................................................................................................................. 25Ejercicio n.46.................................................................................................................................. 26Ejercicio n.10.................................................................................................................................. 26Ejercicio n.7.................................................................................................................................... 27Ejercicio n.10.................................................................................................................................. 27Ejercicio n.8.................................................................................................................................... 28Ejercicio n.47.................................................................................................................................. 28Ejercicio n.48.................................................................................................................................. 28Ejercicio n.49.................................................................................................................................. 29Ejercicio n.2.................................................................................................................................... 29

gonzalezpe Página 3 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

Introducción a Objetos

Ejercicio n.11Temas: 2 LDificultad: 2Registrado: 2003-09-18

Escriba un programa que muestre el mensaje "Hola Mundo" por pantalla. ¿Cuántas clases necesitará definir para conseguir la funcionalidad deseada? ¿Cuántos métodos habrá que definir como mínimo?

Ejercicio n.15Temas: 2 LDificultad: 4Registrado: 2003-09-28

Defina una clase libro que pueda ser utilizada para representar los libros que hay en una biblioteca. Suponga que cada libro tiene los siguientes atributos:

Título Autor Año de publicación Editorial

Escriba un método main donde creará dos objetos de la clase libro, y al final, muestre los datos de cada uno de ellos.

Ejercicio n.1Temas: 2 LDificultad: 5Registrado: 2002-09

El programa Errores debería escribir por pantalla las siguientes líneas:

FPRG - Ejercicio 1

Datos a operar: a=10 y b=3

La multiplicacion vale 30

La suma es 13

13 tambien es la suma

O lo que es lo mismo 13

La resta es 7

La resta es tambien 7

gonzalezpe Página 4 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

class Errores {

public static void main() {

System.out.println('FPRG - Ejercicio 1');

int a = 10

int b = 3;

System.out.println("Datos a operar: a=",a," y b=",b);

System.out.println("La multiplicacion vale a*b");

int c = a+b;

System.out.println("La suma es "+a+b);

System.out.println(a+b+" tambien es la suma");

System.out.println("O lo que es lo mismo "+c);

int c = a-b;

System.out.println("La resta es "+c);

System.out.println("La resta es tambien "+a-b);

}

}

Sin embargo, no funciona debido a la existencia de varios errores.

Se pide que localice todos los errores existentes, indicando por qué son errores.

Ejercicio n.12Temas: 2 4 LDificultad: 5Registrado: 2003-09-18

Escriba una clase Java que represente un círculo; el círculo queda perfectamente definido si se conoce su radio. Defina además, para esta clase, dos métodos (públicos) que permitan calcular el área del círculo y el perímetro de la circunferencia que delimita el crculo.

Para probar la funcionalidad antes definida, escriba un pequeño programa que cree un círculo con un radio dado, y que calcule (y muestre por pantalla) el área y el perímetro de su circunferencia.

Ejercicio n.16

gonzalezpe Página 5 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

Temas: 2 3Dificultad: 5Registrado: 2003-10-05

Escriba un programa que reciba como argumento el radio de una circunferencia y calcule (y muestre por pantalla) la longitud de la circunferencia y el área del círculo delimitado por la misma. Utilice 3.141592 como valor de la constante PI.

Ejercicio n.18Temas: 2Dificultad: 5Registrado: 2003-10-05

Defina un programa que reciba como argumento un valor de temperatura en grados Celsius e imprima por pantalla su valor en grados Farenheit. Recuerde la fórmula de conversión: F = 9/5 * C + 32.

Ejercicio n.14Temas: 3 4 LDificultad: 4Registrado: 2003-09-28

Defina una clase que sirva para representar el estado de una bombilla (encendido o apagado). Defina, asimismo, dos métodos que permitan encender (on) y apagar (off) la luz de la bombilla.

Para probarlo, cree un pequeño método main que cree un objeto de la clase definida, que haga uso de los métodos previamente definidos y vaya mostrando el estado de la bombilla.

Ejercicio n.13Temas: 3 4 LDificultad: 5Registrado: 2003-09-28

Defina una clase punto que tendrá dos atributos, de tipo real, x e y, que representarán las coordenadas del punto dentro del plano. Defina un método que tenga como argumento otro objeto de la clase punto y que calcule la distancia entre los dos puntos.

Para probar esta funcionalidad, escriba un método main en el que se creen dos puntos, el primero de los cuales deberá tener las coordenadas 100.0, 200.0 y el segundo deberá tener las coordenadas 400.0, 800.0 y calcule e imprima la distancia entre ambos.

Ejercicio n.16Temas: 2 3Dificultad: 5Registrado: 2003-10-05

Escriba un programa que reciba como argumento el radio de una circunferencia y calcule (y muestre por pantalla) la longitud de la circunferencia y el área del círculo delimitado por la misma. Utilice 3.141592 como valor de la constante PI.

gonzalezpe Página 6 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

Ejercicio n.17Temas: 3 4Dificultad: 5Registrado: 2003-10-05

Se desea llevar un control del estado de una cuenta corriente; la cuenta corriente está caracterizada por su saldo y sobre ella se pueden realizar tres tipos de operaciones:

saldo: devuelve el saldo de la cuenta (puede ser negativo). imposición (cantidad): ingresa en la cuenta una cantidad de dinero. reintegro (cantidad): saca de la cuenta una determinada cantidad de dinero.

Suponga que la cuenta inicialmente tiene un saldo de cero. Escriba una clase CuentaCorriente que implemente la funcionalidad descrita; escriba un pequeño programa principal para probar su funcionamiento.

Ejercicio n.19Temas: 3 5Dificultad: 5Registrado: 2003-10-05

Calcule si un año, que ha recibido como argumento en la llamada al programa, es bisiesto. La regla completa para saber si un año es bisiesto, es que sea divisible por 4, excepto que si es divisible por 100 lo sea también por 400. Realice la comprobación mediante una sola operación lógica e imprima en la pantalla un mensaje con el resultado.

Ejercicio n.19Temas: 3 5Dificultad: 5Registrado: 2003-10-05

Calcule si un año, que ha recibido como argumento en la llamada al programa, es bisiesto. La regla completa para saber si un año es bisiesto, es que sea divisible por 4, excepto que si es divisible por 100 lo sea también por 400. Realice la comprobación mediante una sola operación lógica e imprima en la pantalla un mensaje con el resultado.

Ejercicio n.21Temas: 3Dificultad: 5Registrado: 2003-10-05

Escriba un programa que declare dos variables de tipo String con los valores "Hola" y "mundo". Comprueba si son iguales, calcule la longitud de ambas cadenas de caracteres, concaténelas y calcule la longitud del resultado.

Ejercicio n.22Temas: 3

gonzalezpe Página 7 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

Dificultad: 5Registrado: 2003-10-05

Escriba un programa en el que se definan dos variables booleanas con los valores true y false. Con ayuda de estas variables, imprima la tabla de verdad de los operadores lógicos AND y OR.

Ejercicio n.23Temas: 3Dificultad: 5Registrado: 2003-10-05

Escriba un programa que calcule la capacidad de un disco duro de un ordenador que tiene 12000 cilindros, 16 pistas, 8 sectores por pista y sectores de 512 bytes. Exprese su tamaño en bytes, kilobytes, megabytes y gigabytes. El tamaño del disco se calcula de acuerdo con la siguiente fórmula:

capacidad = cilindros * pistas * sectores * bytes

Un kilobyte son 1024 byts. Un megabyte son (kilobyte * 1024) bytes. Un gigabyte es (megabyte * 1024) bytes.

Ejercicio n.24Temas: 3Dificultad: 5Registrado: 2003-10-05

Escriba un programa que calcule la distancia recorrida por un móvil que se mueve a velocidad constante de 3.2 m/s y que ha recorrido un espacion inicial de 7.3 m en un tiempo de t segundos. El valor de t se introducirá como argumento en la llamada del programa.

Ejercicio n.39Temas: 3,4Dificultad: 5Registrado: 2003-10-16

Escriba una clase que permita manejar números complejos; defina métodos para las cuatro operaciones fundamentales.

gonzalezpe Página 8 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

Atributos y Métodos

Ejercicio n.14Temas: 3 4 LDificultad: 4Registrado: 2003-09-28

Defina una clase que sirva para representar el estado de una bombilla (encendido o apagado). Defina, asimismo, dos métodos que permitan encender (on) y apagar (off) la luz de la bombilla.

Para probarlo, cree un pequeño método main que cree un objeto de la clase definida, que haga uso de los métodos previamente definidos y vaya mostrando el estado de la bombilla.

Ejercicio n.12Temas: 2 4 LDificultad: 5Registrado: 2003-09-18

Escriba una clase Java que represente un círculo; el círculo queda perfectamente definido si se conoce su radio. Defina además, para esta clase, dos métodos (públicos) que permitan calcular el área del círculo y el perímetro de la circunferencia que delimita el crculo.

Para probar la funcionalidad antes definida, escriba un pequeño programa que cree un círculo con un radio dado, y que calcule (y muestre por pantalla) el área y el perímetro de su circunferencia.

Ejercicio n.13Temas: 3 4 LDificultad: 5Registrado: 2003-09-28

Defina una clase punto que tendrá dos atributos, de tipo real, x e y, que representarán las coordenadas del punto dentro del plano. Defina un método que tenga como argumento otro objeto de la clase punto y que calcule la distancia entre los dos puntos.

Para probar esta funcionalidad, escriba un método main en el que se creen dos puntos, el primero de los cuales deberá tener las coordenadas 100.0, 200.0 y el segundo deberá tener las coordenadas 400.0, 800.0 y calcule e imprima la distancia entre ambos.

Ejercicio n.17Temas: 3 4Dificultad: 5Registrado: 2003-10-05

Se desea llevar un control del estado de una cuenta corriente; la cuenta corriente está caracterizada por su saldo y sobre ella se pueden realizar tres tipos de operaciones:

saldo: devuelve el saldo de la cuenta (puede ser negativo). imposición (cantidad): ingresa en la cuenta una cantidad de dinero. reintegro (cantidad): saca de la cuenta una determinada cantidad de dinero.

gonzalezpe Página 9 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

Suponga que la cuenta inicialmente tiene un saldo de cero. Escriba una clase CuentaCorriente que implemente la funcionalidad descrita; escriba un pequeño programa principal para probar su funcionamiento.

Ejercicio n.25Temas: 4 5Dificultad: 5Registrado: 2003-10-11

Escriba una clase que compruebe si un año es bisiesto o no. La regla completa para saber si un año es bisiesto es que sea divisible por 4, excepto que si es divisible por 100 lo sea también por 400. Realice la comprobación mediante una sola operación lógica; la clase que defina debe tener un método público que devuelva true o false, dependiendo de si el año es bisiesto o no.

gonzalezpe Página 10 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

Ejercicio n.26Temas: 4 5Dificultad: 5Registrado: 2003-10-11

Defina una clase que permita representar una serie aritmética; una serie aritmética viene caracterizada por el primer elemento de la serie y el incremento o diferencia entre dos elementos sucesivos de la serie. Implemente un método en esta clase que permita calcular la suma de los n primeros elementos de la serie (utilice un bucle para realizar esta operación).

Ejercicio n.27Temas: 4 5Dificultad: 5Registrado: 2003-10-11

Se quiere definir una clase que permita controlar un sintonizador digital de emisoras FM; concretamente, lo que se desea es dotar al controlador de una interfaz que permita subir (up) o bajar (down) la frecuencia (en saltos de 0.5 MHz) y mostrar la frecuencia sintonizada en un momento dado (display). Supondremos que el rango de frecuencias a manejar oscila entre los 80 Mhz y los 108 MHz y que al inicio, el controlador sintoniza a 80 MHz. Si durante una operación de subida o bajada se sobrepasa uno de los dos límites, la frecuencia sintonizada debe pasar a ser la del extremo contrario.

Ejercicio n.29Temas: 4 5Dificultad: 5Registrado: 2003-10-05

Queremos modelar una casa con muchas bombillas, de forma que cada bombilla se puede encender o apagar individualmente. Para ello haremos una clase Bombilla con una variable privada que indique si está encendida o apagada, así como un método que nos diga si una bombilla concreta está encendida.

Además queremos poner un interruptor general de la luz, tal que si saltan los fusibles, todas las bombillas quedan apagadas. Cuando el fusible se repara, las bombillas vuelven a estar encendidas o apagadas, según estuvieran antes del percance. Para modelar en Java esta característica usaremos una variable de clase (static) que nos diga si hay luz en el edificio o no. Cada objeto Bombilla se enciende y se apaga individualmente; pero sólo responde que está encendida si su interruptor particular está activado y además hay luz general. El código Java tiene esta estructura:

class Bombilla {

private static ...; // interruptor general

private ...; // interruptor particular

public static void activaGeneral () { ... }

public static void desactivaGeneral () { ... }

gonzalezpe Página 11 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

public void enciende () { ... }

public void apaga () { ... }

public boolean encendida () { ... }

}

Ejercicio n.32Temas: 4 5Dificultad: 5Registrado: 2003-10-16

Defina una clase con un método que muestre por pantalla la tabla de multiplicar para un número (entero) dado (nx1, nx2 ... nx10). Para probar este método, defina un método main que imprima por pantalla la tabla de multiplicar del 1 al 9; separe la salida entre tabla y tabla con una línea en blanco.

Ejercicio n.39Temas: 3,4Dificultad: 5Registrado: 2003-10-16

Escriba una clase que permita manejar números complejos; defina métodos para las cuatro operaciones fundamentales.

Ejercicio n.3Temas: 4Dificultad: 6Registrado: 2002-09

Si (x1,y1), (x2,y2) y (x3,y3) son las coordenadas de tres puntos del plano, entonces el siguiente fragmento de programa calcula el centro (x,y) y el radio (r) de la circunferencia que pasa por ellos.

double a = 2*(x2-x1);

double b = 2*(y2-y1);

double c = x1*x1+y1*y1-x2*x2-y2*y2;

double d = 2*(x3-x1);

double e = 2*(y3-y1);

gonzalezpe Página 12 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

double f = x1*x1+y1*y1-x3*x3-y3*y3;

y = (f*a-c*d)/(b*d-e*a);

x = -b/a*y-c/a;

r = Math.sqrt((x1-x)*(x1-x)+(y1-y)*(y1-y));

Cree una clase llamada Circunferencia, que tenga como atributos las coordenadas de su centro (x,y) y su radio (r), y con un constructor que tome como argumentos las coordenadas de tres puntos por los que pase.

Redefina también el método toString para que represente las circunferencias como Strings de la forma "<(x,y),r>"

Utilice el siguiente método main para probar esta clase:

static public void main(String argv[]) {

double x1 = 9, y1 = 0,

x2 = 2, y2 = -7,

x3 = -3, y3 = 5;

System.out.println(" punto 1 = ("+x1+","+y1+")");

System.out.println(" punto 2 = ("+x2+","+y2+")");

System.out.println(" punto 3 = ("+x3+","+y3+")");

Circunferencia cir = new Circunferencia(x1,y1,x2,y2,x3,y3);

System.out.println(" Circunferencia = "+cir);

}

Ejercicio n.36Temas: 4Dificultad: 6Registrado: 2003-10-16

Defina una clase factorial, que permita calcular el factorial de un número entero; utilice un algoritmo recursivo.

Ejercicio n.38Temas: 4Dificultad: 6Registrado: 2003-10-16

Escriba una clase con un método recursivo capaz de calcular el número de fibonacci de un entero.

gonzalezpe Página 13 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

El número de fibonacci se define así: 1 para el número 1 2 para el número 2 la suma de los números de fibonacci de sus dos anteriores para el resto

Calcule el número de fibonacci de algunos enteros no muy grandes. Observe que la recursividad es una técnica cara en recursos de cómputo.

Ejercicio n.37Temas: 4Dificultad: 7Registrado: 2003-10-16

Escriba una clase que permita imprimir por pantalla todas las variaciones (con repetición) posibles de los números del 0 al 9, tomados de n en n.

Ejemplo, para n=2:

00

01

02

03

...

98

99

Estructuras de Control

Ejercicio n.4Temas: 5Dificultad: 5Registrado: 2002-09

El programa Circunferencia.java, desarrollado en el ejercicio no. 3, falla en algunos casos, dependiendo de cuales sean las coordenadas de los puntos elegidos. En este ejercicio intentaremos detectar todas las posibles situaciones de error, y manejarlas adecuadamente.

En primer lugar se pide modificar el constructor de Circunferencia, para que lance una excepción cuando detecte que algunos de los puntos son iguales entre sí, o estén demasiado alineados.

También ocurre que las ecuaciones propuestas para calcular la circunferencia no funcionan cuando x1 y x2 son iguales. Modifique el constructor para que si ocurre esto, intercambie las coordenadas de los puntos (x1,y1) y (x3,y3) antes de hacer los cálculos. Compruebe primero que x1 y x3 no

gonzalezpe Página 14 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

coincidan, ya que si lo hacen, todos los puntos estarán alineados en la misma vertical, y el contructor deberá lanzar una excepción explicando el problema.

Modifique también el método main, para que los valores de las coordenadas se introduzcan por línea de comandos. Imprima los mensajes que considere oportuno cuando no se introduzcan exactamente los seis valores de las coordenadas, o estos no sean numéricos.

Si se le ocurren nuevos casos problemáticos, coméntelos e intente solucionarlos.

Ejercicio n.19Temas: 3 5Dificultad: 5Registrado: 2003-10-05

Calcule si un año, que ha recibido como argumento en la llamada al programa, es bisiesto. La regla completa para saber si un año es bisiesto, es que sea divisible por 4, excepto que si es divisible por 100 lo sea también por 400. Realice la comprobación mediante una sola operación lógica e imprima en la pantalla un mensaje con el resultado.

Ejercicio n.25Temas: 4 5Dificultad: 5Registrado: 2003-10-11

Escriba una clase que compruebe si un año es bisiesto o no. La regla completa para saber si un año es bisiesto es que sea divisible por 4, excepto que si es divisible por 100 lo sea también por 400. Realice la comprobación mediante una sola operación lógica; la clase que defina debe tener un método público que devuelva true o false, dependiendo de si el año es bisiesto o no.

Ejercicio n.26Temas: 4 5Dificultad: 5Registrado: 2003-10-11

Defina una clase que permita representar una serie aritmética; una serie aritmética viene caracterizada por el primer elemento de la serie y el incremento o diferencia entre dos elementos sucesivos de la serie. Implemente un método en esta clase que permita calcular la suma de los n primeros elementos de la serie (utilice un bucle para realizar esta operación).

Ejercicio n.27Temas: 4 5Dificultad: 5Registrado: 2003-10-11

Se quiere definir una clase que permita controlar un sintonizador digital de emisoras FM; concretamente, lo que se desea es dotar al controlador de una interfaz que permita subir (up) o bajar (down) la frecuencia (en saltos de 0.5 MHz) y mostrar la frecuencia sintonizada en un momento dado (display). Supondremos que el rango de frecuencias a manejar oscila entre los 80 Mhz y los 108 MHz y que al inicio, el controlador sintoniza a 80 MHz. Si durante una operación de subida o bajada

gonzalezpe Página 15 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

se sobrepasa uno de los dos límites, la frecuencia sintonizada debe pasar a ser la del extremo contrario.

Ejercicio n.27Temas: 4 5Dificultad: 5Registrado: 2003-10-11

Se quiere definir una clase que permita controlar un sintonizador digital de emisoras FM; concretamente, lo que se desea es dotar al controlador de una interfaz que permita subir (up) o bajar (down) la frecuencia (en saltos de 0.5 MHz) y mostrar la frecuencia sintonizada en un momento dado (display). Supondremos que el rango de frecuencias a manejar oscila entre los 80 Mhz y los 108 MHz y que al inicio, el controlador sintoniza a 80 MHz. Si durante una operación de subida o bajada se sobrepasa uno de los dos límites, la frecuencia sintonizada debe pasar a ser la del extremo contrario.

Ejercicio n.29Temas: 4 5Dificultad: 5Registrado: 2003-10-05

Queremos modelar una casa con muchas bombillas, de forma que cada bombilla se puede encender o apagar individualmente. Para ello haremos una clase Bombilla con una variable privada que indique si está encendida o apagada, así como un método que nos diga si una bombilla concreta está encendida.

Además queremos poner un interruptor general de la luz, tal que si saltan los fusibles, todas las bombillas quedan apagadas. Cuando el fusible se repara, las bombillas vuelven a estar encendidas o apagadas, según estuvieran antes del percance. Para modelar en Java esta característica usaremos una variable de clase (static) que nos diga si hay luz en el edificio o no. Cada objeto Bombilla se enciende y se apaga individualmente; pero sólo responde que está encendida si su interruptor particular está activado y además hay luz general. El código Java tiene esta estructura:

class Bombilla {

private static ...; // interruptor general

private ...; // interruptor particular

public static void activaGeneral () { ... }

public static void desactivaGeneral () { ... }

public void enciende () { ... }

public void apaga () { ... }

public boolean encendida () { ... }

}

Ejercicio n.30Temas: 5Dificultad: 5

gonzalezpe Página 16 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

Registrado: 2003-10-16

Defina una clase que ofrezca tres métodos para imprimir, respectivamente, las cifras del 0 al 9, las letras mayúsculas y las letras minúsculas; al lado de cada cifra o letra, deberá aparecer, entre paréntesis, su código ASCII. Escriba un método main que haga uso de los tres métodos previamente definidos.

Ejercicio n.31Temas: 5Dificultad: 5Registrado: 2003-10-16

Defina una clase que ofrezca un método que permita comprobar si un entero es par o impar.

Ejercicio n.31Temas: 5Dificultad: 5Registrado: 2003-10-16

Defina una clase que ofrezca un método que permita comprobar si un entero es par o impar.

Ejercicio n.35Temas: 5Dificultad: 5Registrado: 2003-10-16

Defina una clase factorial, que permita calcular el factorial de un número entero; utilice iteración.

Ejercicio n.33Temas: 5Dificultad: 6Registrado: 2003-10-16

Defina una clase que permita calcular la suma, media y el máximo de una lista de números enteros positivos que se introducen por teclado; la entrada acabará cuando se introduzca un número entero negativo.

Para leer por la entrada estándar puede utilizar el método readLine() de la clase BufferedReader y para identificar el entero leído, el método "int Integer.parseInt(String)".

Pista:

private static BufferedReader stdin =

new BufferedReader(new InpuStreamReader(System.in));

String entrada = stdin.readLine();

Ejercicio n.34Temas: 5Dificultad: 6Registrado: 2003-10-16

gonzalezpe Página 17 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

Escriba una clase que permita calcular el número PI con una precisión de "n" decimales. El parámetro "n" deberá introducirse por teclado.

Puede utilizar la siguiente fórmula para aproximar el valor de PI/4:

PI/4 = 1 - 1/3 + 1/5 - 1/7 + ... = Suma(n=0,infinito){(-1)^n/(2n+1)}

Ejercicio n.5Temas: 5Dificultad: 6Registrado: 2002-09

Escriba un programa que calcule todos los números primos entre 1 y un número dado.

Para ello, cree el método "boolean EsPrimo(int n)" que indicará si n es primo o no. Este método comprobará si n es divisible por algún número entero entre 2 y la raíz cuadrada de n.

Ejercicio n.9Temas: 5Dificultad: 6Registrado: 2002-09

Escriba un método que calcule el valor de la función de Ackermann. Esta función se define para números enteros no negativos como:

n + 1 si m=0

A(m,n) = A(m-1, 1) si m>0 y n=0

A(m-1, A(m, n-1)) si m>0 y n>0

Ejercicio n.9Temas: 5Dificultad: 6Registrado: 2002-09

Escriba un método que calcule el valor de la función de Ackermann. Esta función se define para números enteros no negativos como:

n + 1 si m=0

A(m,n) = A(m-1, 1) si m>0 y n=0

A(m-1, A(m, n-1)) si m>0 y n>0

Temas: 5Dificultad: 7Registrado: 2002-09

Escriba la clase Seno, cuyo objetivo es dibujar la función seno en pantalla.

gonzalezpe Página 18 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

gonzalezpe Página 19 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

El contructor de esta clase tomará como parámetros, la amplitud y la velocidad angular de la función.

Para dibujar en pantalla la función se llamará al método "void Pintar(double t0, double t1)", donde t0 y t1 son los dos instantes de tiempo entre los que se pintará la función.

Use el siguiente método main para probar la clase:

public static void main(String[] args) {

Seno s = new Seno(15,0.25);

s.Pinta(0,250);

}

gonzalezpe Página 20 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

Clases

Ejercicio n.40Temas: 6Dificultad: 5Registrado: 2003-11-22

Defina una clase 'Monedero' que permita gestionar la cantidad de dinero de que una persona dispone en un momento dado. La clase deberá tener un constructor que permitirá crear un monedero con una cantidad de dinero inicial y deberá definir un método para meter dinero en el monedero, otro para sacarlo y finalmente, otro para consultar el disponible; solo podrá conocerse la cantidad de dinero del monedero a través de este último método. Por supuesto, no se podrá sacar más dinero del que haya en un momento dado en el monedero.

Para probar el funcionamiento de la clase, escriba un método 'main' con una serie de instrucciones que hagan uso de los métodos definidos

Ejercicio n.41Temas: 6Dificultad: 5Registrado: 2003-11-22

Se desea representar el conjunto de bombillas que hay en una casa, así como la potencia consumida en un momento dado por todas ellas. Para ello, defina una clase 'Bombilla' que tenga al menos dos atributos: uno para identificarla y otro que indique la potencia que consume; también, deberá crear dos métodos que permitan encender y apagar la bombilla.

La clase deberá disponer de un mecanismo que permita obtener la potencia consumida por el conjunto de bombillas que estén encendidas en un determinado instante.

Ejercicio n.42Temas: 7Dificultad: 5Registrado: 2003-11-22

Cree una clase 'AlarmaDeTemperatura' cuyos objetos activen un objeto 'Timbre' cuando la temperatura llegue a un cierto valor. Para probar la alarma cree un objeto 'Sensor' que utilice la clase 'AlarmaDeTemperatura' y simule variaciones de temperatura y cambios en la temperatura de alarma. La clase 'Timbre' mostrará un mensaje por pantalla cuando se active y otro cuando se desactive.

Ejercicio n.43Temas: 7Dificultad: 5Registrado: 2003-11-22

Se quiere definir una interfaz que especifique cómo tienen que ser todas aquellas clases que generen números aleatorios. Esta interfaz debe especificar un método 'double getAleatorio()' que deberá estar definido en todas aquellas clases que implementen esta interfaz. Haciendo uso de esta

gonzalezpe Página 21 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

interfaz, defina una clase 'NumeroAleatorio01' que devuelve números aleatorios entre 0 y 1 y una clase 'NumeroAleatorioCte' que devuelva siempre el mismo número.

Nota: el método 'random()' de la clase 'Math' de Java devuelve un número (double) mayor o igual que 0 y menor que 1.

Ejercicio n.44Temas: 7Dificultad: 5Registrado: 2003-11-22

Escriba una clase en la que se defina un método que escriba por pantalla el tipo de argumento que se le pasa como parámetro. Ejemplo: si se le pasa un carácter (char), que imprima algo del tipo "Soy un carácter". Esta clase deberá ser capaz de detectar todos los tipos primitivos de Java.

Ejercicio n.45Temas: 7Dificultad: 5Registrado: 2003-11-22

Defina una jerarquía de clases que permita almacenar datos sobre los planetas y satélites que forman parte del sistema solar (junto con el sol). Algunos atributos que puede ser interesante recoger son: la masa del cuerpo, su diámetro medio, el período de rotación sobre el propio eje, período de traslación alrededor del cuerpo que orbitan, distancia media a ese cuerpo, excentricidad de la órbita, ...

Defina un método, que dado un objeto del sistema solar (planeta o satelite), imprima toda la información de que se dispone sobre el mismo.

Ejercicio n.46Temas: 7Dificultad: 5Registrado: 2003-11-22

Defina una jerarquía de clases que permita representar los distintos tipos de viviendas que ofrece una inmobiliaria a sus clientes: estudios, pisos, áticos, dúplex y chalets. Algunos datos a tener en cuenta pueden ser: la localización del inmueble, el número de metros cuadrados que tiene, la planta del edificio en la que se sitúa, la superficie de la terraza, el número de plantas, el número de dormitorios y baños, el estado en el que se encuentra (para entrar a vivir, para reformar), si dispone de ascensor, portero, piscina, garaje, zonas comunes, dimensiones del jardín o parcela, etc.

Ejercicio n.10Temas: 7 8Dificultad: 6Registrado: 2002-09

Escriba una clase llamada Inventario, para almacenar referencias a todos los animales existentes en una tienda de mascotas.

Esta clase debe cumplir con los siguientes requisitos: Los animales deben almacenarse en un array privado de tamaño 100 dentro de la clase

Inventario.

gonzalezpe Página 22 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

El tamaño del array debe definirse como una constante en la clase. En la tienda existirán diferentes tipos de animales: perros, gatos, conejos, etc. La clase debe tener un constructor que inicialice el inventario a vacío, y métodos para

insertar y eliminar animales del inventario. Debe existir otro método que imprima el nombre, la raza y la edad de todos los animales de

la tienda. Cree también un método que devuelva un Enumeration con todos los perros de la tienda. Utilice siempre que pueda interfaces y polimorfismo para realizar este ejercicio.

Estructuras Indexadas de datos

Ejercicio n.7Temas: 8Dificultad: 3Registrado: 2002-09

Escriba un método que transponga matrices cuadradas de números reales.

// tabla[f][c] <-> tabla[c][f]

void transponer(double[][] tabla) throws Exception;

Ejercicio n.10Temas: 7 8Dificultad: 6Registrado: 2002-09

Escriba una clase llamada Inventario, para almacenar referencias a todos los animales existentes en una tienda de mascotas.

Esta clase debe cumplir con los siguientes requisitos: Los animales deben almacenarse en un array privado de tamaño 100 dentro de la clase

Inventario. El tamaño del array debe definirse como una constante en la clase. En la tienda existirán diferentes tipos de animales: perros, gatos, conejos, etc. La clase debe tener un constructor que inicialice el inventario a vacío, y métodos para

insertar y eliminar animales del inventario. Debe existir otro método que imprima el nombre, la raza y la edad de todos los animales de

la tienda. Cree también un método que devuelva un Enumeration con todos los perros de la tienda. Utilice siempre que pueda interfaces y polimorfismo para realizar este ejercicio.

Ejercicio n.8Temas: 8Dificultad: 8

gonzalezpe Página 23 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

Registrado: 2002-09

Escriba un método que ordene arrays de números enteros de menor a mayor valor. En la posición cero quedará el valor más pequeño despues de la ordenación.

void ordena(int[] tabla);

Estructuras Dinámicas de Datos

Ejercicio n.47Temas: 9Dificultad: 5Registrado: 2004-01-07

Defina un método 'copia' para la clase 'ListaEncadenada' del tema 9 de teoría que permita construir una lista con tantos nodos como la original, y en la cual, la información se guarda en el mismo orden que en la lista original.

Ejercicio n.48Temas: 9Dificultad: 5Registrado: 2004-01-07

Defina un método 'invertir' para la clase 'ListaEncadenada' del tema 9 de teoría que devuelva una lista de modo que el nodo que estaba en primer lugar en la lista original se sitúe al final en la nueva lista y viceversa y así sucesivamente. Haga esto sin crear nuevos nodos.

Sugerencia: ir formando una nueva lista en la que se incorpora el primer nodo de la vieja, borrándolo de la vieja, y continuar hasta terminar con la lista original

Ejercicio n.49Temas: 9Dificultad: 8Registrado: 2004-01-07

Durante la rebelión judía contra Roma (unos 70 años a. de C.), 40 judíos quedaron atrapados en una cueva. Prefiriendo la muerte antes que la captura, decidieron formar un círculo, matando cada 3 de los que quedaran, hasta que quedara uno solo, quien se suicidaría. Conocemos esta historia por Flavio Josefo (historiador famoso), quien siendo el último de los sobrevivientes del círculo, no se suicidó. El problema consiste en averiguar en qué posición debió colocarse Flavio Josefo dentro del círculo para quedar como último sobreviviente.

En general, supondremos un círculo de 'n' personas, numeradas de 1 a n, y se irá eliminando la 'm'-ésima comenzando desde la primera, recorriendo los círculos cada vez más pequeños siempre en el

gonzalezpe Página 24 12/04/2023

Fundamentos de Programación Semestre Otoño IPP

mismo sentido. Por ejemplo, si n=5 y m=3, se eliminarían sucesivamente las numeradas (de acuerdo con la numeración inicial) 3; 1; 5; 2, sobreviviendo 4.

Implementar una solución a este problema usando una lista circular; es decir, el último nodo se encadena al primero, y donde cada nodo representa a una persona. La eliminación se traduce en la eliminación de un nodo de la lista circular. La solución deberá imprimir la permutación de Flavio Josefo.

Ejercicio n.2Temas: LDificultad: 5Registrado: 2002-09

El siguiente programa traduce los grados Celsius almacenados en la variable c a grados Fahrenhait. Modifique este programa para que el valor de la variable c se introduzca por teclado.

class Grados {

public static void main (String[] args) {

// Grados Celsius

double c = 10.4;

// Grados Fahrenhait

double f = 9.0 / 5.0 * c + 32;

System.out.println (c+" grados Celsius son "+f+" grados Fahrenhait.");

}

}

gonzalezpe Página 25 12/04/2023