Reconocimiento de notas musicales en Java

Más ejercicios resueltos

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

El problema de reconocimiento de notas musicales es un ejercicio básico que permite entender el funcionamiento de las condicionales simples. 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 simple empleando el lenguaje de programación Java. Si deseas conocer con más detalle el enunciado del ejercicio reconocimiento de notas musicales, haz click en el siguiente enlace.

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

A continuación presentamos la solución al problema del reconocimiento de la nota musical La usando una selectiva simple en Java. Se analizará la solución considerando los siguientes puntos:

  • Lectura de datos
  • Control de flujo

Lectura de datos​

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 \texttt{frecuencia}, la cual ha sido definida como real de doble precisión (\texttt{double}).

Para poder hacer la lectura, necesitamos instanciar un objeto de la clase \texttt{Scanner}. Dicho objeto lo hemos identificado con el nombre de \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.

El mensaje descriptivo que le indica al usuario qué es lo que se espera de la operación de lectura, lo imprimimos a través del método \texttt{printf}. Este es un método del objeto de salida estándar \texttt{System.out}.

package reconocimiento_notal_la;

import java.util.Scanner;

public class Reconocimiento_notal_LA {

    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        System.out.printf("Ingrese frecuencia (Hz): ");
        double frecuencia = reader.nextDouble();
    }
}
 

Control de flujo​

Para el control de flujo usaremos una selectiva simple. Hay que tener en cuenta que en Java, el operador de comparación de igualdad es \texttt{==}. Es muy común, sobre todos para los que están iniciando en el mundo de la programación en Java, confundirlo con el operador de asignación \texttt{=}. Java emitirá un mensaje de error en caso intente usar el operador de asignación en la condición de la selectiva simple.

package reconocimiento_notal_la;

import java.util.Scanner;

public class Reconocimiento_notal_LA {

    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        System.out.printf("Ingrese frecuencia (Hz): ");
        double frecuencia = reader.nextDouble();

        if (frecuencia == 440) {
            System.out.printf("A");
        }
    }
}
 

Conclusión

Hemos presentado en este artículo, una propuesta de solución al problema de reconocimiento de la nota La en su primera octava usando Java. Se ha utilizado para el control de flujo la estructura selectiva simple. 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 *