Validación de rango del espectro de luz visible en Java

Más ejercicios resueltos

Si deseas revisar más ejercicios resueltos, haz click en el siguiente botón. 

El problema de validación del rango del espectro de luz visible es un ejercicio básico que permite entender el funcionamiento de las condicionales dobles. En este artículo analizamos con bastante detalle este ejercicio poniendo énfasis en la lógica de programación y en la estructura algorítmica selectiva doble empleando como herramienta el lenguaje de programación Java. Si deseas conocer con más detalle el enunciado del ejercicio validación de rango del espectro de luz visible, haz click en el siguiente enlace.

El análisis de este ejercicio se encuentra sintetizado en el vídeo «Selectiva Doble en Java» en nuestro canal de YouTube. Te invitamos a que lo visites.

A continuación presentamos la solución al problema de la validación del rango del espectro de luz visible usando una selectiva doble en Java. Se analizará la solución considerando los siguientes puntos:

  • Lectura de datos
  • Control de flujo cuando la condición es verdadera
  • Control de flujo cuando la condición es falsa

Lectura de datos

La primera tarea a realizar, es la lectura de los datos de entrada. La lectura de datos en Java la realizaremos con la clase  \texttt{Scanner}. Para usar esta clase, debemos importarla previamente del paquete respectivo, en este caso se encuentra en \texttt{java.util.Scanner}. La variable que será leída la hemos identificado con el nombre \texttt{lon\_onda}, la cual ha sido definida con el tipo de dato \texttt{double}.

Para poder hacer la lectura, necesitamos instanciar un objeto de la clase \texttt{Scanner}. Dicho objeto lo hemos identificado con el nombre \texttt{reader}. Para instanciar al objeto \texttt{reader} usamos el operador \texttt{new}.

Para leer la variable, usamos uno de los tantos métodos que posee la clase \texttt{Scanner}, en este caso en particular usaremos el método \texttt{nextDouble}. Como su nombre lo indica, \texttt{nextDouble} escanerá de la entrada el valor ingresado por el usuario y lo retornará como real.

Antes de hacer la lectura, se emite un mensaje descriptivo al usuario para que le permite saber cierto detalle de la operación de lectura, como por ejemplo, la unidad de medida de la longitud de onda.  Dicho mensaje lo realizamos a través del método \texttt{printf}. Este es un método del objeto de salida \texttt{System.out}. Todo lo que se encuentra entre las comillas dobles se imprime.

package espectro_visible;

import java.util.Scanner;

public class Espectro_Visible {

    public static void main(String[] args) {
        double lon_onda;

        Scanner reader = new Scanner(System.in);
        System.out.printf("Ingrese longitud de onda (nm): ");
        lon_onda = reader.nextDouble();
    }
}
 

Control de flujo cuando la condición es verdadera

Luego de realizar la lectura de la longitud de onda, se debe reconocer si dicha longitud de onda pertenece al rango visible. Para que dicha onda de luz pertenezca al rango de luz visible, la longitud de onda se debe encontrar entre 380 y 780 nanómetros. ¿Cómo podemos determinar si la longitud de onda se encuentra en dicho rango? Pues usando una selectiva doble.  En la condición de la selección doble se deben usar dos expresiones lógicas unidas por el operador de conjunción.

La condición sería \texttt{lon\_onda>=380 \&\& lon\_onda<=780} como se puede apreciar. Es importante recordar que los operadores relacionales en Java son binarios, es decir admiten únicamente dos operandos, por lo que para gestionar un rango de valores, debe hacerse uso de conectores lógicos. Si la condición se cumple, se imprime el mensaje \texttt{Dentro del espectro visible}.

package espectro_visible;

import java.util.Scanner;

public class Espectro_Visible {

    public static void main(String[] args) {
        double lon_onda;

        Scanner reader = new Scanner(System.in);
        System.out.printf("Ingrese longitud de onda (nm): ");
        lon_onda = reader.nextDouble();

        if (lon_onda >= 380 && lon_onda <= 780) {
            System.out.printf("La longitud de onde se encuentra dentro del espectro visible");
        } 
    }
} 

Control de flujo cuando la condición es falsa

Hasta el momento nuestra solución es capaz de detectar o reconocer una onda de luz en el espectro visible, pero no nos dice nada cuando no está dentro del rango. Como queremos que se emita un mensaje cuando se está fuera del espectro visible, debe incluir el comando \texttt{else} para que el flujo se dirija hacia otro conjunto de instrucciones, en caso la condición sea falsa. En nuestra solución, cuando la condición se hace falsa, se imprime el mensaje \texttt{Fuera del espectro visible}.

package espectro_visible;

import java.util.Scanner;

public class Espectro_Visible {

    public static void main(String[] args) {
        double lon_onda;

        Scanner reader = new Scanner(System.in);
        System.out.printf("Ingrese longitud de onda (nm): ");
        lon_onda = reader.nextDouble();

        if (lon_onda >= 380 && lon_onda <= 780) {
            System.out.printf("La longitud de onde se encuentra dentro del espectro visible");
        } else {
            System.out.printf("La longitud de onde no se encuentra dentro del espectro visible");
        }
    }
} 

Conclusión

Hemos presentado en este artículo, una propuesta de solución al problema de validación del rango del espectro de luz visible usando Java. Se ha utilizado para el control de flujo la estructura selectiva doble. Podrá descargar la solución propuesta en el repositorio GitHub de iterando++ a través del siguiente enlace

Hemos preparado otros artículos adicionales en donde describimos al detalle la implementación de este problema PSeInt y en otros lenguajes de programación. Te invitamos a leer los siguientes artículos de iterando++

Si te interesa profundizar en Java, el mejor libro que hay es Effective Java de Joshua Bloch. Uno de los libros favoritos de los que se inician en Java es Java: Learn Java in One Day and Learn It Well de  Jamie Chan.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *