Validación de rango del espectro de luz visible en ANSI C

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 ANSI C. 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 C» 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 C. 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 ANSI C la realizaremos con la función \texttt{scanf}. Para poder usar esta función, se debe incluir el archivo de cabecera \texttt{stdio.h} (Standard Input Output).  \texttt{scanf} permite leer una o más variables, para ello debemos declarar antes a dichas variables. En este ejercicio, la variable que será leída la hemos identificado con el nombre \texttt{lon\_onda}, la cual ha sido definida el tipo de dato \texttt{double}

Para leer la variable,  \texttt{scanf} necesita de dos cosas, primero el tipo de dato de la variable y segundo la dirección en la memoria en donde se encuentra dicha variable. Para indicarle el tipo de dato a la función \texttt{scanf} usamos lo que se conoce como  «cadena de formato», en nuestro ejemplo es \texttt{\%lf} que indica que deseamos leer un número \texttt{double}, un número real de doble precisión. Para indicarle la dirección de memoria en donde se encuentra la variable, usamos el operador de dirección \texttt{\&}

Antes de hacer la lectura, se emite un mensaje descriptivo al usuario para que le permita 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 de la instrucción \texttt{printf}. Todo lo que se encuentra entre las comillas dobles se imprime.

#include <stdio.h>

int main() {
    double lon_onda;
    printf("Ingrese longitud de onda (nm): ");
    scanf("%lf", &lon_onda);
} 

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 ANSI C 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}.

#include <stdio.h>

int main() {
    double lon_onda;
    printf("Ingrese longitud de onda (nm): ");
    scanf("%lf", &lon_onda);
    
    if (lon_onda>=380 && lon_onda <=780)
        printf("La longitud de onda se encuentra dentro del espectro visible");
    return 0;
} 

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}.

#include <stdio.h>

int main() {
    double lon_onda;
    printf("Ingrese longitud de onda (nm): ");
    scanf("%lf", &lon_onda);
    
    if (lon_onda>=380 && lon_onda  <=780)
        printf("La longitud de onda se encuentra dentro del espectro visible");
    else
        printf("La longitud de onda no se encuentra dentro del espectro visible");
    return 0;
}
 

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 ANSI C. 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 quieres profundizar en el lenguaje ANSI C, no hay mejor libro que C Programming Language de Brian Kernighan  y Dennis Ritchie. Es un libro clásico escrito por el creador del lenguaje C. Uno de los libros favoritos de los que inician en ANSI C es  C Programming Absolute Beginner’s Guide de Greg Perry y Dean Miller.

Deja una respuesta

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