Ayudanos contestando la siguiente encuesta acerca de Videojuegos!
Ir a la encuesta
>

Programación con If

Objetivo

Aprender a utilizar la sentencia if dentro de un programa, aprender a utilizar la clase JOptionPane, aprender a utilizar el JCheckBox.

Producto a Entregar

Se debe entregar un archivo comprimido que tenga la carpeta del programa en NetBeans y un archivo de texto con las respuestas a las preguntas que están indicadas en negritas.

Forma de Trabajo

Equipos

Tiempo estimado

1 hora

Forma de Entrega

Por Blackboard

Recomendaciones

  • Sigue las instrucciones de la actividad y ejercita la lectura crítica.
  • El if es una de las estructuras de control más importantes, por lo que es vital que la aprendas a utilizar bien.
  • Recuerda que la condición que va entre paréntesis en un if tiene que ser un valor booleano, no necesariamente una comparación.

 

Instrucciones

Paso 1:

Descarga el esqueleto de la aplicación que vamos a utilizar en esta sesión. El archivo está en formato zip, por lo que necesitas descomprimirlo en algún directorio (por ejemplo D:\projects). Abre NetBeans y selecciona la opción abrir proyecto , aparecerá un diálogo en el que puedes seleccionar varios archivos, busca la carpeta en la que descomprimiste los archivos (puedes saber si realmente es una carpeta de proyecto porque tendrá el siguiente símbolo: ). Selecciona la carpeta y presiona el botón abrir. Abre la clase MainFrame.java y aparecerá una ventana con la siguiente interfaz gráfica:

Paso 2:

Corre el programa y verifica la funcionalidad que tiene actualmente.

  • ¿Qué sucede cuando presiono un botón?
  • ¿Qué sucede cuando pongo números enteros en edad?
  • ¿Qué sucede cuando no pongo números en edad?
  • ¿Qué sucede cuando pongo números reales en edad?

Para poder entender este comportamiento es necesario analizar el siguietne código:

Recuerda que para poder convertir de un tipo de dato a otro necesitamos hacer un cast. Como el método getText() del JTextField siempre devuelve un String y lo que nosotros necesitamos es un número vamos a hacer un cast a int utilizando el método Integer.parseInt(). Es muy importante que la declaración de la variable age se encuentra fuera del try, ya que de esta manera nos aseguramos que el resto del código pueda utilizarla. También estamos viendo una sintaxis nueva para el manejo de errores, por el momento sólo debemos saber que en caso de que ocurra un error de formato (es decir, que el número no se pueda convertir a int) se va a ejecutar el código que se encuentra dentro del bloque catch. Más adelante veremos el manejo de errores con más detenimiento.

Paso 3:

Selecciona source en la parte superior del IDE, abajo de las pestañas con los nombres de las clases para ver el código de tu ventana. Dentro de los métodos que vamos a utilizar en este laboratorio hay un mensaje que dice que el método no ha sido implementado, una vez que implementes los métodos puedes quitar este mensaje.

Vamos a hacer una pausa para entender una clase que nos va a servir mucho durante este laboratorio. La clase JOptionPane tiene un método showMessageDialog() que nos permite mostrar un mensaje. El método recibe dos parámetros en su forma más sencilla, el primer parámetro es el componente padre, por el momento siempre vamos a utilizar this (que hace una referencia a la ventana actual) y el segundo parámetro es un String con el texto que queremos mostrar.

Ahora abre la ventana de ToDo (Window -> ToDo o presionando Ctrl + 6) donde podrás ver lo que hace falta codificar. Primero vamos a resolver el código que va a comentar sobre nuestra edad. Para hacer esto haz doble click sobre el ToDo correspondiente. Ahora agrega el siguiente código y vuelve a probar el programa.

  • ¿Qué sucede cuando introducimos 13 como edad?
  • ¿Qué sucede cuando introducimos 15 como edad?
  • ¿Qué sucede cuando introducimos 20 como edad?

Ahora vamos a ver una propiedad del if que nos va a servir mucho cuando queramos controlar un programa. Escribe el siguiente código:

  • ¿Qué sucede cuando introducimos 25 como edad?
  • ¿Qué sucede cuando introducimos 14 como edad?

Como este comportamiento no es lo que esperabamos vamos a probar un par de casos más, primero vamos a realizar la validación completa. Escribe el código que se ve a continuación:

Al correr el programa podemos ver que ya tiene el comportamiento que esperamos, pero hay una manera un poco más elegante de codificarlo. Recuerda en la presentación que vimos que puedes utilizar el else if para poner condiciones extras a un if y convertirlo en un if anidado. Ahora copia el siguiente código:

  • ¿Qué sucede cuando introducimos 25 como edad?
  • ¿Qué sucede cuando introducimos 14 como edad?

Lo que está sucediendo es que un if anidado únicamente revisa las condiciones hasta encontrar una que sea verdadera y después de eso no revisa todas las demás. En algunos programas (como este) ese es el comportamiento esperado, aunque en algunos otros es mejor utilizar varios if's. Regularmente se utiliza esta última manera de escribirlo porque es un poco más fácil de entender que poner las dobles condiciones, pero pueden utilizar la que prefieran. Ahora terminemos de codificar utilizando esta última sintaxis (si prefieres puedes utilizar varios if's).

Paso 4:

Ahora vamos a hacer el código que calcule el área de un círculo. En este caso la validación será muy sencilla ya que sólo debemos validar que el radio sea mayor que cero (ya que no existen distancias negativas). En caso de que el radio no sea mayor que cero vamos a mostrar un mensaje de error. Para hacer esto copia el siguiente código:

Fíjate en el método showMessageDialog() de la clase JOptionPane. Como puedes ver el primer parámetro es un this, pero después viene el siguiente String:

"El area del circulo es " + area

Lo que estamos haciendo aqui es concatenar un número a un String. Como el método showMessageDialog() debe recibir un String como segundo parámetro es necesario que a los números les concatenemos texto utilizando el operador +.

Agrega un else para mostrar un mensaje de error en caso de que el radio sea menor o igual a cero y prueba que tu código funcione de manera correcta.

Paso 5:

Ahora vamos a resolver la ecuación utilizando la fórmula general. Recuerda que la fórmula general es:

Aqui debemos realizar dos validaciones. El valor de a debe ser diferente de cero para evitar que la división indetermine el resultado y la raíz debe ser de un número mayor o igual a cero. Para hacer esto vamos a utilizar un and && y además vamos a utilizar una variable para ayudarnos a escribir menos y a hacer más claro el código. Escribe el siguiente código:

Como puedes ver estamos utilizando la variable root donde guardamos el valor de lo que se encuentra dentro de la raíz. Esto lo hacemos para que al comparar y al sacar la raíz no tengamos que volver a escribir la fórmula y sea más fácil de entender, además de que ya tener el valor guardado y no tener que calcularlo hace que sea un poco más rápido. En caso de que la raíz sea igual o mayor que cero y que a no sea cero vamos a obtener las raices positivas y negativas y mostrar el resultado.

Agrega un else para mostrar un mensaje de error en caso de que los datos no sean válidos. Dentro del else agrega un if para decirle al usuario cuál de los datos no fue válido o si los dos no lo fueron y prueba que tu código funcione de manera correcta.

Paso 6:

Por último vamos a utilizar un control nuevo llamado JCheckBox que podemos utilizar para hacer que nuestros programas sean más amigables. El JCheckBox tiene un método importantísimo que nos devuelve si está seleccionado o no. Este método nos va a permitir responder de maneras diferentes utilizando un if. El método se llama isSelected() y nos devuelve verdadero en caso de que sí esté seleccionado y falso en caso contrario.

Recuerda que la condición de un if debe ser cualquier cosa que evalúe a verdadero o falso y no es necesario que sea una comparación. Esto hace que podamos utilizar una variable boolean o el resultado de este método dentro de la condición directamente de la siguiente manera:

Prueba que tu código funcione de manera correcta.

Paso 7:

Comprime tu carpeta de trabajo y el archivo de texto con las respuestas a las preguntas en negritas y mándalos por Blackboard.

Ayudanos a mejorar este laboratorio:

¿Cuál es tu opinión del laboratorio?

(1 - buena; 5 - mala).

1       2       3       4       5
¿Cómo se puede mejorar?
¿Encontraste un error? ¿Cuál?

Ayudanos contestando la siguiente encuesta acerca de Videojuegos!
Ir a la encuesta