Variables en C# [Parte 2 – Constantes]

A diferencia de las variables, las constantes son valores fijos que nunca van a cambiar dentro del programa. Por ejemplo, puedes almacenar un mensaje que se va a repetir en todo tu programa, o puedes almacenar un número especial que será usado durante varias partes de tu código. Por lo tanto, el recomendable usar constantes para evitar el uso del «hardcode» (código en duro), que es una mala práctica en el mundo del desarrollo. ¿Qué es el código en duro? Es cuando dejas valores fijos dentro de tu programa pensando que estos no van a cambiar, pero al final no es así, y tienes que hacer cambios en tu programa que podías haberte ahorrado si programaras mejor. No hay mucho más que decir acerca de las constantes, así que vayamos directamente a los ejercicios.

Ejercicio 1. Crea un programa que calcule el área de un círculo a partir del radio que ingrese el usuario.

Primero debemos tener claro cual es la fórmula para calcular el área de un círculo, si no lo sabes, puedes googlearlo. Para calcular el área de un círculo debemos multiplicar el valor de PI por el radio elevado al cuadrado. Si recuerdan un poco las clases que tuvieron de matemáticas en la escuela, sabrán que el valor de PI es un número fijo que no va a cambiar, por lo tanto, lo declararemos como una constante.

Abrimos la terminal de windows, navegamos a nuestra carpeta de proyectos con los comandos cd y creamos un nuevo proyecto de aplicación de consola.

D:\Clase13\ClaseCSharp>dotnet new console -o Constantes1

Ahora abrimos Visual Studio Code, luego abrimos la carpeta de nuestro proyecto «Constantes1» y comenzamos a editar el archivo «Program.cs».

using System;

namespace Constantes1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Declaramos una constante de tipo double para almacenar el valor de PI.
            // Para declarar una constante solo basta con agregar la palabra "const" al inicio.
            // Como es una constante, necesitamos asignarle un valor que no cambiará en todo el programa.
            const double valuePI = 3.14159265;
            // Declaramos un variable double para almacenar el valor del radio que ingresará el usuario.
            double radio;

            // Solicitamos el valor de radio al usuario.
            Console.WriteLine("Ingrese el radio del círculo: ");
            radio = double.Parse(Console.ReadLine());

            // Ahora realizaremos el cálculo.
            // Para ello vamos a usar la clase Math que nos ofrece C#.
            double result;
            result = valuePI * Math.Pow(radio, 2);

            // Ahora mostramos el resultado.
            Console.WriteLine("El área del círculo es: " + result);
        }
    }
}

Ahora correremos nuestro programa para ver si funciona correctamente.

Funciona correctamente. Si te salió igual que a mí, ¡Felicidades! Con eso está clarísimo el concepto de constante, ¿no? Por si acaso, resolveremos otro ejercicio para estar seguro de que lo han comprendido.

Ejercicio 2. Crea un programa que calcule la tabla de multiplicar del 1 al 10 de un número entero ingresado por el usuario.

Muy bien, para este ejercicio vamos a crear un proyecto nuevo, que a estas alturas ya debes saber como se hace, y empezaremos declarando nuestras variables.

// Primero vamos a declarar nuestras constantes.
// 10 constantes de tipo numérico entero
// Y le asignamos el valro correspondiente
const int numberOne = 1;
const int numberThree = 3;
const int numberFour = 4;
const int numberFive = 5;
const int numberSix = 6;
const int numberSeven = 7;
const int numberEight = 8;
const int numberNine = 9;
const int numberTen = 10;

// Ahora declaramos el número que el usuario va a ingresar.
int numberValue;

// Por último, declaramos los resultado de la multiplicación.
int productOne;
int productTwo;
int productThree;
int productFour;
int productFive;
int productSix;
int productSeven;
int productEight;
int productNine;
int productTen;

Una vez declaradas todas nuestras variables, vamos a comenzar a solicitar el número al usuario, y luego lo vamos a multiplicar por todos nuestros números del 1 al 10, y lo vamos a almacenar en las variables «product». Muchos me preguntarán… ¿es necesario crear las constantes del 1 al 10? Para este ejercicio puede ser un poco trabajoso, pero si no lo haces, estarás cayendo en las malas prácticas de usar el «hard code» o código en duro, código que no está almacenado en ninguna variable. Te recomiendo que te acostumbres a no hacerlo, es una mala práctica que debe morir, ya en algún futuro me lo agradecerás (y tus colegas también).

// Solicitamos el número al usuario.
Console.WriteLine("Ingrese el número para diseñar la tabla de multiplicar:");
// No te olvides que lo debes convertir a número.
numberValue = int.Parse(Console.ReadLine());

// Iniciamos la multiplicación.
// Para ello vamos a usar el * (asterisco)
productOne = numberOne * numberValue;
productTwo = numberTwo * numberValue;
productThree = numberThree * numberValue;
productFour = numberFour * numberValue;
productFive = numberFive * numberValue;
productSix = numberSix * numberValue;
productSeven = numberSeven * numberValue;
productEight = numberEight * numberValue;
productNine = numberNine * numberValue;
productTen = numberTen * numberValue;

Por último, vamos a imprimir el resultado para que el usuario pueda visualizarlo.

// Imprimimos el resultado.
Console.WriteLine("La tabla de multiplicar del número " + numberValue + " es:");
Console.WriteLine(numberOne + " x " + numberValue + " = " + productOne);
Console.WriteLine(numberTwo + " x " + numberValue + " = " + productTwo);
Console.WriteLine(numberThree + " x " + numberValue + " = " + productThree);
Console.WriteLine(numberFour + " x " + numberValue + " = " + productFour);
Console.WriteLine(numberFive + " x " + numberValue + " = " + productFive);
Console.WriteLine(numberSix + " x " + numberValue + " = " + productSix);
Console.WriteLine(numberSeven + " x " + numberValue + " = " + productSeven);
Console.WriteLine(numberEight + " x " + numberValue + " = " + productEight);
Console.WriteLine(numberNine + " x " + numberValue + " = " + productNine);
Console.WriteLine(numberTen + " x " + numberValue + " = " + productTen);

Probablemente esta última parte del código se vea un poco confuso, pero lo único que estoy haciendo es concatenar el texto para que se vea bonito y el usuario lo pueda entender. ¡Recuerda que él va a usar el programa y como desarrolladores lo debemos hacer lo más práctico posible!

Ahora vamos a ejecutar el programa para ver si funciona. ¡Qué nervios!

Si te sale como a mí, ¡felicidades! Ahora te dejaré todo el código completo para que lo puedas analizar.

using System;

namespace Constantes2
{
    class Program
    {
        static void Main(string[] args)
        {
            // Primero vamos a declarar nuestras constantes.
            // 10 constantes de tipo numérico entero
            // Y le asignamos el valro correspondiente
            const int numberOne = 1;
            const int numberTwo = 2;
            const int numberThree = 3;
            const int numberFour = 4;
            const int numberFive = 5;
            const int numberSix = 6;
            const int numberSeven = 7;
            const int numberEight = 8;
            const int numberNine = 9;
            const int numberTen = 10;

            // Ahora declaramos el número que el usuario va a ingresar.
            int numberValue;

            // Por último, declaramos los resultado de la multiplicación.
            int productOne;
            int productTwo;
            int productThree;
            int productFour;
            int productFive;
            int productSix;
            int productSeven;
            int productEight;
            int productNine;
            int productTen;

            // Solicitamos el número al usuario.
            Console.WriteLine("Ingrese el número para diseñar la tabla de multiplicar:");
            // No te olvides que lo debes convertir a número.
            numberValue = int.Parse(Console.ReadLine());

            // Iniciamos la multiplicación.
            // Para ello vamos a usar el * (asterisco)
            productOne = numberOne * numberValue;
            productTwo = numberTwo * numberValue;
            productThree = numberThree * numberValue;
            productFour = numberFour * numberValue;
            productFive = numberFive * numberValue;
            productSix = numberSix * numberValue;
            productSeven = numberSeven * numberValue;
            productEight = numberEight * numberValue;
            productNine = numberNine * numberValue;
            productTen = numberTen * numberValue;

            // Imprimimos el resultado.
            Console.WriteLine("La tabla de multiplicar del número " + numberValue + " es:");
            Console.WriteLine(numberOne + " x " + numberValue + " = " + productOne);
            Console.WriteLine(numberTwo + " x " + numberValue + " = " + productTwo);
            Console.WriteLine(numberThree + " x " + numberValue + " = " + productThree);
            Console.WriteLine(numberFour + " x " + numberValue + " = " + productFour);
            Console.WriteLine(numberFive + " x " + numberValue + " = " + productFive);
            Console.WriteLine(numberSix + " x " + numberValue + " = " + productSix);
            Console.WriteLine(numberSeven + " x " + numberValue + " = " + productSeven);
            Console.WriteLine(numberEight + " x " + numberValue + " = " + productEight);
            Console.WriteLine(numberNine + " x " + numberValue + " = " + productNine);
            Console.WriteLine(numberTen + " x " + numberValue + " = " + productTen);
        }
    }
}

Ahora te toca a ti, te dejaré un par de ejercicios para ver si lo puedes resolver.

Ejercicio 3. Crea un programa que te imprima la tabla de multiplicar (del 11 al 20) de un número entero ingresado por el usuario, y debe imprimir la siguiente oración por cada número multiplicado: El número x (donde x es el número ingresado por el usuario) multiplicado por y (la constante del 11 al 20) es igual a z (donde z es el resultado). Recuerda usar constantes.

Ejercicio 4. Crea un programa que calcule el impuesto de venta al precio de un producto ingresado por el usuario. Para calcular el impuesto debes multiplicar el precio por el porcentaje de impuesto, este será de 0.18 (o 18%). La oración que debes imprimir será la siguiente: El impuesto que debes agregar al precio es de: x (donde x es el impuesto calculado).


Antes de continuar, quiero explicar un poco mejor dos conceptos que he ido nombrando hasta ahora: Clases y métodos.

Clases

Las clases nos sirven para encapsular un conjunto de código (métodos) los cuales reutilizaremos dentro de nuestro programa. Por ejemplo, hasta ahora hemos usado dos clases, la clase «Console», y la clase «Math».

La clase Console nos permite leer y escribir (y muchas otras cosas más) dentro de la consola (o de la terminal de windows, como quieras llamarlo), a través de sus métodos ReadLine y WriteLine.

La clase Math me permite realizar cálculos matemáticos con ayuda de todos los métodos que tiene. Podemos calcular la potencia de un número, la raíz cuadrada, calcular un número aleatorio, el valor absoluto, etc.

Métodos

Los métodos son funcionalidades que pertenecen a una clase y que podemos reutilizar en cualquier parte de nuestro código. C# nos ofrece varios métodos predeterminados para que podamos reutilizarlos, y nosotros también podemos crear nuestros propios métodos para lo mismo. Los métodos pueden ser de varios tipos dependiendo de la funcionalidad que tengan, pero eso ya lo veremos más adelante. Por último, los métodos reciben parámetros (es decir, datos que necesitarán para que la funcionalidad funcione) y te devuelven información si es necesario. Por ejemplo, si creamos un método «Suma» que realiza la suma de dos número, este método necesitará que le envíes (a través de sus parámetros) los dos número que quieres que sume, y al final, te devolverá el resultado.

Si aún no queda claro, profundizaremos los dos conceptos más adelante, ¡no te preocupes!


ENUM

Los tipo de variables ENUM (o enumerables) son conjuntos de constantes que podemos utilizar a lo largo de nuestro código. Con este tipo de dato, podemos estructurar nuestras constantes en grupos, y serán indexados automáticamente por el sistema, aunque también podemos ponerle un índice personalizado. La única limitante, es que no podemos poner cualquier texto, ya que estos deben estar especificados en formato de variables. Vamos a ver como se define tipo de dato enum.

using System;

namespace Constantes3
{
    // Declaramos nuestro enum Fruits
    public enum Fruits
    {
        Apple,
        Banana,
        Coconut,
        Strawberry,
        Kiwi
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Mi fruta favorita es: " + Fruits.Apple); 
        }
    }
}

El problema con los enum, es que el texto que se imprime al final saldrá en inglés, como se muestra en la imagen, para que funcione correctamente tendríamos que realizar una conversión adicional, una que traduzca Apple a Manzana.


Espero que el contenido de esta clase te haya servido de mucho, y si aún tienes dudas, o algo no está claro, déjanos tu comentario para tenerlo en cuenta y explayarnos un poco más (o corregir) en caso sea necesario.

Nos sería de mucha ayuda que compartas el contenido si te ha gustado y te invitamos a seguirnos en nuestras redes sociales de Clase13, estamos en Facebook, Instagram y Twitter como @Clase13lat, de esa manera te enterarás de las últimas novedades de manera rápida. También te invito a seguirme en Instagram como @rodolfopenia donde estaré subiendo contenido adicional para complementar la clase.