¿Qué es un ciclo while y cómo se diferencia de un ciclo for?
El concepto de ciclos en programación es esencial para automatizar tareas repetitivas. En este contexto, el ciclo while juega un papel único. Mientras que el ciclo for se utiliza generalmente cuando se conoce el número de iteraciones antes de empezar, el ciclo while se ejecuta basándose en una condición que debe continuar siendo verdadera para que las repeticiones continúen. Este concepto se ilustra a la perfección con el ejemplo de un robot patrullero, que utiliza el ciclo while para operar hasta que detecte un peligro. Aquí el ciclo actúa "mientras" no haya peligro, lo que lo hace muy útil para situaciones donde las condiciones de parada no están predefinidas.
¿Cómo se escribe un ciclo while en C#?
Escribir un ciclo while es bastante sencillo. Este ciclo ejecuta un conjunto de sentencias siempre y cuando una condición dada sea verdadera. Puede emplearse para mantener un sistema en operación constante hasta que alguna variable cambie su estado o condición.
Ejemplo básico de un ciclo while:
bool continuar =true;while(continuar){ Console.WriteLine("Hello world forever!");}
En este ejemplo, el mensaje "Hello world forever!" se imprimirá indefinidamente, ya que la condición continuar es siempre verdadera.
¿Cómo manipular un ciclo while con condicionales?
Para que un ciclo while sea verdaderamente funcional en aplicaciones prácticas, como por ejemplo en sistemas que requieren intervención del usuario, es esencial manipular control y especialmente la condición de parada. Esto se logra generalmente utilizando condicionales.
Ejemplo con intervención del usuario:
bool continuar =true;while(continuar){ Console.WriteLine("Do you wish to keep the software running? Write 1 if yes, 0 if no.");int keepGoing = Convert.ToInt16(Console.ReadLine());if(keepGoing ==1){ Console.WriteLine("The software will keep running.");}elseif(keepGoing ==0){ Console.WriteLine("This is the last time the software is running."); continuar =false;}else{ Console.WriteLine("Invalid input, try again.");}}
En este código se observa cómo se pide al usuario si quiere continuar con la ejecución. Dependiendo de la respuesta, el ciclo seguirá o terminará.
¿Qué es un ciclo do-while y cuándo utilizarlo?
El ciclo do-while asegura que el bloque de código se ejecute al menos una vez. Esto es particularmente útil cuando la condición de entrada no puede ser determinada antes de la primera ejecución del ciclo.
Ejemplo de un ciclo do-while:
bool continuar =false;do{ Console.WriteLine("Do you wish to keep the software running? Yes(1), No(0)");int keepGoing = Convert.ToInt16(Console.ReadLine());if(keepGoing ==1){ Console.WriteLine("The software will keep running."); continuar =true;}elseif(keepGoing ==0){ Console.WriteLine("This is the last time the software is running."); continuar =false;}}while(continuar);
Este fragmento de código garantiza que el usuario vea el mensaje al menos una vez, esencialmente preguntando por su preferencia antes de evaluar la condición del ciclo.
Práctica y exploración personal
Para profundizar en el uso práctico de estos ciclos, intenta imaginar y crear ejemplos desde cero. Simula una aplicación de sensores que generan valores de 0 y 1 para decidir la continuación de un proceso. Trabajar en estos ejercicios fortalecerá tu comprensión y habilidad para aplicar estos conceptos de manera efectiva en tus proyectos.
Recuerda que el uso correcto del ciclo adecuado es clave en la eficiencia de tu programa, ya sea para gestionar procesos repetitivos con condiciones conocidas como con un for, o situaciones más inciertas y condicionales que aprovechan el while. ¡Sigue practicando y descubre la potencia de estos ciclos en C#!
Ciclos While y Do While en C#: Uso y Ejemplos Prácticos
Ciclos While y Do While en C#: Uso y Ejemplos Prácticos
Recursos
Resumen
¿Qué es un ciclo while y cómo se diferencia de un ciclo for?
El concepto de ciclos en programación es esencial para automatizar tareas repetitivas. En este contexto, el ciclo while juega un papel único. Mientras que el ciclo for se utiliza generalmente cuando se conoce el número de iteraciones antes de empezar, el ciclo while se ejecuta basándose en una condición que debe continuar siendo verdadera para que las repeticiones continúen. Este concepto se ilustra a la perfección con el ejemplo de un robot patrullero, que utiliza el ciclo while para operar hasta que detecte un peligro. Aquí el ciclo actúa "mientras" no haya peligro, lo que lo hace muy útil para situaciones donde las condiciones de parada no están predefinidas.
¿Cómo se escribe un ciclo while en C#?
Escribir un ciclo while es bastante sencillo. Este ciclo ejecuta un conjunto de sentencias siempre y cuando una condición dada sea verdadera. Puede emplearse para mantener un sistema en operación constante hasta que alguna variable cambie su estado o condición.
Ejemplo básico de un ciclo while:
bool continuar = true;
while (continuar)
{
Console.WriteLine("Hello world forever!");
}
En este ejemplo, el mensaje "Hello world forever!" se imprimirá indefinidamente, ya que la condición continuar es siempre verdadera.
¿Cómo manipular un ciclo while con condicionales?
Para que un ciclo while sea verdaderamente funcional en aplicaciones prácticas, como por ejemplo en sistemas que requieren intervención del usuario, es esencial manipular control y especialmente la condición de parada. Esto se logra generalmente utilizando condicionales.
Ejemplo con intervención del usuario:
bool continuar = true;
while (continuar)
{
Console.WriteLine("Do you wish to keep the software running? Write 1 if yes, 0 if no.");
int keepGoing = Convert.ToInt16(Console.ReadLine());
if (keepGoing == 1)
{
Console.WriteLine("The software will keep running.");
}
else if (keepGoing == 0)
{
Console.WriteLine("This is the last time the software is running.");
continuar = false;
}
else
{
Console.WriteLine("Invalid input, try again.");
}
}
En este código se observa cómo se pide al usuario si quiere continuar con la ejecución. Dependiendo de la respuesta, el ciclo seguirá o terminará.
¿Qué es un ciclo do-while y cuándo utilizarlo?
El ciclo do-while asegura que el bloque de código se ejecute al menos una vez. Esto es particularmente útil cuando la condición de entrada no puede ser determinada antes de la primera ejecución del ciclo.
Ejemplo de un ciclo do-while:
bool continuar = false;
do
{
Console.WriteLine("Do you wish to keep the software running? Yes(1), No(0)");
int keepGoing = Convert.ToInt16(Console.ReadLine());
if (keepGoing == 1)
{
Console.WriteLine("The software will keep running.");
continuar = true;
}
else if (keepGoing == 0)
{
Console.WriteLine("This is the last time the software is running.");
continuar = false;
}
} while (continuar);
Este fragmento de código garantiza que el usuario vea el mensaje al menos una vez, esencialmente preguntando por su preferencia antes de evaluar la condición del ciclo.
Práctica y exploración personal
Para profundizar en el uso práctico de estos ciclos, intenta imaginar y crear ejemplos desde cero. Simula una aplicación de sensores que generan valores de 0 y 1 para decidir la continuación de un proceso. Trabajar en estos ejercicios fortalecerá tu comprensión y habilidad para aplicar estos conceptos de manera efectiva en tus proyectos.
Recuerda que el uso correcto del ciclo adecuado es clave en la eficiencia de tu programa, ya sea para gestionar procesos repetitivos con condiciones conocidas como con un for, o situaciones más inciertas y condicionales que aprovechan el while. ¡Sigue practicando y descubre la potencia de estos ciclos en C#!
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
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
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.");
}
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.");
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.