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

Desde Ánima queremos ayudar a una fundación sin fines de lucro que promueve el aprendizaje de las personas que menos tienen.

Por eso, toda donación recibida durante 2024 será donada a la Fundación Fonbec, que podés investigar acá.

Compartiendo la nota, dando like o comentando abajo, nos ayudás un montón. También aportás 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.