Búsqueda de Google

Google

domingo, 28 de septiembre de 2008

Solución Prueba 2008

Estimados

Las pruebas no las corregí aún, pero les mando la solución para que la vayan viendo.

http://www.fileclick.eu/858/prueba2008/

Saludos!

sábado, 20 de septiembre de 2008

Ejemplo Completo

Pueden bajar aquí un ejemplo de acceso a datos completo.
Se trata del último ejercicio planteado en el curso, en el cuál debíamos implementar las clases Auto y Dueño, crear una base de datos y establecer el acceso para la misma. También le agregué unas ventanas para probarlo, en la que muestro el pasaje de datos de una ventana a otra.
Implementé una separación de capas en diferentes paquetes.
En el archivo que descargan van a encontrar la base de datos (mdb) y la carpeta de proyecto de NetBeans. Deben registrar un origen de datos con nombre pruebadb que apunte a la base de datos

jueves, 18 de septiembre de 2008

Pruebas de Prog. con Acceso a Datos

Aquí pongo dos documentos pensando en la prueba final de la materia.
  1. Ejercicios de repaso. Son varios ejercicios que tienen como cometido repasar los temas de los dos primeros PDFs.
  2. Prueba Octubre 2007. Prueba tomada para fin de curso del año pasado.
Hoy estaremos completando lo correspondiente a Acceso a Datos. El martes 23 haremos clase de consultas.

martes, 29 de julio de 2008

Programación con Acceso a Datos

Estimados

Estamos retomando las clases. No he tenido tiempo de armar algo más prolijo para la materia en sí, pero próximamente lo tendremos.

De todas maneras, les estoy haciendo llegar por medio de éste link el material en formato PDF.

Luego armaremos un blog separado para ésta nueva materia.

Suerte!

lunes, 7 de julio de 2008

Solución de la Prueba

Bajar solución de la prueba planteada en Junio de 2008.

lunes, 16 de junio de 2008

Pruebas Anteriores

Pongo a su disposición algunas pruebas anteriores que me han enviado.

Prueba 1

Prueba 2


Prueba 3

miércoles, 11 de junio de 2008

Ejercicios de Objetos

Ejercicio 1
Escribir la salida a pantalla emitida por el siguiente programa sin ejecutarlo en la computadora.
Se recomienda ir anotando en un papel los valores que van tomando las variables durante la
ejecución. Posteriormente, verificar el resultado usando la computadora.
Descargar archivo.

Ejercicio 2
Se desea programar una clase que permita representar una colección acotada de valores
enteros. Para almacenar los valores de la colección, la clase utilizará como único atributo un
arreglo de acuerdo con la siguiente declaración:

public class ColeccionEnteros
{
private int [] arreglo;
...
}

El método constructor de la clase deberá recibir como parámetro el tamaño que deberá tener
el arreglo. Dentro del método, se deberá crear el arreglo con esa cantidad de celdas y
posteriormente se deberán cargar las mismas con valores generados al azar.
Además del método constructor, la clase deberá proveer los siguientes métodos:

  1. desplegarColeccion ( ). Este método deberá desplegar en pantalla todos los valores almacenados en el arreglo.
  2. existeValor (int valor). Este método deberá determinar si el valor recibido como parámetro forma parte del arreglo o no.
  3. maximoValor ( ). Este método deberá devolver el máximo valor almacenado en el arreglo.
  4. desplegarPosicionesMultiplo (int num). Este método deberá desplegar en pantalla todos los valores del arreglo almacenados en celdas cuyo índice sea múltiplo de num.
  5. promedioValores ( ). Este método deberá calcular el promedio de todos los valores almacenados en el arreglo.
  6. invertir ( ). Este método deberá invertir los valores almacenados en el arreglo. Es decir, el valor de la primer celda deberá intercambiarse con el valor de la última celda. El valor de la segunda celda deberá intercambiarse con el valor de la penúltima celda, y así sucesivamente.
  7. duplicarCeldasMultiplo (int valor). Este método deberá duplicar el valor de cada celda del arreglo que contenga un elemento que sea múltiplo del valor recibido como parámetro.
  8. hayRepetidos ( ). Este método deberá determinar si el arreglo posee al menos un valor repetido en más de una celda o no.
Observaciones:
Elija cuidadosamente las estructuras de control a utilizar en cada método. Recuerde que debe
elegir las que sean más apropiadas en cada caso.
Al implementar cada método, determine si corresponde implementarlo como una función o
como un procedimiento. Para ello, tenga en cuenta que, a no ser que la letra lo diga
explícitamente, no debe asumir que el método solicita desplegar valores en pantalla.

Ejercicio 3
Haga una clase llamada PruebaColeccion que permita probar los métodos del ejercicio
anterior. Dicha clase deberá tener solamente un método main, el cual deberá realizar las
siguientes acciones:

  • Crear un objeto de la clase ColeccionEnteros, pasándole como tamaño de su arreglo un valor generado al azar no menor a 5.
  • Desplegar los valores almacenados en la colección.
  • Determinar si el valor 2 forma parte o no de la colección, emitiendo en pantalla un mensaje apropiado.
  • Desplegar en pantalla el máximo valor almacenado en la colección.
  • Desplegar en pantalla aquellos valores de la colección que estén almacenados en posiciones que sean múltiplos de 3.
  • Desplegar en pantalla el promedio de todos los valores almacenados en la colección.
  • Invertir los valores de la colección, y posteriormente desplegarlos en la pantalla luego de invertidos.
  • Duplicar los valores de la colección que sean múltiplos de 5, y posteriormente desplegar nuevamente en pantalla todos los valores de la colección.
  • Determinar si la colección tiene o no al menos un valor repetido, emitiendo en pantalla un mensaje apropiado.

domingo, 1 de junio de 2008

Ejercicios de Strings

Ejercicio 1
Escribir, compilar y ejecutar una clase llamada Persona con los siguientes atributos: nombre,
apellido, edad.
Implementar los métodos constructores, selectores y modificadores para la clase.
Implementar una función llamada toString que devuelva un mensaje en forma de String
conteniendo los datos de la persona.
Implementar un procedimiento llamado printPersona que despliegue en pantalla los datos de
la persona. Este procedimiento debe invocar a la función anterior.
Implementar una función llamada añoNacimiento que reciba como parámetro el año actual y
calcule el año en el cual nació la persona en base a la edad de la misma.
Implementar una función llamada esMasJoven que determine si la persona sobre la cual se
aplica la función es más joven que otra persona recibida como parámetro.

Ejercicio 2
Escribir, compilar y ejecutar una clase llamada PruebaPersona que solamente tenga un método
main, el cual debe realizar las siguientes acciones:
Crear dos personas distintas.
Desplegar en pantalla los datos de cada una de ellas.
Determinar cuál de las dos personas es más joven, y desplegar en pantalla su nombre y su año
de nacimiento.

Ejercicio 3
Escribir la salida a pantalla emitida por el siguiente programa sin ejecutarlo en la computadora.
Se recomienda ir anotando en un papel los valores que van tomando las variables durante la
ejecución. Posteriormente, verificar el resultado usando la computadora.

Descargar código fuente.

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.

domingo, 27 de abril de 2008

Estructuras de Control en Java



















EstructuraEn Java es...
Selección Simpleif
Selección Múltipleswitch
Iteración con control previo (Mientras)while
Iteración con control posterior (Repetir)do while
Iteración por sub rangos (Para Cada)for

Selección Simple
if (condición)
{
 instrucciones
}
else
{
 instrucciones
}


Selección Múltiple
switch (expresión)
{
 case valor1:
  instrucciones
  break;
 case valor2:
  instrucciones
  break;
 ...
 case valorN:
  instrucciones
  break;
 default:
  instrucciones
  break;
}


Iteración con Control Previo (mientras)
while (condición)
{
 instrucciones
}


Iteración con Control Posterior (repetir)
do
{
 instrucciones
}
while (condición);


Iteración por Sub Rangos (para cada)
for (inicialización; continuación; desplazamiento)
{
 instrucciones
}

miércoles, 23 de abril de 2008

Primeros Ejercicios en Java

Explica con tus propias palabras las diferencias entre un archivo con extensión .java y un archivo con extensión .class y describe cómo es el proceso de compilación y ejecución de un programa.

¿Cuál de los siguientes no es un comentario válido?
/** comentario */
/* comentario */
/* comentario
// comentario


Cambia la aplicación Hola Mundo presentada antes para que ahora despliegue en pantalla tu nombre y tu apellido.

Elimina alguna de las palabras reservadas del encabezado del método main y compila el programa. Trata de analizar el mensaje de error desplegado y entender su significado.



¿Cuáles de estos Identificadores son válidos?
  • int
  • unEntero
  • temperatura Maxima
  • un_int
  • puntaje-minimo
  • puntaje_minimo
  • void

Declarar las siguientes variables:
  • Un entero con identificador cantidadGoles.
  • Un carácter con identificador primeraLetra.
  • Un entero corto de valor 2 e identificador diasPorSemana.
  • Un real con identificador masaCritica y valor 250.35.
  • Un real con identificador volumen y valor 1.5

Escribir un programa en Java que realice las siguientes acciones:
  • Declare una constante entera llamada TOTAL con valor 20.
  • Declare dos variables enteras llamadas num1 y num2.
  • Asigne a num1 el doble del valor de TOTAL.
  • Asigne a num2 la suma de num1 + TOTAL.
  • Despliegue en la salida estándar todos los valores usados.




¿Cuál es el resultado de las siguientes operaciones?
100 + 50
100 - 50
100 * 5
100 / 50
10 % 5
10 % 4
100++
100--
100 <>
100 >= 50
100 >= 100
50 <= 10
50 != 100
50 != 50
100 == 100
true && true
true && false
true && true && false
true || true
true || false
!false
true && true && (true && false)
!false || (true && (false || !false))
(5 <>
(2 == 2) && ((2 != 2) || false)

¿Cuál es el valor final de las variables al ser ejecutado todo el trozo de código? Realiza este ejercicio sin usar la computadora, sino ejecutando manualmente cada instrucción y anotando los resultados de las mismas.

int x;
int y = 1;
boolean b;
boolean c = true;
boolean a = false;
x = 0;
x ++;
y = x + y;
b = x <>
x = 5 * y;
c = (!b);
x = y % 3;
y = x;

Para comprobar el resultado del ejercicio anterior, escribe un programa que ejecute toda la secuencia de instrucciones anteriores y posteriormente despliegue en pantalla los valores de todas las variables utilizadas. No olvides que todas las instrucciones deben ser escritas dentro del método main.

Escribe un programa en Java que realice las siguientes acciones.
  • Declare dos variables enteras.
  • Genere un entero al azar y lo asigne a una de ellas.
  • Asigne a la otra variable el resto de dividir el primer número entre 5.
  • Sume los resultados de ambas cuentas y lo asigne nuevamente a la primera variable.
  • Emita por pantalla los valores finales de las variables.

Nota: Para generar un entero al azar entre 0 y 100 puedes usar una operación predefinida por Java denominada random de la siguiente manera:

int numero = (int) (Math.random() * 100);
En este curso, los programas que escribamos trabajarán mayoritariamente con valores generados al azar, para simular los datos que un posible usuario pudiera ingresarle al programa.

Escribe pequeños programas en Java que den solución a los siguientes problemas. Determina con claridad cuándo conviene usar variables y cuándo constantes simbólicas.

  • Generar al azar el precio de un artículo, calcularle el IVA, sumárselo y desplegar un mensaje emitiendo el precio con el IVA correspondiente.
  • Generar al azar el radio de un círculo (número real entre 0 y 50) y calcular su área mediante la clásica fórmula (PI * radio2). Luego desplegar el área por pantalla.
  • Generar al azar dos números enteros y guardarlos en dos variables llamadas alfa y beta. Luego, intercambia el contenido de las mismas (o sea, el valor de alfa debe pasar a beta y viceversa). Debes desplegar por pantalla los valores de las variables antes y luego del intercambio.

lunes, 21 de abril de 2008

Ejercicios Adicionales

Ejercicios adicionales de Estructuras de Control.
Click aquí para descargarlos.

domingo, 20 de abril de 2008

Primera Aplicación en Java

Pasos para programar una aplicación
  1. Crear un archivo fuente.
  2. Compilar el archivo para generar el bytecode.
  3. Ejecutar el programa contenido en el bytecode.
Archivo Fuente

Programa sencillo que despliega un mensaje "Hola Mundo" por pantalla (también conocida como salida estándar).

/* Programa que despliega el mensaje "Hola Mundo" en la salida estándar. */
public class HolaMundo
{
   public static void main(String[] args)
   {
      //aquí va el mensaje
      System.out.println("Hola Mundo");
   }
}

Compilación

Para compilar el archivo fuente y generar el bytecode, desde la línea de comando debemos invocar al compilador de java (javac.exe).

C:\jdk\bin> javac HolaMundo.java

Nosotros trabajaremos con un IDE que nos permitirá invocar el compilador desde el mismo editor.

Ejecución

Para ejecutar el bytecode generado por el compilador, debemos invocar la máquina virtual de java (JVM) que es el programa java.exe

C:\jdk\bin> java HolaMundo

lunes, 14 de abril de 2008

Ejercicios de Variables, Expresiones e Instrucciones

  1. Con la lista pasada en una clase, determinar cuántos alumnos asistieron. Se conoce la cantidad de alumnos que hay en la lista y junto a cada nombre está marcado si asistió o no.
  2. Dado un conjunto de ítems a facturar con el precio de cada uno, determinar cuál es el precio de la factura (IVA incluido). No se sabe la cantidad total de ítems a facturar, pero se sabe que por lo menos hay un ítem para facturar.
  3. Dado un cuadro de fútbol y una cola de hinchas en la boletería principal de la tribuna Olímpica del Estadio Centenario, determinar cuántos hinchas del cuadro hay en la misma. Podría suceder que la cola de hinchas se encuentre vacía.
  4. Dados el puntaje del obligatorio y de la prueba de una materia de la carrera de un alumno cualquiera, determinar el puntaje final. Si no aprueba, el puntaje final será 0. Los puntajes de entrada son valores entre 0 y 100. Los puntajes mínimos de aprobación para la prueba y el obligatorio son 60 puntos. El puntaje final se calcula como el 75% de los puntos de la prueba y el 25 % de los puntos del obligatorio.
  5. Se tiene una urna cerrada con los votos de una elección. Los votos en la urna pueden ser para los partidos A ó B. Se quiere contar la cantidad de votos que obtuvo cada uno de los partidos. Como la elección no era obligatoria, no tenemos idea del número total de votos que puede haber.
  6. Dada una clase, determinar cuántos hinchas hay de Defensor, cuántos de Danubio y cuántos del resto de los equipos. Se conoce la cantidad de alumnos que hay en la clase.
  7. Se tiene una calle con 350 puertas. Sabemos que en cada una de ellas hay una sola persona. Se quiere escribir un mensaje que diga si en esa calle hay por lo menos 10 personas extranjeras o no.
  8. En una ferretería se tiene una bolsa con paquetes de tornillos. No sabemos si la bolsa está vacía o no. Sabemos que los paquetes de tornillos (en caso de haber alguno) no están vacíos, pero no sabemos cuántos tornillos tiene cada uno. Se quiere contar la cantidad de paquetes y la cantidad total de tornillos que hay.
  9. Un grupo de 20 amigos ha hecho una colecta para comprar un regalo. Cada uno de ellos puso lo que pudo, algunos pusieron sólo un billete y otros pusieron varios, pero no sabemos quién puso qué. Todos los billetes recaudados se encuentran dentro de un sobre. Los amigos han decidido que el total recaudado entre los billetes mayores a 50 pesos se destine al regalo y el resto se destine a comprar comida y bebida para la fiesta. Se quiere saber cuánto dinero hay para comprar el regalo y cuánto hay para comprar comida y bebida.
  10. Se tiene una lista con las notas obtenidas por un grupo de 100 alumnos. Cada nota de la lista puede ser 1,2 ó 3. Se desea saber cuál de ellas fue la nota más obtenida.

martes, 8 de abril de 2008

Más Ejercicios sobre Algoritmos

  1. Pasar la lista en una clase, indicando la asistencia o no de cada alumno. Para pasar la
    lista, se tiene una lista conteniendo el nombre de cada alumno inscripto. Además, se
    conoce la cantidad de alumnos inscriptos.
  2. Dada una planilla conteniendo los tiempos de cada corredor en una de las etapas de la
    Vuelta Ciclista, determinar el tiempo ganador. Se entiende que el ganador es el que
    tuvo el tiempo menor. Se sabe la cantidad de tiempos que hay en la planilla.
  3. Se tiene una bolsa con cartas que van a Montevideo o Interior. Se quiere apilar en la
    estantería A las que van a Montevideo y en la estantería B las que van al interior. No se
    sabe cuántas cartas puede haber en la bolsa.
  4. En un supermercado se tienen 20 paquetes cerrados con 35 tazas iguales cada uno. Se
    tienen 700 etiquetas con el precio de las tazas (todas valen lo mismo). Se quiere pegar
    a cada taza una etiqueta con su precio y guardarlas en una gran bolsa.
  5. Se tiene una lista con 300 nombres, los cuales no están ordenados alfabéticamente.
    Además, tenemos un papel con un nombre concreto de una persona. Se desea escribir
    un mensaje que diga si en esa lista está el nombre de dicha persona o no.
  6. Un restaurante trabaja solamente los días viernes, sábados y domingos. Los días
    viernes sirven pollo hasta las 15 horas y ensaladas luego de las 15 horas. Los sábados
    sirven carnes hasta las 16 horas y empanadas luego de las 16 horas. Los domingos
    sirven pastas todo el día. Escribir un algoritmo que, dados un día y una hora, diga cuál
    es el menú que corresponde servir.

Ejercicios

  1. Repartir todo el contenido de un termo de café en vasos, llenando cada uno de ellos. Se asume que el termo no está vacío. Los vasos que hay podrían alcanzar para todo el café que hay o a lo mejor se pueden terminar quedando aún café en el termo.
  2. Escuchar todos los mensajes de un contestador telefónico. El contestador cuenta con un botón que permite ir escuchando los mensajes de a uno. Podría suceder que no existan mensajes registrados en el contestador.
  3. Hallar el total de alumnos inscriptos en cursos del IUAS. El mismo está formado por 30 grupos de alumnos, pero la cantidad de alumnos inscriptos en cada uno de ellos puede variar de un grupo a otro.

Material para imprimir

Si alguien quiere imprimirse el material del curso, les dejo una versión que es más cómoda que las diapositivas en formato html.

Parte 1
Parte 2
Parte 3

Bienvenidos!

Buenas y bienvenidos!
La idea de éste blog es colgar materiales del curso, tanto ejemplos como ejercicios. También textos o artículos que considere interesantes.
Fundamentalmente pretendo poner aquí ejemplos que resulten útiles para el desarrollo de las clases, de forma que puedan acceder a él sin que perdamos tiempo copiándolos.
Como siempre, se aceptan comentarios y sugerencias.