Anuncios

Bienvenidos sean a este post, en este post hablaremos sobre dos metodos muy similares al bucle for pero de una forma alternativa, este es muy interesante para lograr los mismos resultados pero con un mejor control sobre ellos por medio de do y de while.

Anuncios

Primero hablemos de do y veamos como es su sintaxis:

Anuncios
do
{
... instrucciones ...
} while (condicion);

En este caso podriamos leerlo como “hacer (do) mientras (while) se cumpla la condicion”, es decir que mientras la condicion que establezcamos se cumpla se va a ejecutar el bloque de instrucciones, como podran ver a diferencia de for no informamos ninguna variable ni ninguno incrementador en la definicion del bucle sino que solamente la condicion, es decir que de esto otro deberemos definirlo nosotros, ya sea haciendolo por medio de un int que se incrementa o decrementa (como en el for) o por medio de una palabra, letra o lo que creamos conveniente, esta es la libertad de la que goza el do con respecto a for, es que podemos tener mas variantes de escape y no depender de un condicional en el bucle que llame a break, como hemos visto en otros casos, para entender mejor el concepto vamos a ver el siguiente ejemplo, vamos a crear el siguiente archivo con su codigo:

bucle.cs

using System;

public class Program
{
	public static int Main()
	{
		string[] texto = { "Hola","Mundo","Como","Estan","Ahora" };
		int cuenta = 0;
		do
		{
			Console.WriteLine(texto[cuenta]);
			cuenta++;
		}
		while(cuenta<3);
		return 0;
	}
}
Anuncios

En este codigo tenemos un array de tipo string llamado texto con varias palabras dentro, luego tenemos un variable llamada cuenta de tipo int con valor 0, nuestro siguiente paso sera el bucle do donde mostraremos la palabra almacenada en texto por medio de cuenta, para luego incrementar cuenta en 1, cuando termina el bloque usamos una condicion que lo haga mientras cuenta sea menor a 3, por ultimo usamos un return 0 porque Main debe retornar un valor de tipo int, si lo compilamos y probamos veremos lo siguiente:

C:\Users\tinchicus\Documents\Visual Studio 2019>bucle
Hola
Mundo
Como

C:\Users\tinchicus\Documents\Visual Studio 2019>
Anuncios

Como pueden observar mostro el contenido hasta que conto 3 y paro con el bucle pero vamos a suponer que ahora no queremos que use a cuenta sino con una palabra en particular vamos a modificar el while de la siguiente manera:

		while(texto[cuenta]!="Estan");
Anuncios

En este caso le vamos a solicitar que verifique mientras la posicion de texto sea distinta a “Estan” para salir del bucle, compilemos y veamos:

C:\Users\tinchicus\Documents\Visual Studio 2019>bucle
Hola
Mundo
Como

C:\Users\tinchicus\Documents\Visual Studio 2019>
Anuncios

Nos hizo exactamente el mismo efecto pero si nosotros queremos que incluya la palabra “Estan”? podemos hacer dos modificaciones, la primera seria esta:

		int cuenta = -1;
		do
		{
			cuenta++;
			Console.WriteLine(texto[cuenta]);
		}
		while(texto[cuenta]!="Estan");
Anuncios

Donde le decimos que comience desde -1 y como podran ver el incrementador ahora esta antes, con esto primero va a convertir en 0 a cuenta y nos trae la primera posicion y despues el resto, ya que cuando llegue al condicional tendra el valor que queremos y la otra solucion seria cambiar unicamente la palabra por la siguiente, en este caso “Ahora”, quedaria de la siguiente manera:

		int cuenta = 0;
		do
		{
			Console.WriteLine(texto[cuenta]);
			cuenta++;
		}
		while(texto[cuenta]!="Ahora");

En cualquiera de los dos casos nos devolvera lo siguiente:

C:\Users\tinchicus\Documents\Visual Studio 2019>bucle
Hola
Mundo
Como
Estan

C:\Users\tinchicus\Documents\Visual Studio 2019>
Anuncios

Como pueden ver funciono perfectamente, vamos a ver nuestra ultima modificacion en la que queremos ver todas las palabras que contiene texto y para ello vamos a modificar el codigo de la siguiente forma:

using System;

public class Program
{
	public static int Main()
	{
		string[] texto = { "Hola","Mundo","Como","Estan","Ahora" };
		int cuenta = 0;
		do
		{
			Console.WriteLine(texto[cuenta]);
			cuenta++;
		}
		while(cuenta<texto.Length);
		return 0;
	}
}
Anuncios

En este caso volvimos a nuestro primer codigo pero modificamos el while de la siguiente manera:

while(cuenta<texto.Length);
Anuncios

En este ejemplo le diremos que lo haga mientras cuenta sea menor que el tamaño del array, esto lo obtenemos por medio de Length, si lo compilamos y probamos obtendremos lo siguiente:

C:\Users\tinchicus\Documents\Visual Studio 2019>bucle
Hola
Mundo
Como
Estan
Ahora

C:\Users\tinchicus\Documents\Visual Studio 2019>
Anuncios

Con esto hemos visto al do…while, como se lo denomina habitualmente, como podemos usarlo, los distintos tipos de condiciones que podemos usar para limitar nuestro bucle, y como es su sintaxis pero ahora nos toca ver a su evolucion que es el while solo.

Anuncios
Anuncios

El metodo while trabaja de forma muy similar al do…while pero con la diferencia que la condicion va primero y sin la palabra do, veamos su sintaxis:

while (condicion)
{
... instrucciones ...
}

En este caso lo primero que hace es verificar si se cumple la condicion, en caso de ser verdad procede a ejecutar el bloque si no es cierto lo omite completamente, como pueden darse cuenta su forma de trabajar es exactamente a la anterior, inclusive con las condiciones, su unica diferencia es que primero verifica luego ejecuta, esto en algunas circunstancias puede ser mas necesario que el metodo anterior, por eso su uso va a depender de nuestras necesidades, si primero ejecuta y luego verifica o primero verifica y luego ejecuta, no se preocupen con experiencia y trabajo sabran darse cuenta cuando se debe usar uno u otro, vamos a tomar el caso anterior y vamos a agregarle el while para compararlos:

using System;

public class Program
{
	public static int Main()
	{
		string[] texto = { "Hola","Mundo","Como","Estan","Ahora" };
		int cuenta = 0;
		do
		{
			Console.WriteLine(texto[cuenta]);
			cuenta++;
		}
		while(cuenta<texto.Length);
		Console.WriteLine();
		cuenta = 0;
		while (cuenta<texto.Length)
		{
			Console.WriteLine(texto[cuenta]);
			cuenta++;
		}
		return 0;

	}
}
Anuncios

En este caso la primera parte es lo que vimos hasta ahora, despues usamos un WriteLine para hacer un salto de linea y despues tendremos el bloque nuevo:

		cuenta = 0;
		while (cuenta<texto.Length)
		{
			Console.WriteLine(texto[cuenta]);
			cuenta++;
		}
Anuncios

En este caso reasignamos a cuenta el valor 0, luego tenemos en while la misma condicion que antes donde verifica si cuenta es menor que el total de elementos del array, en caso de ser verdad procede a mostrarlo en pantalla e incrementa en 1 a cuenta, como ven trabaja de la misma forma, despues solo nos resta el return 0 al cual usamos para salir del metodo y siempre va al final, si lo compilamos y probamos veamos el resultado en el siguiente video

Anuncios
Anuncios

Para ir finalizando vamos a ver algunas ventajas y desventajas con respecto a for:

  • En do y while debemos declarar variables e incrementadores si queres trabajar de esa forma
  • En for es parte de la sintaxis
  • En for solamente acepta valores de tipo int para el condicional
  • En do y while podemos usar cualquier tipo de condicion y con cualquier tipo de variable
  • Ambas permiten bucles infinitos
  • Tambien salen de la misma forma, con break
  • En do y while podemos salir cuando queramos mediante la condicion
  • En for debemos usar un condicional para llamar a break

Como pueden observar los dos tienen sus pros y contras, comparten algunas cosas y dependiendo la situacion nos va a resultar mas practico uno u otro, esto siempre va a depender de las necesidades de nuestro programa.

Anuncios

En resumen, hoy hemos visto el do…while, que es, para que se usa, su sintaxis, como trabaja, un ejemplo practico con distintas alternativas, tambien hemos visto el while a secas, su sintaxis y sus diferencias con el do…while, tambien hemos hablado cuales son las diferencias con respecto al for donde comparamos sus pros y contras, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00