Este es la séptimo post del curso. Podés ver en esta categoría todos los anteriores.

Un programa debería ser capaz de repetir instrucciones, hasta que nosotros digamos basta. Y para ello sirven los bucles indefinidos. Estos sirven para repetir una acción hasta que nosotros digamos “basta”. O hagamos un corte de control.

Volviendo a nuestro programa del capítulo 6, vemos que el programa se ejecuta sólo una vez, y luego hay que volverlo a correr para que funcione nuevamente. Molesto, no?

Vamos a añadir entonces la cláusula while, que nos permite repetir una acción mientras una expresión sea verdadera. Podríamos, entonces, agregar la opción 5, que significa “salir”. Lo hacemos cambiando la línea que tiene las opciones, de esta manera:

            Console.WriteLine("Ingresá tu opción según corresponda: \n\n1) Sumar \n2) Restar\n3) Multiplicar\n4) Dividir\n5) Salir");

Como dijimos que la expresión debe ser verdadera, diríamos entonces que la aplicación sigue calculando mientras que la opción sea distinta de 5. Para ello, vamos a hacer algunas modificaciones. Primero, vamos a dividir la línea declarativa de la variable bytOpcion, igualando a bytOpcion a cero para que tenga un valor al principio, en dos, separando la parte declarativa de la asignación por teclado, quedando así:

byte bytOpcion = 0; 
            
            bytOpcion = Convert.ToByte(Console.ReadLine());

Igualar una variable a un valor se llama “inicializarlas”, y en este caso es necesario porque en la comprobación debe tener un valor (no puede ser nulo).

Hacemos lo mismo con las variables numéricas (sin inicializarlas), y ponemos la parte declarativa después de bytOpcion, quedando entonces:

byte bytOpcion = 0; 
double dblPrimero;
double dblSegundo;

A esto lo vamos a mover al principio de nuestro método main, es decir, inmediatamente después de la primera apertura las llaves después de esa palabra. Esto es para que las variables se declaren sólo una vez y no se vuelvan a declarar cada vez que corramos el código (que daría error).

¡Suscribite al blog!

Ahora, después de esas tres variables, vamos a escribir lo siguiente:

            while (bytOpcion <> 5)
            {
            
            }

Lo que quiere decir esto, simplemente, es que todo lo que esté entre las llaves va a funcionar siempre que bytOpcion sea distinto de 5. Y qué vamos a hacer siempre? Repetir todo el código. Así que ponemos lo que nos quedó de la parte funcional del código dentro de las llaves, quedando esto:

using System;

namespace Calculadora
{
    internal class Program
    {
        static void Main(string[] args)
        {
            byte bytOpcion = 0; 
            double dblPrimero;
            double dblSegundo;

            while (bytOpcion != 5)
            {
                Console.WriteLine("Ingrese el primer número:");
                dblPrimero = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("Ingrese el segundo número:");
                dblSegundo = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("Ingresá tu opción según corresponda: \n\n1) Sumar \n2) Restar\n3) Multiplicar\n4) Dividir\n5) Salir");
                bytOpcion = Convert.ToByte(Console.ReadLine());

                switch (bytOpcion)
                {
                    case 1:
                        Console.WriteLine(dblPrimero + dblSegundo);
                        break;
                    case 2:
                        Console.WriteLine(dblPrimero - dblSegundo);
                        break;
                    case 3:
                        Console.WriteLine(dblPrimero * dblSegundo);
                        break;
                    case 4:
                        Console.WriteLine(dblPrimero / dblSegundo);
                        break;
                    default:
                        Console.WriteLine("Opción inválida");
                        break;
                }
            }
        }
    }
}

Podríamos agregar un case 5 con meramente un break para que no muestre opción inválida.

Y listo! Tu calculadora va a repetir siempre el código dentro de la parte de while, hasta que elijas 5 como operación. Eso si, te habrás dado cuenta que te pide siempre que ingreses los números a operar, sin importar si querés salir. Esto se soluciona fácil haciendo un if… Que lo vamos a resolver en nuestro próxima nota, porque entran otras complicaciones a las condiciones.

(O también podemos resolverlo ya mismo si pasamos a pedir los números dentro del switch, pero sería repetir código… y no me va).

¿No pensás que lo que hacemos está bueno? Podés hacer un aporte por Cafecito o PayPal que no te duela por única vez, para que, si la nota te gustó, nos lo hagas saber.

Si no podés colaborar económicamente, compartiendo la nota, dando like o comentando abajo, nos ayudás un montón. También aportás a nuestro crecimiento suscribiéndote a nuestro canal de YouTube.


Avatar photo

Martín Longo

Director de Ánimadata y Business Intelligence Engineer. Quemadísimo, escribo acá mis opiniones.