Búsqueda de Google

Google

miércoles, 28 de mayo de 2008

Ejercicios Adicionales de Objetos en Java

Ejercicio 1
Implemente una clase en Java que permita realizar operaciones sobre dos números. La misma debe tener dos atributos que son los números enteros con los que se va a operar. Debe disponer de un único constructor que reciba ambos atributos y cinco métodos, que son las operaciones que la misma brindará. Dichos métodos serán:

• obtenerSuma()
• obtenerResta()
• obtenerProducto()
• obtenerCociente()
• obtenerModulo()

Nota: Siempre consideramos el primero en relación al segundo, es decir, la resta será el primero menos el segundo y análogamente para los demás métodos. Para realizar el cociente y el módulo debemos chequear que el segundo número sea diferente a cero.

Implemente luego una clase de prueba que genere dos valores aleatorios, los muestre y luego ejecute las cinco operaciones, desplegando sus resultados.

Ejercicio 2
Implemente una clase en Java que permita realizar promedios. La misma debe tener dos métodos, uno para ingresar un nuevo número, llamado agregarNumero(int numero) y otro para obtener el promedio hasta el momento, llamado obtenerPromedio(). Determine qué atributos son necesarios para implementarla.

Implemente luego una clase de prueba que permita ingrese algunos valores y muestre el promedio. Utilice valores inventados por usted.

Ejercicio 3
Implemente una clase en Java que permita evaluar un polinomio de grado 3 en una abscisa determinada.
Para ello necesitará guardar como atributos los tres coeficientes y disponer de un método calcularValor(double x) que evalúe el polinomio en dicho valor de x.
Para realizar las potencias podrá utilizar la función Math.pow(base, exponente).

Implemente luego una clase de prueba que cree un polinomio de 3er grado y lo evalúe en algunos puntos inventados por usted.

lunes, 26 de mayo de 2008

Complemento para Ejercicios de Clases

Ejercicio 1

Compila y ejecuta la clase PruebaProductos presentada en la sección "Invocación de Métodos en Java". No olvides incluir en ella todas las invocaciones a procedimientos y funciones realizadas. Recuerda que debes guardar la clase en la misma carpeta que la clase Producto.

Ejercicio 2

Escribe una clase llamada PruebaRectángulos que posea solamente al método main. La clase debe guardarse en la misma carpeta que la clase Rectángulo que hiciste anteriormente. Dicho método main debe realizar las siguientes acciones. Luego debes compilar y ejecutar esta clase.
1. Construir dos rectángulos con dimensiones 20x5 y 8x15 respectivamente.
2. Calcular el perímetro y el área de cada uno de ellos, desplegando los resultados en la pantalla.
3. Determinar si los rectángulos son horizontales o verticales, emitiendo un mensaje apropiado por pantalla en cada caso.
4. Dibujar ambos rectángulos en la pantalla según sus representaciones con asteriscos.

Ejercicio 3

Modifica el método main de la clase PruebaRectángulos a efectos de probar invocaciones a los
restantes métodos de la clase Rectángulo.

Ejercicios de Clases

Ejercicio 1

Compila la clase Producto presentada en las secciones "Métodos Constructores", "Funciones"
y "Procedimientos". No olvides incluir en ella todos los métodos constructores, funciones y
procedimientos definidos para la clase a lo largo de los diferentes ejemplos. Por ahora no
vamos a ejecutar la clase porque la misma no cuenta con un método main. Más adelante en el
teórico haremos un método main que permita crear diferentes objetos de la Clase Producto e
invocar (llamar) a sus diferentes métodos.

Ejercicio 2

Escribe una clase llamada Rectángulo que posea dos atributos de tipo entero llamados largo y
ancho. Por ahora sólo vamos a compilar la clase, pero no la vamos a ejecutar porque no le
vamos a poner ningún método main. La clase debe poseer los siguientes métodos:
Un método constructor que no reciba ningún parámetro y que inicialice las dimensiones del
rectángulo (largo y ancho) con dos enteros positivos por defecto.

Otro método constructor que reciba el ancho y el largo como parámetros. Se debe chequear
que ambos valores sean positivos antes de asignárselos a los atributos correspondientes. En
caso contrario, se asignarán valores por defecto.

Métodos selectores y modificadores para la clase. Los métodos modificadores deben chequear
que las nuevas dimensiones efectivamente sean enteros positivos.

Una función que calcule y retorne el área del rectángulo. Esta función no necesita recibir
ningún parámetro.

Otra función que calcule y retorne el perímetro del rectángulo. Esta función no necesita recibir
ningún parámetro.

Otra función que determine si el rectángulo es horizontal o vertical. Decimos que el rectángulo
es horizontal si el valor del largo es mayor que el del ancho. En caso contrario, decimos que el
rectángulo es vertical. Esta función no necesita recibir ningún parámetro.

Un procedimiento que despliegue en pantalla los valores de las dimensiones (largo y ancho)
del rectángulo. Este procedimiento no necesita recibir ningún parámetro.

Otro procedimiento que dibuje en pantalla el rectángulo mediante asteriscos, utilizando tantas
columnas como valor tenga el largo y tantas filas como valor tenga el ancho. Por ejemplo, si el
ancho valiera 3 y el largo valiera 12, se debería desplegar así:

************
************
************

Este procedimiento no necesita recibir ningún parámetro.

sábado, 17 de mayo de 2008

Información para la Tarea

Esto no lo mencionamos, pero lo van a necesitar para resolver la tarea.
Para comparar Strings, no utilicen los operadores != ni ==.
Para comparar por igual, háganlo de la siguiente forma:

if (texto.equals("lo que quiero comparar"))

Mientras que para comparar por distinto, hacen lo mismo pero negándolo:

if (!texto.equals("lo que quiero comparar"))

Esto lo necesitan para comparar lo digitado con el asterisco.

miércoles, 14 de mayo de 2008

Tarea Obligatoria

Escriba un programa compuesto de una clase de nombre AdivinarNumero que contenga sólo al método main. Su objetivo será permitir que el usuario averigüe un número entero generado aleatoriamente y comprendido entre [0,100] que se almacenará, dentro del código del programa, en una variable int a la que se llamará numero.

El programa pedirá un número por teclado e informará de si el número que introduce el usuario es mayor o menor que el que se trata de averiguar. Si no se acierta a la primera, no importa porque tiene que dejar introducir números de forma ininterrumpida. Cuando el usuario acierte, se mostrará un mensaje de felicitación y el número de intentos empleados. A tener en cuenta:

  • Si el usuario introduce un numero no comprendido entre [0,100], el programa mostrará un mensaje informativo.
  • Si el usuario teclea asterisco, el programa deberá finalizar.
  • La generación aleatoria del número a adivinar se utilizará Math.random().
  • Para pedir el número por teclado basarse en el ejemplo que se detalla a continuación.
    Descargar código fuente.
Descargar código fuente de la tarea.
/*
* Para que el programa compile correctamente debe importarse el paquete java.io,
* ya que en él se encuentran las clases que se emplean para la captura de
* datos desde teclado. Esto se consigue con esta línea, que debe escribirse
* antes que cualquier declaración de clase. El asterisco indica que se tiene
* acceso a todas las clases de primer nivel del paquete.
* Los paquetes se estudiarán más adelante.
*/
import java.io.*;

public class SumaDatosTeclado{
public static void main(String args[])throws IOException{

//Creación del flujo para leer datos
InputStreamReader isr = new InputStreamReader(System.in);

//Creación del filtro para optimizar la lectura de datos
BufferedReader br = new BufferedReader(isr);
System.out.print("Teclea el primer numero: ");

//Lectura de datos mediante el método readLine()
String texto1 = br.readLine();

//Conversión a int de la String anterior para poder sumar
int num1 = Integer.parseInt(texto1);

System.out.print("Teclea el segundo numero: ");
String texto2 = br.readLine();
int num2 = Integer.parseInt(texto2);

//Sumar los dos enteros
System.out.println("Suma de " + num1 + " y " + num2 + " es " + (num1+num2));
}
}

lunes, 12 de mayo de 2008

Ejercicios Extras de Estructura de Control.

Más ejercicios para practicar las bases del lenguaje.
Descargar letra.

Próximamente se publicará una Tarea Obligatoria.

lunes, 5 de mayo de 2008

Entrega de Ejercicios

De la segunda serie de ejercicios de la entrada anterior, entregar del número 2 al 12 al este correo.
Los ejercicios 13, 14 y 15 los discutiremos en clase.

Dado que no hubo un gran porcentaje de entregas, asumo que existieron dificultades en la resolución de esta serie de ejercicios. Vamos a plantearlos en clase y discutir su resolución.

domingo, 4 de mayo de 2008

Ejercicios - Estructuras de Control

Ejercicios

1. Implementar en computadora los ejemplos de Selección Simple y Selección Múltiple
presentados en los capítulos correspondientes.

2. Implementar un programa en Java que genere dos valores enteros al azar y despliegue
en la salida estándar el mayor de ellos.

3. Implementar un programa en Java que genere tres valores enteros al azar y despliegue
en la salida estándar el mayor de ellos.

4. Implementar un programa en Java que genere dos valores enteros al azar llamados a y
b. El programa debe desplegar los valores de a y b y luego calcular y desplegar en
pantalla el cociente y el resto de dividir a entre b. Antes de hacer los cálculos, se debe
chequear que b sea distinto de cero. En caso contrario, se debe desplegar un mensaje
de error indicando que no es posible resolver el problema.

5. Dada la siguiente tabla:





















Nota Calificación
0-3 Reprobado
4-7 Aceptable
8-11 Bueno
12 Excelente

Dada una nota, se desea emitir por pantalla la calificación correspondiente. ¿Puede
resolverse de dos maneras distintas, con estructuras de control diferentes? En caso
afirmativo, implemente dos programas en Java que lo resuelvan. La nota será generada al
azar y emitida por pantalla antes de la calificación correspondiente.

6. Considere el estado de una botella:

















CapacidadEstado
0 - 0.3Vacía
0.4 - 0.7Media
0.8 - 1Llena

Dada una capacidad, se desea emitir por pantalla el estado correspondiente.
¿Puede resolverse de dos maneras distintas, con estructuras de control diferentes?
En caso afirmativo, implemente dos programas en Java que lo resuelvan. La capacidad
de la botella será generada al azar y emitida por pantalla antes del estado
correspondiente.

7. Un restaurante que sólo trabaja viernes, sábados y domingos sirve el siguiente menú
de comidas dependiendo del día y hora de la semana, según la siguiente tabla:





























Día y HoraComida
Viernes Antes de 16 hsPollo
Viernes Luego de 16 hsEnsaladas
Sábado Antes de 12 hsCarnes
Sábado Entre 12 y 20 hsMinutas
Sábado Luego de 20 hsCopetín
Domingo Todo el díaPastas

Se desea implementar un programa en Java que, dados un día y una hora, emita un
mensaje indicando cuál es el menú que corresponde servir. El día de la semana será
representado mediante un valor entero (entre 1 y 7) generado al azar. La hora será
representada mediante un valor real (entre 0 y 24) generado al azar. En caso de que el día de la semana no corresponda a ninguno de los presentados en la tabla, se debe
emitir un mensaje que diga "Gracias, vuelva otro día". Antes de emitir la comida
correspondiente, se debe previamente desplegar el día y hora generados.

Más Ejercicios sobre Estructuras de Control
Resolver los siguientes ejercicios eligiendo cuidadosamente las estructuras de control a utilizar en cada caso.

Ejercicio 1
Implementar en computadora los ejemplos de Iteración con control previo, Iteración con
control posterior, e Iteración por subrangos presentados en los capítulos correspondientes.

Ejercicio 2
Se desea Implementar un programa en Java que despliegue en pantalla todos los números
enteros entre 1 y 50.
a. Resolverlo desplegando los enteros en orden creciente
b. Resolverlo desplegando los enteros en orden decreciente

Ejercicio 3
Implementar un programa en Java que genere un entero n al azar entre 1 y 9. El programa
debe desplegar en pantalla todos los enteros múltiplos de n que existan entre 1 y 50.
Ejemplo: Para n = 8, el programa debe desplegar: 8,16,24,32,40,48.

Ejercicio 4
Se desea Implementar un programa en Java que genere una secuencia de enteros al azar entre
0 y 10. El programa debe desplegar en pantalla todos aquellos enteros generados que sean
pares. Además, el programa debe ir contando la cantidad de enteros pares que se vayan
generando.
No se sabe cuántos elementos va a tener la secuencia, pero se debe detener el procesamiento
descrito cuando se genere el número cero. Al finalizar, se debe desplegar en pantalla la
cantidad total de números pares generados.
a. Resolverlo considerando al cero como un número par.
b. Resolverlo no considerando al cero como un número par.
Ejemplo:
Si la secuencia generada es: 2, 8, 7, 1, 4, 5, 8, 9, 0, entonces:
En el primer caso se debe desplegar 2, 8, 4, 8, 0 y contar 5 valores.
En el segundo caso se debe desplegar 2, 8, 4, 8 y contar 4 valores.

Ejercicio 5
Implementar un programa en Java que genere un entero m al azar. El programa debe
desplegar en pantalla el entero generado, y posteriormente debe calcular y desplegar la suma
de todos los enteros existentes entre 1 y m.
Ejemplo:
Para m = 7, la suma solicitada es 28 (1+2+3+4+5+6+7)

Ejercicio 6
Implementar un programa en Java que genere tres números enteros al azar (llamados día,
mes, año). Estos tres números enteros representarán una fecha. El entero día debe ser
generado entre 1 y 31. El entero mes debe ser generado entre 1 y 12. El entero año debe ser
generado entre 1900 y 2100. Una vez generados los tres valores, el programa debe desplegar
los valores generados y determinar si representan una fecha válida o no. Para este ejercicio se
consideran bisiestos los años que son múltiplos de cuatro.
Ejemplos:
día = 10, mes = 10, año = 1977 es una fecha válida.
día = 30, mes = 2, año = 2004 no es una fecha válida.

Ejercicio 7
Implementar un programa en Java que genere dos enteros a y b al azar. a entre 1 y 10, b entre
20 y 50. El programa debe desplegar en pantalla los valores generados y además debe
desplegar todos los múltiplos de a que existan entre 1 y b.
Ejemplo:
Para a = 4, b = 37, se debe desplegar: 4, 8, 12, 16, 20, 24, 28, 32, 36

Ejercicio 8
Implementar un programa en Java que genere una secuencia de enteros al azar entre 0 y 10. El
programa debe ir desplegando cada entero en pantalla junto con un mensaje que diga si es par
o no lo es. Además, el programa debe ir sumando todos los valores impares que se vayan
generando. El procesamiento debe detenerse en el momento en que la suma supere el valor
25. Al finalizar, el programa debe desplegar en pantalla la suma calculada.
Ejemplo:
Una posible ejecución sería la siguiente:
7 – impar
2 – par
4 – par
3 – impar
9 – impar
6 – par
1 – impar
3 – impar
8 – par
5 – impar
El procesamiento se detuvo en el 5 porque en ese instante la suma de todos los impares
generados superó a 25 (7+3+9+1+3+5=28)

Ejercicio 9
Implementar un programa en Java que genere dos enteros a y b al azar, ambos entre 1 y 30. El
programa debe desplegar los valores generados y posteriormente debe calcular la potencia de
ab.
Ejemplo:
Para a = 5, b = 3, el programa debe calcular 125.

Ejercicio 10
Implementar un programa en Java que genere al azar una secuencia de letras minúsculas,
desplegándolas en pantalla. El programa debe contar la cantidad total de letras vocales
generadas. El procesamiento debe finalizar cuando se genere la letra z o cuando se hayan
generado 10 letras, lo que ocurra primero. Al final, se debe desplegar la cantidad total de
letras vocales generadas. Para generar una letra minúscula al azar, hacer:
letra = (char) ((Math.random() * 26) + 'a');
Ejemplos:
Si la secuencia generada es: f, e, t, a, s, e, m, z entonces se debe desplegar un 3. Nótese que
en este caso la secuencia finalizó porque se generó la letra z en el octavo lugar de la secuencia.
Si la secuencia generada es: h, t, a, u, n, o, p, e, i, w entonces se debe desplegar un 5. Nótese
que en este caso la secuencia finalizó porque generaron 10 letras antes de que se generase la
z.

Ejercicio 11
Implementar un programa en Java que genere al azar dos enteros m (entre 1 y 10) y n (entre 1
y 30). El programa debe desplegar en pantalla los valores generados y posteriormente debe
dibujar un rectángulo de m filas por n columnas formado por asteriscos.
Ejemplo:
Para m = 4 y n = 15, el programa debe dibujar el siguiente rectángulo:
* * * * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * * * *

Ejercicio 12
Implementar un programa en Java que genere al azar un entero n (entre 1 y 20). El programa
debe desplegar en pantalla el entero generado y posteriormente debe dibujar un triángulo de
n columnas formado por asteriscos, según se muestra en el ejemplo.
Ejemplo:
Para n = 10, el programa debe dibujar el siguiente triángulo:
* * * * * * * * * *
* * * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*

Ejercicio 13
Indica cuáles serán los valores desplegados por el siguiente programa al ejecutarlo. Resuelve
este ejercicio sin utilizar computadora, sino ejecutándolo manualmente y anotando los
resultados. Luego verifica los mismos utilizando la computadora. ¿Encontraste algún problema
durante la ejecución?
Descargar código fuente.

Ejercicio 14
Indica cuáles serán los valores desplegados por el siguiente programa al ejecutarlo. Resuelve
este ejercicio sin utilizar computadora, sino ejecutándolo manualmente y anotando los
resultados. Luego verifica los mismos utilizando la computadora. ¿Encontraste algún problema
durante la ejecución?
Descargar código fuente.

Ejercicio 15
Indica cuáles serán los valores desplegados por el siguiente programa al ejecutarlo. Resuelve
este ejercicio sin utilizar computadora, sino ejecutándolo manualmente y anotando los
resultados. Luego verifica los mismos utilizando la computadora. ¿Encontraste algún problema
durante la ejecución?
Descargar código fuente.