No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
0 Hrs
32 Min
59 Seg

Ciclo while

22/26
Recursos

Aportes 54

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

for, while, do-while

Grosso modo
for
Se utilizará cuando se conozca la cantidad de veces
que se va a repetir nuestro bloque de código.

while
Es conveniente utilizarlo cuando
la cantidad de veces a repetir el ciclo
dependa de un factor difícil de controlar
o que llegará en un momento inesperado.

do-while
Lo emplearemos para asegurar que
nuestro ciclo se ejecute al menos una vez
y que además las condiciones del problema
sean similares a las de los problemas en las que
se emplea while

Hasta el michu aprende con Platzi💚💚

  • FOR
    Un ciclo FOR y un ciclo DO_WHILE pueden funcionar de manera similar, dependiendo que es lo que debe realizar y la manera de usar los ciclos.
    Utilizando el programa del ejercicio pasado de la calculadora, que funciona por medio de if y else if, coloque la consulta al usuario del número de veces que desea realizar una operación matemática y en base a su respuesta, coloque un for que nos ayuda a realizar y repetir las operaciones deseadas por el usuario.
static void Main(string[] args)
        {
            Console.WriteLine("Bienvenido a la calculadora en consola");

            //Indicar el número de veces que desea realizar una operación matemática
            Console.WriteLine("¿Cuantas operaciones matemáticas desea realizar?");
            int numOp = int.Parse(Console.ReadLine());
            
            //Mientras la variable del "contador" sea menor o igual al número de veces que el usuario desea realizar operaciones "numOp", el ciclo for permitira realizar las operaciones.
            for (int contador = 1; contador <= numOp; contador++)
            {
                Console.WriteLine("------------------------");
                Console.WriteLine("OPERACIÓN #{0}", contador);
                Console.WriteLine("\nPrimero elige, ¿Qué tipo de operación quiere realizar?");
                Console.WriteLine("Estas son las opciones:");
                Console.WriteLine(" + (Suma) \n - (Resta) \n * (Multiplicación) \n / (División) \n % (Residuo) \n");
                Console.Write("Teclea el simbolo de la operación que quieres realizar: ");
                char opcion = char.Parse(Console.ReadLine());

                if (opcion == '+' || opcion == '-' || opcion == '*' || opcion == '/' || opcion == '%')
                {
                    Console.WriteLine($"({opcion}) Opción valida");
                    //return;
                }

                else
                {
                    Console.Write("Opción no valida");
                    return;
                }

                Console.Write("\nTeclee el primer valor (entero o decimal): ");
                double valor1 = double.Parse(Console.ReadLine());

                Console.Write("Teclee el segundo valor (entero o decimal): ");
                double valor2 = double.Parse(Console.ReadLine());

                double resultado = 0;

                if (opcion == '+')
                {
                    resultado = valor1 + valor2;
                }

                else if (opcion == '-')
                {
                    resultado = valor1 - valor2;
                }

                else if (opcion == '*')
                {
                    resultado = valor1 * valor2;
                }

                else if (opcion == '/')
                {
                    resultado = valor1 / valor2;
                }

                else if (opcion == '%')
                {
                    resultado = valor1 % valor2;
                }

                Console.WriteLine($"\nLa operación y resultado serian: \n {valor1} {opcion} {valor2} = {resultado} \n");
            }

            //Se indicara el número de operaciones realizadas y se terminara el programa.
            Console.WriteLine("Se realizaron las {0} operaciones.", numOp);
            Console.WriteLine("Fin del programa.");
        }

algo a tener en cuenta cuando programemos es siempre tener buenas practicas de programación, desde la codificación, reutilización de código, documentación, manejo de patrones de diseño, manejo de errores, etc.
Les comparto un post de patrones de diseño que esta en diferentes lenguajes de programación entre esos C# https://refactoring.guru/es/design-patterns

//POR DEFECTO
bool modoPatrulla = false;
bool modoAtaque = false;
bool modoPersecución = false;

//CICLO DO WHILE
do
{
    Console.WriteLine("No hay intrusos a la vista, 1 si ves alguno, 0 si no");

    int respuesta = int.Parse(Console.ReadLine());

    if (respuesta==1)
    {
        Console.WriteLine("¡INTRUSOS A LA VISTA! ¡PROCEDIENDO A ATACAR!");
        //CICLO FOR LIMITADO DE ATAQUE
        for (int ataque = 0; ataque <= 10; ataque++)
        {
            modoPatrulla = false;
            modoAtaque = true;
            modoPersecución = true;
            Console.WriteLine("¡DISPARO "+ataque+"!");
            System.Threading.Thread.Sleep(100);

            
        }
        while (modoPersecución = true)
        {
            //CICLO FOR INFINITO DE PERSECUCIÓN
            for (int ataque = 0; ataque <= ataque; ataque++)
            {
                Console.WriteLine("¡PERSIGUIENDO AL INTRUSO # "+ataque+"!");
                System.Threading.Thread.Sleep(100);
            }
        }
    }
    else if (respuesta==0)
    {
        Console.WriteLine("Muy bien, no hay intrusos");
        modoPatrulla = true;
        modoAtaque = false;

    }

    else
    {
        Console.WriteLine("¿Qué? comando inválido, intenta de nuevo");
        modoPatrulla = true;
        modoAtaque = false;
    }

    
} while (modoPatrulla);
  • DO_WHILE

Utilizando el programa del ejercicio pasado de la calculadora, que funciona por medio de if y else if, coloque un do_while para que el programa pueda ejecutarse una vez, al final, el programa le pregunta al usuario si desea realizar otra operación, si es así, volverá al inicio del programa para repetir el programa hasta que el usuario indique que ya no quiere realizar más operaciones.

static void Main(string[] args)
        {
            Console.WriteLine("Bienvenido a la calculadora en consola");
            
            //La variable "repetir", ayudara a la condición do_while para que pueda funcionar.
            char repetir;
            //La variable "contador", llevara la cuenta de cuantas operaciones realizo el usuario.
            int contador = 0;

            //se inicia el do, permitiendo que el programa se ejecute.
            do
            {
                Console.WriteLine("\nPrimero elige, ¿Qué tipo de operación quiere realizar?");
                Console.WriteLine("Estas son las opciones:");
                Console.WriteLine(" + (Suma) \n - (Resta) \n * (Multiplicación) \n / (División) \n % (Residuo) \n");
                Console.Write("Teclea el simbolo de la operación que quieres realizar: ");
                char opcion = char.Parse(Console.ReadLine());

                if (opcion == '+' || opcion == '-' || opcion == '*' || opcion == '/' || opcion == '%')
                {
                    Console.WriteLine($"({opcion}) Opción valida");
                    //return;
                }

                else
                {
                    Console.Write("Opción no valida");
                    return;
                }

                Console.Write("\nTeclee el primer valor (entero o decimal): ");
                double valor1 = double.Parse(Console.ReadLine());

                Console.Write("Teclee el segundo valor (entero o decimal): ");
                double valor2 = double.Parse(Console.ReadLine());

                double resultado = 0;

                if (opcion == '+')
                {
                    resultado = valor1 + valor2;
                }

                else if (opcion == '-')
                {
                    resultado = valor1 - valor2;
                }

                else if (opcion == '*')
                {
                    resultado = valor1 * valor2;
                }

                else if (opcion == '/')
                {
                    resultado = valor1 / valor2;
                }

                else if (opcion == '%')
                {
                    resultado = valor1 % valor2;
                }

                //Cada vez que se haya realizado una operación, la variable "contador" aumentara un uno.
                contador++;

                Console.WriteLine($"\nLa operación y resultado serian: \n {valor1} {opcion} {valor2} = {resultado}");

                //Se le pregunta al usuario si desea realizar otra operación.
                Console.Write("\n¿Desea realizar otra operación matemática? (s/n): ");
                //su respuesta se guardara en la variable repetir
                repetir = char.Parse(Console.ReadLine());

                //si la respuesta del usuario es igual a 's', el programa se repetira.
            } while (repetir == 's');

            //cuando el usuario ya no desee realizar más operaciones, el programa indica el número de operaciones que se realizaron y se termina el programa.
            Console.WriteLine("\nSe realizaron {0} operaciones.", contador);
            Console.WriteLine("Fin del programa.");
        }
  • WHILE

Utilizando el programa del ejercicio pasado de la calculadora, que funciona por medio de if y else if, coloque la consulta al usuario del número de veces que desea realizar una operación matemática y en base a su respuesta, coloque un while que nos ayuda a realizar y repetir las operaciones deseadas por el usuario.

static void Main(string[] args)
        {    
            Console.WriteLine("Bienvenido a la calculadora en consola");

            //Indicar el número de veces que desea realizar una operación matemática
            Console.WriteLine("¿Cuantas operaciones matemáticas desea realizar?");
            int numOp = int.Parse(Console.ReadLine());

            //Contador que nos ayudara a comparar el número de operaciones que desea realizar el usuario
            int contador = 1;

            //Mientras la variable del "contador" sea menor o igual al número de veces que el usuario desea realizar operaciones "numOp", el while permitira realizar las operaciones.
            while (contador <= numOp)
            {
                Console.WriteLine("------------------------");
                Console.WriteLine("OPERACIÓN #{0}", contador);
                Console.WriteLine("\nPrimero elige, ¿Qué tipo de operación quiere realizar?");
                Console.WriteLine("Estas son las opciones:");
                Console.WriteLine(" + (Suma) \n - (Resta) \n * (Multiplicación) \n / (División) \n % (Residuo) \n");
                Console.Write("Teclea el simbolo de la operación que quieres realizar: ");
                char opcion = char.Parse(Console.ReadLine());

                if (opcion == '+' || opcion == '-' || opcion == '*' || opcion == '/' || opcion == '%')
                {
                    Console.WriteLine($"({opcion}) Opción valida");
                    //return;
                }

                else
                {
                    Console.Write("Opción no valida");
                    return;
                }

                Console.Write("\nTeclee el primer valor (entero o decimal): ");
                double valor1 = double.Parse(Console.ReadLine());

                Console.Write("Teclee el segundo valor (entero o decimal): ");
                double valor2 = double.Parse(Console.ReadLine());

                double resultado = 0;

                if (opcion == '+')
                {
                    resultado = valor1 + valor2;
                }

                else if (opcion == '-')
                {
                    resultado = valor1 - valor2;
                }

                else if (opcion == '*')
                {
                    resultado = valor1 * valor2;
                }

                else if (opcion == '/')
                {
                    resultado = valor1 / valor2;
                }

                else if (opcion == '%')
                {
                    resultado = valor1 % valor2;
                }

                //Cada vez que se haya realizado una operación, la variable "contador" aumentara un uno.
                contador++;

                Console.WriteLine($"\nLa operación y resultado serian: \n {valor1} {opcion} {valor2} = {resultado} \n");        
            }

            //Se indicara el número de operaciones realizadas y se terminara el programa.
            Console.WriteLine("Se realizaron las {0} operaciones.", numOp);
            Console.WriteLine("Fin del programa.");

Con esta clase, pude resolver los ejercicios de la U.
Gracias.

FOR: El bucle for ejecuta una instrucción o un bloque de instrucciones repetidamente un número finito o conocido de veces, cumplido el numero de iteraciones la expresión se evalúa como false.

WHILE: La instrucción while ejecuta una instrucción o un bloque de instrucciones repetidamente hasta que una expresión especificada se evalúa como false. En este ciclo el cuerpo de instrucciones se ejecuta mientras una condición permanezca como verdadera en el momento en que la condición se convierte en falsa el ciclo termina.

DO WHILE: Su diferencia básica con el ciclo while es que la condición es realizada al finalizar el ciclo, es decir las instrucciones se ejecutan por lo menos una vez porque primero ejecuta las instrucciones y al final evalúa la condición; También se le conoce como ciclo de condición de salida.

Logré programar un ciclo de combate exitosamente usando el ciclo while.
(El único problema es que el enemigo siempre ataca al mismo personaje y además la vida no se actualiza en tiempo real por lo que el jugador no puede morir, pero por lo menos el combate acaba cuando muere el enemigo).

//Stats Base
//Joel
int hpJoel = 20;
int atkJoel = 5;
int wpnJoel = 7;
int spdJoel = 7;

//Londer
int hpLonder = 15;
int atkLonder = 5;
int spdLonder = 6;

//Kuma
int hpKuma = 10;
int atkKuma = 7;
int spdKuma = 10;

//Koda
int hpKoda = 15;
int atkKoda = 3;
int spdKoda = 7;


Random rnd = new Random();
int hpEnemy = rnd.Next(7,50);
int spdEnemy = rnd.Next(1, 10);
int atkEnemy = rnd.Next(1, 5);

Console.WriteLine("COMIENZA EL COMBATE");
System.Threading.Thread.Sleep(2000);
Console.WriteLine($"El enemigo tiene {hpEnemy} de vida y {spdEnemy} de velocidad");

int currentEnemyHp = hpEnemy;

if (spdJoel >= spdEnemy)
{
    do
    {
        //Este es el Turno de Joel

        System.Threading.Thread.Sleep(1500);
        Console.WriteLine("Es el Turno de Joel, elige tu movimiento");
        System.Threading.Thread.Sleep(1500);
        Console.WriteLine("1. Ataque \n2. Arma \n3. Huir");

        int atkActionJoel = int.Parse(Console.ReadLine());

        switch (atkActionJoel)
        {
            case 1:
                Console.WriteLine("Joel realiza un ataque");
                System.Threading.Thread.Sleep(1500);
                Console.WriteLine($"Infliges {atkJoel} de daño");
                currentEnemyHp = hpEnemy = hpEnemy - atkJoel;
                break;
            case 2:
                Console.WriteLine("Joel realiza un ataque con su Arma");
                System.Threading.Thread.Sleep(1500);
                Console.WriteLine($"Infliges {wpnJoel} de daño");
                currentEnemyHp = hpEnemy = hpEnemy - wpnJoel;
                break;
            case 3:
                int fleeNumber = rnd.Next(1, 10);
                Console.WriteLine("Intentas Huir");
                System.Threading.Thread.Sleep(1500);
                if (fleeNumber <= 5)
                {
                    Console.WriteLine("Has Logrado Huir Exitosamente");
                    System.Threading.Thread.Sleep(1500);
                    Environment.Exit(0);
                }
                else
                    Console.WriteLine("El combate continúa");
                break;
            default:
                Console.WriteLine("Inserte un número válido");
                break;
        }
        if (currentEnemyHp <= 0)
        {
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine("El enemigo ha muerto");
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine("El combate ha terminado");
            System.Threading.Thread.Sleep(1500);
            Environment.Exit(0);
        }
        else
        {
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine($"El enemigo tiene {currentEnemyHp} de vida");
        }


        //Este es el primer turno del Enemigo en el ciclo de combate

        System.Threading.Thread.Sleep(2000);
        Console.WriteLine("Es el turno del Enemigo");
        System.Threading.Thread.Sleep(1500);
        Console.WriteLine("El enemigo va a atacar, elige tu acción");
        System.Threading.Thread.Sleep(1500);
        Console.WriteLine("1. Bloquear (Recibirás la mitad del daño)\n2. Desviar (Puede que desviés el ataque, niegues el daño y devuelvas un ataque potenciado)");

        int defAction = int.Parse(Console.ReadLine());

        switch (defAction)
        {
            case 1:
                Console.WriteLine("Bloqueas el ataque del Enemigo");
                System.Threading.Thread.Sleep(1500);
                Console.WriteLine($"Recibes {atkEnemy} de daño");
                break;
            case 2:
                Console.WriteLine("Intentas Desviar el ataque enemigo");
                int parryChance = rnd.Next(1, 2);
                if (parryChance == 1)
                {
                    System.Threading.Thread.Sleep(1500);
                    Console.WriteLine("Desviaste el Ataque del enemigo");
                    System.Threading.Thread.Sleep(1500);
                    Console.WriteLine($"Recibes 0 de daño e inflinjes {atkJoel * 2} de daño");
                    currentEnemyHp = hpEnemy = hpEnemy - atkJoel * 2;
                }
                else
                {
                    System.Threading.Thread.Sleep(1500);
                    Console.WriteLine("El Desvío no tuvo éxito");
                    System.Threading.Thread.Sleep(1500);
                    Console.WriteLine($"Recibes {atkEnemy} de daño");
                }
                break;
        }
        if (currentEnemyHp <= 0)
        {
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine("El enemigo ha muerto");
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine("El combate ha terminado");
            System.Threading.Thread.Sleep(1500);
            Environment.Exit(0);
        }
        else
        {
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine($"El enemigo tiene {currentEnemyHp} de vida");
        }

        //Este es el Turno de Londer

        System.Threading.Thread.Sleep(1500);
        Console.WriteLine("Es el Turno de Londer, elige tu movimiento");
        Console.WriteLine("1. Ataque \n2. Huir");

        int atkActionLonder = int.Parse(Console.ReadLine());

        switch (atkActionLonder)
        {
            case 1:
                Console.WriteLine("Londer realiza un ataque");
                System.Threading.Thread.Sleep(1500);
                Console.WriteLine($"Infliges {atkLonder} de daño");
                currentEnemyHp = hpEnemy = hpEnemy - atkLonder;
                break;
            case 2:
                int fleeNumber = rnd.Next(1, 10);
                Console.WriteLine("Intentas Huir");
                System.Threading.Thread.Sleep(1500);
                if (fleeNumber <= 5)
                {
                    Console.WriteLine("Has Logrado Huir Exitosamente");
                    Environment.Exit(0);
                }
                else
                    Console.WriteLine("El combate continúa");
                break;
            default:
                Console.WriteLine("Inserte un número válido");
                break;
        }
        if (currentEnemyHp <= 0)
        {
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine("El enemigo ha muerto");
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine("El combate ha terminado");
            System.Threading.Thread.Sleep(1500);
            Environment.Exit(0);
        }
        else
        {
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine($"El enemigo tiene {currentEnemyHp} de vida");
        }

        // Este es el segundo turno del enemigo en el ciclo de combate
        System.Threading.Thread.Sleep(2000);
        Console.WriteLine("Es el turno del Enemigo");
        System.Threading.Thread.Sleep(1500);
        Console.WriteLine("El enemigo va a atacar, elige tu acción");
        System.Threading.Thread.Sleep(1500);
        Console.WriteLine("1. Bloquear (Recibirás la mitad del daño)\n2. Desviar (Puede que desviés el ataque, niegues el daño y devuelvas un ataque potenciado)");

        int defAction2 = int.Parse(Console.ReadLine());

        switch (defAction2)
        {
            case 1:
                Console.WriteLine("Bloqueas el ataque del Enemigo");
                System.Threading.Thread.Sleep(1500);
                Console.WriteLine($"Recibes {atkEnemy} de daño");
                break;
            case 2:
                Console.WriteLine("Intentas Desviar el ataque enemigo");
                int parryChance = rnd.Next(1, 2);
                if (parryChance == 1)
                {
                    System.Threading.Thread.Sleep(1500);
                    Console.WriteLine("Desviaste el Ataque del enemigo");
                    System.Threading.Thread.Sleep(1500);
                    Console.WriteLine($"Recibes 0 de daño e inflinjes {atkJoel * 2} de daño");
                    currentEnemyHp = hpEnemy = hpEnemy - atkJoel * 2; 
                    if (currentEnemyHp <= 0)
                    {
                        Console.WriteLine("El enemigo ha muerto");
                        System.Threading.Thread.Sleep(1500);
                        Console.WriteLine("El combate ha terminado");
                        Environment.Exit(0);
                    }
                    else
                    {
                        System.Threading.Thread.Sleep(1500);
                        Console.WriteLine($"El enemigo tiene {currentEnemyHp} de vida");
                    }
                }
                else
                {
                    System.Threading.Thread.Sleep(1500);
                    Console.WriteLine("El Desvío no tuvo éxito");
                    System.Threading.Thread.Sleep(1500);
                    Console.WriteLine($"Recibes {atkEnemy} de daño");
                }
                break;
        }
    } while (currentEnemyHp > 0);
}
else
{
    do
    {
        //Este es el primer turno del enemigo en el ciclo de combate

        System.Threading.Thread.Sleep(1500);
        Console.WriteLine("Es el turno del Enemigo");
        System.Threading.Thread.Sleep(1500);
        Console.WriteLine("El enemigo va a atacar, elige tu acción");
        System.Threading.Thread.Sleep(1500);
        Console.WriteLine("1. Bloquear (Recibirás la mitad del daño)\n2. Desviar (Puede que desviés el ataque, niegues el daño y devuelvas un ataque potenciado)");

        int defAction = int.Parse(Console.ReadLine());

        switch (defAction)
        {
            case 1:
                Console.WriteLine("Bloqueas el ataque del Enemigo");
                System.Threading.Thread.Sleep(1500);
                Console.WriteLine($"Recibes {atkEnemy} de daño");
                break;
            case 2:
                Console.WriteLine("Intentas Desviar el ataque enemigo");
                int parryChance = rnd.Next(1, 2);
                if (parryChance == 1)
                {
                    System.Threading.Thread.Sleep(1500);
                    Console.WriteLine("Desviaste el Ataque del enemigo");
                    System.Threading.Thread.Sleep(1500);
                    Console.WriteLine($"Recibes 0 de daño e inflinjes {atkJoel * 2} de daño");
                    currentEnemyHp = hpEnemy = hpEnemy - atkJoel * 2;
                }
                else
                {
                    System.Threading.Thread.Sleep(1500);
                    Console.WriteLine("El Desvío no tuvo éxito");
                    System.Threading.Thread.Sleep(1500);
                    Console.WriteLine($"Recibes {atkEnemy} de daño");
                }
                break;
        }
        if (currentEnemyHp <= 0)
        {
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine("El enemigo ha muerto");
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine("El combate ha terminado");
            System.Threading.Thread.Sleep(1500);
            Environment.Exit(0);
        }
        else
        {
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine($"El enemigo tiene {currentEnemyHp} de vida");
        }

        //Este es el turno de Joel

        System.Threading.Thread.Sleep(1500);
        Console.WriteLine("Es el Turno de Joel, elige tu movimiento");
        System.Threading.Thread.Sleep(1500);
        Console.WriteLine("1. Ataque \n2. Arma \n3. Huir");

        int atkActionJoel = int.Parse(Console.ReadLine());

        switch (atkActionJoel)
        {
            case 1:
                Console.WriteLine("Joel realiza un ataque");
                System.Threading.Thread.Sleep(1500);
                Console.WriteLine($"Infliges {atkJoel} de daño");
                currentEnemyHp = hpEnemy = hpEnemy - atkJoel;
                break;
            case 2:
                Console.WriteLine("Joel realiza un ataque con su Arma");
                System.Threading.Thread.Sleep(1500);
                Console.WriteLine($"Infliges {wpnJoel} de daño");
                currentEnemyHp = hpEnemy = hpEnemy - wpnJoel;
                break;
            case 3:
                int fleeNumber = rnd.Next(1, 10);
                Console.WriteLine("Intentas Huir");
                System.Threading.Thread.Sleep(1500);
                if (fleeNumber <= 5)
                {
                    Console.WriteLine("Has Logrado Huir Exitosamente");
                    Environment.Exit(0);
                }
                else
                    Console.WriteLine("El combate continúa");
                break;
            default:
                Console.WriteLine("Inserte un número válido");
                break;
        }
        if (currentEnemyHp <= 0)
        {
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine("El enemigo ha muerto");
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine("El combate ha terminado");
            System.Threading.Thread.Sleep(1500);
            Environment.Exit(0);
        }
        else
        {
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine($"El enemigo tiene {currentEnemyHp} de vida");
        }

        //Este es el segundo turno del enemigo en el ciclo de combate

        System.Threading.Thread.Sleep(2000);
        Console.WriteLine("Es el turno del Enemigo");
        System.Threading.Thread.Sleep(1500);
        Console.WriteLine("El enemigo va a atacar, elige tu acción");
        System.Threading.Thread.Sleep(1500);
        Console.WriteLine("1. Bloquear (Recibirás la mitad del daño)\n2. Desviar (Puede que desviés el ataque, niegues el daño y devuelvas un ataque potenciado)");

        int defAction2 = int.Parse(Console.ReadLine());

        switch (defAction2)
        {
            case 1:
                Console.WriteLine("Bloqueas el ataque del Enemigo");
                System.Threading.Thread.Sleep(1500);
                Console.WriteLine($"Recibes {atkEnemy} de daño");
                break;
            case 2:
                Console.WriteLine("Intentas Desviar el ataque enemigo");
                int parryChance = rnd.Next(1, 2);
                if (parryChance == 1)
                {
                    System.Threading.Thread.Sleep(1500);
                    Console.WriteLine("Desviaste el Ataque del enemigo");
                    System.Threading.Thread.Sleep(1500);
                    Console.WriteLine($"Recibes 0 de daño e inflinjes {atkJoel * 2} de daño");
                    currentEnemyHp = hpEnemy = hpEnemy - atkJoel * 2;
                }
                else
                {
                    System.Threading.Thread.Sleep(1500);
                    Console.WriteLine("El Desvío no tuvo éxito");
                    System.Threading.Thread.Sleep(1500);
                    Console.WriteLine($"Recibes {atkEnemy} de daño");
                }
                break;
        }
        if (currentEnemyHp <= 0)
        {
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine("El enemigo ha muerto");
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine("El combate ha terminado");
            System.Threading.Thread.Sleep(1500);
            Environment.Exit(0);
        }
        else
        {
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine($"El enemigo tiene {currentEnemyHp} de vida");
        }

        //Este es el turno de Londer

        System.Threading.Thread.Sleep(1500);
        Console.WriteLine("Es el Turno de Londer, elige tu movimiento");
        System.Threading.Thread.Sleep(1500);
        Console.WriteLine("1. Ataque \n2. Huir");

        int atkActionLonder = int.Parse(Console.ReadLine());

        switch (atkActionLonder)
        {
            case 1:
                Console.WriteLine("Londer realiza un ataque");
                System.Threading.Thread.Sleep(1500);
                Console.WriteLine($"Infliges {atkLonder} de daño");
                currentEnemyHp = hpEnemy = hpEnemy - atkLonder;
                break;
            case 2:
                int fleeNumber = rnd.Next(1, 10);
                Console.WriteLine("Intentas Huir");
                System.Threading.Thread.Sleep(1500);
                if (fleeNumber <= 5)
                {
                    Console.WriteLine("Has Logrado Huir Exitosamente");
                    Environment.Exit(0);
                }
                else
                    Console.WriteLine("El combate continúa");
                break;
            default:
                Console.WriteLine("Inserte un número válido");
                break;
        }
        if (currentEnemyHp <= 0)
        {
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine("El enemigo ha muerto");
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine("El combate ha terminado");
            System.Threading.Thread.Sleep(1500);
            Environment.Exit(0);
        }
        else
        {
            System.Threading.Thread.Sleep(1500);
            Console.WriteLine($"El enemigo tiene {currentEnemyHp} de vida");
        }
    } while (currentEnemyHp > 0);

    Console.WriteLine("El combate ha terminado");
}
for: este ciclo se utiliza cuando se conoce el número de veces que un proceso debe realizarse. Si se conoce el número de alumnos que una escuela tiene, será posible entonces utilizar el for para promediar el puntaje obtenido para cada materia para cada alumno. while: este ciclo se utiliza para mantener un proceso mientras una condición se cumple. Si los sensores de una casa inteligente identifican la presencia de un habitante, encenderá las luces de la habitación en la que se encuentre mientras permanezca en ese lugar. doWhile Este ciclo se utiliza para comprobar una condición y, una vez comprobada, realizar un proceso mientras dicha condición es cumplida. Una aspiradora inteligente debe limpiar por lo menos una vez al día esté limpio o no. Por lo que primero tiene que evaluar si el lugar está sucio para disponerse a limpiar, y siempre lo hará por lo menos una vez y lo dejará de hacer hasta que esté limpio por completo.

El gato le dio un plus a la clase jaja

for
se utiliza cuando se sabe cuantas veces queremos que se ejecute el programa
while
se utiliza cuando no sabemos cuantas veces se debe ejecutar el programa o su ejecución depende de un factor externo
do while
se utiliza cuando queremos que el programa se ejecute al menos una vez independientemente de si la condición se cumpla o no

Hasta ahora me ha gustado este curso de introducción a C#

For: para cuando se cuantas veces quiero ejecutar el ciclo.
While: para cuando no se cuantas veces quiero ejecutar el ciclo.
Do while: para cuando no se cuantas veces quiero ejecutar el ciclo pero quisiera ejecutarlo al menos una vez antes de llegar a la condicion.

Para los que esten empezando también podrían ver el uso de async y await, que nos sirve para trabajar asincrónicamente https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/

Este es mi robot:

using System;

namespace RobotAlarm
{
    class Program
    {
        static void Main(string[] args) 
        {
            string robot = "Robot driving .";

            do 
            {
                Console.WriteLine(robot);
                robot = robot + ".";

                if (robot.Length >= 25)
                {
                    robot = "stop";
                }
            
            } while (!robot.Equals("stop"));
            
        }
    
    }
}

El ejemplo que apliqué para while es:

double number1 = 0, number2 = 0;

Console.WriteLine("Ingresa el primer número");
number1 = double.Parse(Console.ReadLine());

Console.WriteLine("Ingresa el segundo númer");
number2 = double.Parse(Console.ReadLine());

Console.WriteLine("La lista de números entre el primero y segundo son:");

    while (number1 < number2-1){
        number1++;
        Console.WriteLine(number1);
    }

Para el ciclo for:

<code> 
// El robot recorrera los 10 pasillos
for (int numero_de_pasillos = 1, numero_de_pasillos = 11, i ++ )
{
	Console.WriteLine("Revisando pasillo " + i)		
}

Para el ciclo While

<code> 
bool seguro = true;
while (seguro == true)
{
	Console.WriteLine("Revisando")
	// bla bla bla
	bool amenaza = true;
	if (amenaza == true)
	{
		seguro = false;
		Console.WriteLine("Mandando SOS, Alarma activada")
	}
}

Un ciclo for se usa para recorrer un objeto determinado, por lo que nos sirve para repetir las veces necesitemos un bloque de codigo. Por ejemplo, para calcular las raices cuadradas en un array de numeros.

Mientras tanto, los ciclos While dependen mas de condiciones, siempre y cuando su condicion inicial sea cierta, funcionara eternamente. Por lo que nos sirve para llevar a cabo procesos que se ejecuten hasta que determinada condicion nos saque del ciclo…

El ciclo for se usa para cuando necesitamos tener un control de un indicé o recorrer alguna estructura de datos, el while para cuando necesitamos que se ejecute algo con una condición booleana en true.

Este es un ejemplo de cuando podemos utilizar el Ciclo DoWhile
En este ejemplo lo utilizo como un filtro de seguridad para una red social, en donde si no has iniciado sesión entonces no puedes utilizar la res social y obviamente tampoco mandar mensajes a nadie y te dirá que inicies sesión primero, mientras que si ya iniciaste sesión ahora si puedes usar la red social y chatear con tus amigos.

Like si también te dio ternura ver al gatito de Ricardo Celis sentarse en su sofá de atrás.
Minuto 1:57

FOR: Conoces el punto inicial, el límite y te gustaría controlar el incremento.
WHILE: Conoces el punto inicial pero desconoces el límite.
DO WHILE: Desconoces el punto inicial y el límite.

Aquí tengo un ejemplo de código donde uso while y Do-While, este ejemplo consiste en aplicar la Conjetura de Collatz.
¿Qué es la Conjetura de Collatz?
Fue enunciado por el matemático Lothar Collatz que consiste en un número natural cualquiera , si dicho número es par, se divide entre 2 y si es impar, se multiplica por 3 y al resultado se le suma 1. Y al resultado de las anteriores operaciones se les vuelven a aplicar esas mismas operaciones sucesivamente, al final se obtendrá como resultado 1. Por ejemplo, del 10 se obtendría la siguiente secuencia:
10, 5, 16, 8,4,2,1
Al aplicarse a cualquier número natural se obtendrá una secuencia numérica que termina en 1.
La pregunta que se han hecho los matemáticos es si esta secuencia es cierta para todos los números naturales, dicha pregunta sigue sin responderse.
Aquí te dejo un link sobre el tema:
https://www.abc.es/ciencia/abci-conjetura-collatz-problema-sencillo-desafiara-intuicion-202101180110_noticia.html?ref=https%3A%2F%2Fwww.abc.es%2Fciencia%2Fabci-conjetura-collatz-problema-sencillo-desafiara-intuicion-202101180110_noticia.html

  1. Al ejecutar el código se te pedirá que ingreses un número entero mayor a cero.

  2. Escribes el número y haces Enter.

3.Te aparecerá la secuencia de Collatz terminada en 1. Se te preguntará si quieres probar un número entero mayor a cero.

  1. Si eliges que si, escribe el 1 y haz Enter.

  2. Te aparecerá un mensaje pidiéndote que escribas un número entero mayor a cero, escribes el número y repites el proceso.

  3. si escribes un número decimal y das Enter.

  4. Te aparecerá un mensaje diciéndote que debes escribir un número entero y que elijas si deseas continuar o cerrar el programa.

  5. Si eliges continuar escribes el 1 y haces Enter.

  6. Te aparecerá de nuevo el siguiente mensaje.

  7. Si escribes un número negativo y haces Enter

  8. Te aparecerá un mensaje diciéndote que debes escribir un número entero mayor a cero y también te preguntara si quieres seguir o cerrar el programa.

  9. Si quieres cerrar el programa escribe el 2 y haz Enter.

  10. Te aparecerá un mensaje pidiéndote que oprimas cualquier botón para cerrar el programa.

Aquí esta el código para que lo ejecutes.


Encontrar el numero par en Impar con For, While y Do-While Uwu 😃

            Console.WriteLine("Ciclo For");
            for (int i = 0; i <= 20; i++)
            {
                if (i == 0)
                    Console.WriteLine($"{i} es un numero Neutro");
                else if (i % 2 == 1)
                    Console.WriteLine($"{i} es impar");
                else
                Console.WriteLine($"{i} es numero Par");
            }

            Console.WriteLine("\nCiclo While");
            int init = 0;
            while (init <= 20)
            {
                if (init == 0)
                    Console.WriteLine($"{init} Es numero Neutro");
                else if (init % 2 == 1)
                    Console.WriteLine($"{init} es numero Impar");
                else
                    Console.WriteLine($"{init} es numero Par");

                init++;
            }
            Console.WriteLine("\nCiclo Do-While");
            int init2 = 0;
            do
            {
                if (init2 == 0)
                    Console.WriteLine($"{init2} es un numero Neutro");
                else if (init2 % 2 == 1)
                    Console.WriteLine($"{init2} es numero Impar");
                else 
                    Console.WriteLine($"{init2} es numero Par");

                init2++;

            } while (init2 <= 20);

Ciclo for:
usted quiere saber si un numero es par o impar de 50 números del 1 al 50:

<code> 
for (int a= 0; a <= 50; a++)
{
    int residuo = (a % 2);
    if(residuo == 0)
    {
        string mensaje = " es par";
        Console.WriteLine("el numero "+a+ mensaje);
    }
    else
    {
        string mensaje = " es impar";
        Console.WriteLine("el numero " + a + mensaje);
    }   
}

ciclo while:
usted es un expendedor de agua cuando entren a su local preguntara que si tiene sed o no.

<code> 
bool whater = true;
while (whater == true)
{
    Console.WriteLine("usted tien sed? si(1) y no(3)");
    int boll = Convert.ToInt16(Console.ReadLine());
    if(boll == 1) 
    {
        Console.WriteLine("tome su agua");
        whater = true;
    }
    else if(boll == 3)
    {
        Console.WriteLine("bueno siga caminado");
        whater = false;
    }
    else
    {
        Console.WriteLine("coloque 1 o 3");
        Console.WriteLine("no coloque espacios por favor");
    }

//Mostrar numeros pares que hay del 1 al 10
for (int i = 2; i < 11; i = i + 2)
{
Console.WriteLine(i);
}
// Ingresar numero hasta que ingrese un numero impar
int num;
Console.WriteLine("Ingresar numero: ");
num = int.Parse(Console.ReadLine());
while ((num % 2) == 0){
Console.WriteLine("Ingresar numero el que ingresó no es impar: ");
num = int.Parse(Console.ReadLine());
}
Console.WriteLine($“Ingresó un número impar el: {num}”);
//Ingresa numero y termina cuando sea par
do
{
Console.WriteLine("Ingrese numero termina cuando sea par: ");
num = int.Parse(Console.ReadLine());

        } while (num % 2 != 0);
        Console.WriteLine($"Ingresó un número par el: {num}");

    }

Usos de ciclos:
-for: Lo usare con cosas medibles como matrices o listas contables. Lo importante es que sea una secuencian ej:
for(int i=0; i<tamañoX;i=i+saltos){
recorrer ese elemento finito.
}

-while: Lo usare mas que todo en una condición, no para contar estrictamente pero para repetir hasta que se cumpla un parámetro ej:
While(TemperaturaAgua<30){
temperatura++;
}

Buenas, realice un pequeño ejercicio de calculadora para con do while para hacer operaciones basicas hasta que queramos

Console.WriteLine("Hello, World!");

bool continueCalculatorExecution = true;

//while(continueSoftwareExecution == true)
do
{

    Console.WriteLine("Que operacion aritmetica quieres hacer? \nSuma, Resta, Multiplicación, División");
    string operation = Console.ReadLine();

    switch (operation) {

        case "Suma":
            Console.WriteLine("Ingresa el primer valor: ");
            int valor1Suma = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("Ingresa el segundo valor: ");
            int valor2Suma = Convert.ToInt16(Console.ReadLine());
            int resultadoSuma = valor1Suma + valor2Suma;
            Console.WriteLine("El resultado de la suma de: " + valor1Suma + " + " + valor2Suma + " = " + resultadoSuma); 

            break;

        case "Resta":
            Console.WriteLine("Ingresa el primer valor: ");
            int valor1Resta = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("Ingresa el segundo valor: ");
            int valor2Resta = Convert.ToInt16(Console.ReadLine());
            int resultadoResta = valor1Resta - valor2Resta;
            Console.WriteLine("El resultado de la suma de: " + valor1Resta + " + " + valor2Resta + " = " + resultadoResta);
            break;
        case "Multiplicacion":
            Console.WriteLine("Ingresa el primer valor: ");
            int valor1Multiplicacion = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("Ingresa el segundo valor: ");
            int valor2Multiplicacion = Convert.ToInt16(Console.ReadLine());
            int resultadoMultiplicacion = valor1Multiplicacion * valor2Multiplicacion;
            Console.WriteLine("El resultado de la suma de: " + valor1Multiplicacion + " * " + valor2Multiplicacion + " = " + resultadoMultiplicacion);
            break;
        case "Division":
            Console.WriteLine("Ingresa el primer valor: ");
            int valor1Division = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("Ingresa el segundo valor: ");
            int valor2Division = Convert.ToInt16(Console.ReadLine());
            int resultadoDivision = valor1Division / valor2Division;
            Console.WriteLine("El resultado de la suma de: " + valor1Division + " / " + valor2Division + " = " + resultadoDivision);
            break;
    }

    Console.WriteLine("Quieres hacer otra opearación, escribe 1 para repetir, 0 si no");
    int keepgoing = Convert.ToInt16(Console.ReadLine());

    if (keepgoing == 1)
    {
        Console.WriteLine("Hello World! \nQue operacion aritmetica quieres hacer? \nSuma, Resta, Multiplicación, División");
        continueCalculatorExecution = true;
    }
    else if (keepgoing == 0)
    {
        Console.WriteLine("Hasta luego, vuelva pronto");
        continueCalculatorExecution = false;
    }
    else
        Console.WriteLine("Valor incorrecto, ingresalo otra vez");

} while (continueCalculatorExecution == true);

Usé los conocimientos de la clase anterior con los de este para crear esta pequeña máquina de sodas:

using System;

namespace SodaMachine
{

    class Program
    {
        //Allow users to get them favorite soda.
        public static void SodaDispenser()
        {
        //Request user if them want a soda
            Console.WriteLine("Do you wish to take a soda? Press 0 if no, 1 if yes.");
        //Transform option into int
            int wannaSoda = Convert.ToInt32(Console.ReadLine());
        //Transform int to boolean
            bool sodaoptionBool = Convert.ToBoolean(wannaSoda);


        //Create a loop to request a soda
            while (sodaoptionBool)
            {
        //Conditional statement for handle while loop
                if (sodaoptionBool == true)
                {
        //Menu
                    Console.WriteLine("Please enter the number of your favorite soda: ");
                    Console.WriteLine("1- Coca-Cola 300ml - 3.500 COP");
                    Console.WriteLine("2- Apple soda 300ml - 2.500 COP");
                    Console.WriteLine("3- Orange soda 300ml - 2.500 COP");
                    int userChoise = int.Parse(Console.ReadLine());

        //conditional for dispensing the soda
                    switch (userChoise)
                    {
                        case 1:
                            Console.WriteLine("Take your Coca-Cola and your change.");

                            break;

                        case 2:
                            Console.WriteLine("Take your apple soda and your change.");
                            break;

                        case 3:
                            Console.WriteLine("Take your orange soda and your change");
                            break;

                        default:
                            Console.WriteLine("Please, you didn't enter anything. Please choose your favorite soda!");
                            break;



                    }

                }
              
        //request to the cx if them want another soda
                Console.WriteLine("Do you want another soda? Press 1 if yes, 0 if no. ");

        //transform option into int
                int anotherSoda = Convert.ToInt32(Console.ReadLine());

        //transform int to boolean
                bool anothersodaBool = Convert.ToBoolean(anotherSoda);

        //Conditional statement to cose the while loop
                if (anothersodaBool == false) { 
                     sodaoptionBool = false;
                }
                else
                {
                    sodaoptionBool = true;

                }

            }
        }


        //Acces point
        static void Main(string[] args)
        {
        //Welcoming users
            Console.WriteLine("Welcome to your RefreshMachine.");
        //Instance of SodaMachine1 
            Program sodaMachine1 = new Program();
        //we invoque the SodaDispenser method
            Program.SodaDispenser();
        }
    }
}

Se usa el for loop cuando sabemos cuantas veces queremos iterar. Por ejemplo si queremos llegar a un lugar en carro tenemos que saber cuanta gasolina tenemos y cual es la distancia que queremos viajar.
Se usa el while loop cuando se desconoce cuantas veces quieres repetir el ciclo. Por ejemplo: Si sales a la calle en un día soleado estarás en el sol hasta que te haga mucho calor.
Se usa el do while cuando queremos ejecutar algo almenos 1 vez. Por ejemplo si quieres dejar de estar aburrido y tienes que buscar maneras de entrenerte. Eso tendrás que hacerlo almenos una vez antes de que dejes de estar aburrido.

int number = 0;

do {
Console.WriteLine(number);
number ++;
} while (number == 10);

DO-WHILE

Para esto podria usar el ciclo While es el programa que hice la clase de los if y else, usando mis propios metodos, con un while para mostrar si el usuario quiere seguir lanzando un numero random.

using System;

namespace _16Sentenciaif
{
    internal class Program
    {
        static void Main(string[] args)
        {
            
            Console.WriteLine("Bienvenido a el menu de la suerte seleccione la opción para continuar");
            int opcion;
            do
            {
                //if(opcion == 1) { 
                //int anyValue = Convert.ToInt32(Console.Read());
                string message = "";
                Random anyValue = new Random();

                int conversion = anyValue.Next(1, 14);
                Console.WriteLine($"Numero en el dado:{conversion}");

                if (conversion == 7)
                {
                    message = "OMG, it's a Miracle any value is 7";
                }
                else if (conversion == 14)
                {
                    message = "OMG, it's a double miracle the value is 14";
                }
                else
                {

                    message = " puff, the value wasn't 7";

                }

                Console.WriteLine($"The answer is: {message}");

                Console.WriteLine("Desea intentar de nuevo presione 1 para continuar");
                opcion = Convert.ToInt32(Console.ReadLine());
                Console.Clear();

            } while (opcion == 1); 
        }
    }
}

CICLO FOR

int tokens;
Random rnd = new Random();
int randomNum = 0;
bool band = true;
int option;
int won = 0;
int lose = 0;

//Ciclo do/while para un numero de iteraciones desconocido pero asegurando que se ejecuta una vez
do
{
    tokens = 0;
    option = 0;
    //Ciclo while para un numero desconocido de iteraciones (no sabemos cuando dejaran de seleccionar opciones no disponibles c:)
    while (tokens == 0)
    {
        try
        {
            Console.WriteLine("***Obten el numero 7***\nWon:" + won + "\nLose:" + lose + "\nCuantas veces quieres jugar?");
            tokens = int.Parse(Console.ReadLine());
            if(tokens < 0)
            {
                Console.WriteLine("No puedes seleccionar un numero menor a 0! >:c");
                tokens = 0;
            }
        }
        catch
        {
            Console.WriteLine("Opcion no valida, intenta de nuevo");
            tokens = 0;
        }
    }
    Console.Clear();
    Console.WriteLine("***Obten el numero 7***\nWon:" + won + "\nLose:" + lose);
    //Ciclo for para un numero de iteraciones conocido (seleccionado previamente)
    for (int i = 0; i < tokens; i++)
    {
        randomNum = rnd.Next(1, 11);
        Console.WriteLine(randomNum);
        if (randomNum == 7)
        {
            won++;
        }
        else {
            lose++;
        }
    }
    //Ciclo do/while para un numero de iteraciones desconocido (las opciones aaaaaa)
    while (option != 1 && option != 2)
    {
        try
        {
            Console.WriteLine("Deseas volver a jugar?\n1.-Si\n2.-No");
            option = int.Parse(Console.ReadLine());
            if (option == 2)
            {
                Console.Clear();
                Console.WriteLine("Gracias por jugar");
                band = false;
            }
            else if (option == 1)
            {
                Console.Clear();
            }
            else
            {
                Console.WriteLine("Opcion no valida, intenta de nuevo");
                option = 0;
            }
        }
        catch {
            Console.WriteLine("Opcion no valida");
            option = 0; }
    }
} while (band == true);

while = mientras la casa no hayan habitantes la alarma esta activada
for = cada 15 min el sistema detectara la cantidad de habitantes de la casa inteligente

do while: si se detecta una persona se encenderan las luces

El michi hace la clase mucho más entretenida y amena XD

Console.WriteLine("Hello, DBZ World!\n");
bool continueSoftwareExecution = true;

while (continueSoftwareExecution == true)
{
    Console.WriteLine("1. Do you whish to keep the software running? write 1 if yes, 0 if no.");
    int keepGoing = Convert.ToInt16(Console.ReadLine());
    if (keepGoing == 0)
    {
        continueSoftwareExecution = false;
        Console.WriteLine($"1. The value of the continueSoftwareExecution is:{continueSoftwareExecution}, your software stoped.");
    }
    else if (keepGoing == 1)    
    {
        Console.WriteLine($"1. The value of the continueSoftwareExecution is:{continueSoftwareExecution}, your software is running.");
    }
    else
    {
        Console.WriteLine($"1. The value of the continueSoftwareExecution is:{continueSoftwareExecution}, but do you choise a invalid input {keepGoing}, your software is running.");
    }
}
bool continueSoftwareExecution1;
do
{
    Console.WriteLine("2. Do you whish to keep the software running? write 1 if yes, 0 if no.");
    int keepGoing = Convert.ToInt16(Console.ReadLine());
    if (keepGoing == 0)
    {
        continueSoftwareExecution1 = false;
        Console.WriteLine($"2. The value of the continueSoftwareExecution is:{continueSoftwareExecution1}, your software stoped.");
    }
    else if (keepGoing == 1)
    {
        continueSoftwareExecution1 = true;
        Console.WriteLine($"2. The value of the continueSoftwareExecution is:{continueSoftwareExecution1}, your software is running.");
    }
    else
    {
        continueSoftwareExecution1 = true;
        Console.WriteLine($"2. The value of the continueSoftwareExecution is:{continueSoftwareExecution1}, but do you choise a invalid input {keepGoing}, your software is running.");
    }
} while (continueSoftwareExecution1 == true);

Ciclo infinito con while invertiendo una palabra
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp1
{
public class CicloWhile
{
public static void MotodoWhile()
{
bool bandera=true;

        Console.WriteLine("ingrese palabra completa");

        string palabra = Console.ReadLine();


        if (palabra.Length <= 3)
        {
            bandera = false;
        }
        else
        {
            bandera = true;
        }


        while (bandera == true)
        {



            char[] invertirPalabra = palabra.ToCharArray();
            
            Array.Reverse(invertirPalabra);

            Console.WriteLine(invertirPalabra);
        }

        
    }
}

}

For: Se utiliza cuando se conoce la cantidad de iteraciones a ejecutar.

While: Se utiliza para realizar iteraciones mientras se cumpla con una condición.

Do While: Ejecuta al menos una iteraciones antes de validar la condición dentro de While.

//Se ejecuta mientras le ingresan Nros Positivos

namespace Whiledo
{
class Program
{
static void Main(string[] args)
{
bool continua = true; // programa q pide numeros mientras no sea negativo

        Console.WriteLine("digite un numero mayor que cero para seguir");
        do
        {

            int dato = Convert.ToInt16 ( Console.ReadLine());
            if (dato >= 0)
             {
                Console.WriteLine("digite un numero");
                continua = true;

            }
            else if (dato<=0)
            {
                Console.WriteLine("solo acepto nros > 0");
                continua = false;
            }
            else
            {
                Console.WriteLine("No ha digitado Nro volvamos a empezar");
            }

        } while (continua == true); 

    }

Hice un pequeño programa con lo que he aprendido durante el curso

Trata sobre una cámara de vigilancia la cual tiene que ser controlada por algún vigilante, él tendrá que tomar las decisiones, si no está en peligro la zona insertara el 1, pero si está en peligro insertara el 0.

bool camera = true;

while (camera == true)
{
    Console.WriteLine("Modo alerta");

    Console.WriteLine("If no danger is detected enter ` 1 `, if any danger is detected enter ` 0 ` but if you want to exit the program enter ` 2 `");
    int vigilant = Convert.ToInt32(Console.ReadLine());

    if (vigilant == 1)
    {
        Console.WriteLine("You're still in alert mode");
        camera = true;
    }

    else if (vigilant == 0)
    {
        Console.WriteLine("danger mode! Alarm activation");
        
        while (vigilant == 0)
        {
            Console.WriteLine("Alert");
            Console.WriteLine("Alert");
            Console.WriteLine("Alert");

            Console.WriteLine("The danger continues?");

            vigilant = Convert.ToInt32(Console.ReadLine());

            if (vigilant == 1)
            {
                Console.WriteLine("The danger is over");
                vigilant = 1;
            }

            else if (vigilant == 0)
            {
                Console.WriteLine("The danger continues");
                vigilant = 0;
            }

            else
            {
                Console.WriteLine("Wrong value try again");
            }
        }

 
    }

    else if (vigilant == 2)
    {
        Console.WriteLine("You have exited the program, thank you for using our service");
        camera = false;
    }

    else
    {
        Console.WriteLine("Wrong value try again");
    }
}bool camera = true;

while (camera == true)
{
    Console.WriteLine("Modo alerta");

    Console.WriteLine("If no danger is detected enter ` 1 `, if any danger is detected enter ` 0 ` but if you want to exit the program enter ` 2 `");
    int vigilant = Convert.ToInt32(Console.ReadLine());

    if (vigilant == 1)
    {
        Console.WriteLine("You're still in alert mode");
        camera = true;
    }

    else if (vigilant == 0)
    {
        Console.WriteLine("danger mode! Alarm activation");
        
        while (vigilant == 0)
        {
            Console.WriteLine("Alert");
            Console.WriteLine("Alert");
            Console.WriteLine("Alert");

            Console.WriteLine("The danger continues?");

            vigilant = Convert.ToInt32(Console.ReadLine());

            if (vigilant == 1)
            {
                Console.WriteLine("The danger is over");
                vigilant = 1;
            }

            else if (vigilant == 0)
            {
                Console.WriteLine("The danger continues");
                vigilant = 0;
            }

            else
            {
                Console.WriteLine("Wrong value try again");
            }
        }

 
    }

    else if (vigilant == 2)
    {
        Console.WriteLine("You have exited the program, thank you for using our service");
        camera = false;
    }

    else
    {
        Console.WriteLine("Wrong value try again");
    }
}

El gato está pensando: “Éste esclavo está loco, habla solo -_-’ pero me da igual, mientras me acaricie la cabeza y me traiga mis croquetas favoritas… en fin, hoomans! XD”

Diría que junto a los Array, el Ciclo While es de mis cositas favoritas en C#

Aquí un Remake de Robocop, con conexión y desconexión de Modo Patrulla y varios detectores de Intrusos.

Quisiera dejar un aporte para que se tenga en cuenta. Contando con que este es un curso de Introducción, en este caso de C#, a mí parecer y lo digo por mi propia experiencia que estoy viviendo, creo que algo tan simple como explicar lo que es la identación, habría venido bien quizás explicarlo en las primeras clases.
Así como otros apuntes súper útiles para no sufrir tanto en la curva de aprendizaje, aunque Google sea nuestro mejor amigo y nos ayude a solucionar todo los inconvenientes que no surjan.

Lo mismo me ocurrió aprendiendo línea de comandos en Git, muchas fueron las veces que tuve que cerrar la aplicación porque al hacer Git Log, la consola me decía Oye, esto es todo lo que tengo crack´´ y sin saberlo tenía que darleQ´´, lo supe a mitad de curso aprox jaja
Lo digo como crítica constructiva, saludos!

  • FOR - cuando ya se de antemano cuantas vueltas necesito dar. Ej: recorrer una lista

  • WHILE - Cuando quiero que una instrucción se repita mientras se cumpla una condición. Ej: validar un tipo de dato

  • DO WHILE - El código se ejecutará al menos una vez para luego comportarse como un while común. Ej: Para hacer un menú de opciones.

Logré mejorar mi calculadora ahora con menos if anidados.
Código mejorado:

Console.WriteLine("This program calculates the area of the following figures: triangle, rectangle, trapeze, circle.");
bool again = false;
string repeat = "\nDo you wish to calculate another area?";
bool askRepeat = false;
do
{
    askRepeat = false;
    Console.WriteLine("Type the figure from which you want to calculate its area.");
    string figure = Console.ReadLine();
    switch (figure)
    {
        case "triangle":
            Console.WriteLine("Please type the height:");
            decimal triangleHeight = Convert.ToDecimal(Console.ReadLine());
            Console.WriteLine("Now type the base's length:");
            decimal triangleBase = Convert.ToDecimal(Console.ReadLine());
            decimal triangleResult = triangleHeight * triangleBase / 2;
            if (triangleHeight != 0 && triangleBase != 0)
            {
                Console.WriteLine("The area of a triangle with a base of " + triangleBase + " and a height of " + triangleHeight + " is " + triangleResult + repeat);
            }
            else
            {
                if (triangleHeight == 0 && triangleBase != 0)
                {
                    Console.WriteLine("A triangle cannot have a height that measures 0" + repeat);
                }
                else
                {
                    if (triangleHeight != 0 && triangleBase == 0)
                    {
                        Console.WriteLine("A triangle cannot have a side that measures 0" + repeat);
                    }
                    else
                    {
                        if (triangleHeight == 0 && triangleBase == 0)
                        {
                            Console.WriteLine("A triangle cannot have a height nor a side that measures 0" + repeat);
                        }
                    }
                }
            }
            askRepeat = true;
            break;
        case "rectangle":
            Console.WriteLine("Please type the height:");
            decimal rectangleHeight = Convert.ToDecimal(Console.ReadLine());
            Console.WriteLine("Now type the base's length:");
            decimal rectangleBase = Convert.ToDecimal(Console.ReadLine());
            decimal rectangleResult = rectangleHeight * rectangleBase;
            if (rectangleHeight != 0 && rectangleBase != 0)
            {
                if (rectangleHeight == rectangleBase)
                {
                    Console.WriteLine("The area of a square with a base of " + rectangleBase + " and a height of " + rectangleHeight + " is " + rectangleResult + repeat);
                }
                else
                {
                    Console.WriteLine("The area of a rectangle with a base of " + rectangleBase + " and a height of " + rectangleHeight + " is " + rectangleResult + repeat);
                }
            }
            else
            {
                Console.WriteLine("A rectangle cannot have a side that measures 0" + repeat);
            }
            askRepeat = true;
            break;
        case "trapeze":
            Console.WriteLine("Please type the height:");
            decimal trapezeHeight = Convert.ToDecimal(Console.ReadLine());
            Console.WriteLine("Now type the smallest base's length:");
            decimal trapezeBase1 = Convert.ToDecimal(Console.ReadLine());
            Console.WriteLine("And now type the largest base's length:");
            decimal trapezeBase2 = Convert.ToDecimal(Console.ReadLine());
            decimal trapezeResult = trapezeHeight * (trapezeBase1 + trapezeBase2) / 2;
            if (trapezeHeight != 0 && trapezeBase1 != 0 && trapezeBase2 != 0)
            {
                if (trapezeBase1 > trapezeBase2)
                {
                    Console.WriteLine("You were supposed to write the smallest base's length when it was asked to type the smallest base's length, but you typed the largest one's. Anyways, the answer is " + trapezeResult + repeat);
                }
                else
                {
                    if (trapezeBase1 == trapezeBase2)
                    {
                        if (trapezeBase1 == trapezeHeight)
                        {
                            Console.WriteLine("This is a square, not a trapeze. Anyways, the answer is " + trapezeResult + repeat);
                        }
                        else
                        {
                            Console.WriteLine("This is a rectangle, not a trapeze. Anyways, the answer is " + trapezeResult + repeat);
                        }
                    }
                    else
                    {
                        Console.WriteLine("The area of a trapeze with a height of " + trapezeHeight + ", a smaller base of " + trapezeBase1 + " and a larger base of " + trapezeBase2 + " is " + trapezeResult + repeat);
                    }
                }
            }
            else
            {
                if (trapezeHeight == 0 && trapezeBase1 != 0 && trapezeBase2 != 0)
                {
                    Console.WriteLine("A trapeze cannot have a height of 0" + repeat);
                }
                else
                {
                    if (trapezeHeight != 0)
                    {
                        if (trapezeBase1 == 0 || trapezeBase2 == 0)
                        {
                            Console.WriteLine("A trapeze cannot have a base of 0" + repeat);
                        }
                    }
                    else
                    {
                        Console.WriteLine("A trapeze cannot have a height nor a base of 0" + repeat);
                    }
                }
            }
            askRepeat = true;
            break;
        case "circle":
            Console.WriteLine("Please type the radius:");
            decimal radius = Convert.ToDecimal(Console.ReadLine());
            decimal Pi = 3.14159265358979323846M;
            decimal result = radius * radius * Pi;
            if (radius != 0)
            {
                Console.WriteLine("The area of a circle with a radius of " + radius + ", considering the first 20 decimal digits of Pi, is " + result + repeat); 
            }
            else
            {
                Console.WriteLine("A circle cannot have a radius of 0" + repeat);
            }
            askRepeat = true;
            break;
        default:
            Console.WriteLine("Invalid figure, select again.");
            again = true;
            break;
    }
    while (askRepeat == true)
    {
        Console.WriteLine("Type y for yes, type n for no.");
        string answer = Console.ReadLine();
        switch (answer)
        {
            case "y":
                again = true;
                askRepeat = false;
                break;
            case "n":
                again = false;
                askRepeat = false;
                break;
            default:
                Console.WriteLine("Invalid answer.");
                break;
        }
    }
}
while (again == true);

Código antiguo:

if (figure == "triangle")
{
    Console.WriteLine("Please type the height:");
    decimal height = Convert.ToDecimal(Console.ReadLine());
    Console.WriteLine("Now type the base's length:");
    decimal figureBase = Convert.ToDecimal(Console.ReadLine());
    decimal result = height * figureBase / 2;
    if (height != 0 && figureBase != 0)
    {
        Console.WriteLine("The area of a triangle with a base of " + figureBase + " and a height of " + height + " is " + result);
    }else
    {
        if (height == 0 && figureBase != 0)
        {
            Console.WriteLine("A triangle cannot have a height that measures 0");
        }else
        {
            if (height != 0 && figureBase == 0)
            {
                Console.WriteLine("A triangle cannot have a side that measures 0");
            }
            else
            {
                if (height == 0 && figureBase == 0)
                {
                    Console.WriteLine("A triangle cannot have a height nor a side that measures 0");
                }
            }
        }
    }
    
}
else
{
    if (figure == "rectangle")
    {
        Console.WriteLine("Please type the height:");
        decimal height = Convert.ToDecimal(Console.ReadLine());
        Console.WriteLine("Now type the base's length:");
        decimal figureBase = Convert.ToDecimal(Console.ReadLine());
        decimal result = height * figureBase;
        if (height != 0 && figureBase != 0)
        {
            if (height == figureBase)
            {
                Console.WriteLine("The area of a square with a base of " + figureBase + " and a height of " + height + " is " + result);
            }
            else
            {
                Console.WriteLine("The area of a rectangle with a base of " + figureBase + " and a height of " + height + " is " + result);
            }
        }
        else
        {
            Console.WriteLine("A rectangle cannot have a side that measures 0");
        }
        
    }
    else
    {
        if (figure == "trapeze")
        {
            Console.WriteLine("Please type the height:");
            decimal height = Convert.ToDecimal(Console.ReadLine());
            Console.WriteLine("Now type the smallest base's length:");
            decimal trapezeBase1 = Convert.ToDecimal(Console.ReadLine());
            Console.WriteLine("And now type the largest base's length:");
            decimal trapezeBase2 = Convert.ToDecimal(Console.ReadLine());
            decimal result = height * (trapezeBase1 + trapezeBase2) / 2;
            if (height != 0 && trapezeBase1 != 0 && trapezeBase2 != 0)
            {
                if (trapezeBase1 > trapezeBase2)
                {
                    Console.WriteLine("You were supposed to write the smallest base's length when it was asked to type the smallest base's length, but you typed the largest one's. Anyways, the answer is " + result);
                }
                else
                {
                    if (trapezeBase1 == trapezeBase2)
                    {
                        if (trapezeBase1 == height)
                        {
                            Console.WriteLine("This is a square, not a trapeze. Anyways, the answer is " + result);
                        }
                        else
                        {
                            Console.WriteLine("This is a rectangle, not a trapeze. Anyways, the answer is " + result);
                        }
                    }
                    else
                    {
                        Console.WriteLine("The area of a trapeze with a height of " + height + ", a smaller base of " + trapezeBase1 + " and a larger base of " + trapezeBase2 + " is " + result);
                    }
                }
            }
            else
            {
                if (height == 0 && trapezeBase1 != 0 && trapezeBase2 != 0)
                {
                    Console.WriteLine("A trapeze cannot have a height of 0");
                }
                else
                {
                    if (height != 0)
                    {
                        if (trapezeBase1 == 0 || trapezeBase2 == 0)
                        {
                            Console.WriteLine("A trapeze cannot have a base of 0");
                        }
                    }
                    else
                    {
                        Console.WriteLine("A trapeze cannot have a height nor a base of 0");
                    }
                }
            }
        }
        else
        {
            if (figure == "circle")
            {
                Console.WriteLine("Please type the radius:");
                decimal radius = Convert.ToDecimal(Console.ReadLine());
                decimal Pi = 3.14159265358979323846M;
                decimal result = radius * radius * Pi;
                if (radius != 0)
                {
                    Console.WriteLine("The area of a circle with a radius of " + radius + ", considering the first 20 decimal digits of Pi, is " + result);
                }
                else
                {
                    Console.WriteLine("A circle cannot have a radius of 0");
                }
            }
        }
    }
}

Este es el ejemplo de For:

public class Program
    {
        static void Main(string[] args)
        {
            int breadPrice = 5;
            int moneyIhave = 50;

            for (int i = breadPrice; i <= moneyIhave; i = i + 5)
            {
                Console.WriteLine("Bread Price:${0}", i);
            }

            //El programa se debe repetir 10 veces
        }
    }

Este es el ejemplo de While:

public class Program
    {
        static void Main(string[] args)
        {
            bool theresDanger = true;

            while (theresDanger == true)
            {
                Console.WriteLine("Do you see danger nearby?");
                Console.WriteLine("Write 0 if YES");
                Console.WriteLine("Write 1 if NOT");
                Console.WriteLine("If write another number the robot will be prepare to attack");
                int securitySoftware = Convert.ToInt32(Console.ReadLine());

                if (securitySoftware == 0)
                {
                    Console.WriteLine("The robot will attack");
                    theresDanger = false;
                }

                if (securitySoftware == 1)
                {
                    Console.WriteLine("OK, the robo will continue searching danger");
                    theresDanger = false;
                }

                if(securitySoftware > 1)
                {
                    Console.WriteLine("The robot will be prepare to attack");
                    theresDanger = false;
                }
            }
        }
    }

Yo realice la tabla del 10 con el ciclo while

< using System;

namespace Ciclo_While
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine(“Imprimamos la tabla del 10”);
int iter = 1;
int tabla = 10;
while (iter <11)
{
int result = tabla * iter;
Console.WriteLine(tabla+" * “+ iter+”= "+ result);
iter++;

        }
        
    }
}

} >

Con este ejemplo entendi la diferencia entre For y While !

// Ciclo While

int limit = 100;
int contador = 0;
int potencia = 2 * contador;

while (potencia < limit)
{
Console.Write(potencia);
contador ++;
potencia = 2 * contador;
}

Para el While, siendo paranoico cuando keepGoing=1 no es necesario volver a forzar a continueSoftwareExecution a true, ya que ingresa el ciclo de esa manera.
Con Do-While es otra historia