Reconocimiento de notas musicales en ANSI C

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 como el lenguaje de programación ANSI C. 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 ANSI C» 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 C. Se analizará la solución considerando los siguientes puntos:

  • Lectura de datos
  • Control de flujo

Lectura de datos​

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 dicha variable. 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 leer la variable, \texttt{scanf} necesita de dos cosas, primero el tipo de datos 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 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{\&}

Es muy común que al leer un dato, antes de hacer la lectura, se emita un mensaje descriptivo, indicándole al usuario qué es lo que se espera de la operación de lectura. Dicho mensaje lo realizamos a través de la función \texttt{printf}. Todo lo que se encuentra entre las comillas dobles se imprime.

#include <stdio.h>

int main() {
    double frecuencia;
    printf("Ingrese frecuencia (Hz): ");
    scanf("%lf", &frecuencia);

    return 0;
} 

Control de flujo​

Para el control de flujo usaremos una selectiva simple. Hay que tener en cuenta que en ANSI C, 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 ANSI C, confundirlo con el operador de asignación \texttt{=}. El problema que ocurre con ANSI C es que no emite mensaje de error en esta situación.

#include <stdio.h>

int main() {
    double frecuencia;
    printf("Ingrese frecuencia (Hz): ");
    scanf("%lf", &frecuencia);

    if (frecuencia == 440)
        printf("A");

    return 0;
} 

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