Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre los tres metodos disponibles para crear bucles de nuestro codigo pero que es un bucle?

Un bucle es un mecanismo por el cual podremos repetir acciones de forma definida o indefinidamente.

El Tinchicus
Anuncios

Es decir que esto nos permitira repetir una serie de instrucciones sin necesidad de tener que repetir esa misma linea o bloque de instrucciones la X cantidad de veces necesarias, comencemos con el mas universal de ellos.

Anuncios

For

Este es el bucle mas basico y mas diseminado por todo los lenguajes porque lo encontraremos en absolutamente todos aunque puede variar un poco su sintaxis pero su comportamiento es el mismo, veamos su sintaxis:

for(valorInicial; comparacion; incremento)
{
... instrucciones ...
}
Anuncios

En general en su sintaxis mas basica siempre tendremos una variable con un valor inicial, luego ira una condicion de comparacion que actuara como freno del bucle y por ultimo una operacion que incrementa el valor inicial y hace que se cumpla la condicion o no pero de eso lo hablaremos luego, para entender el concepto veamos el siguiente ejemplo:

int a = 0;

for(int i=0; i < 5; i++)
{
	a = a + i;
} // -> El valor de a ahora es 10.
Anuncios
Anuncios

Este bucle lo que hara es basicamente incrementar el valor de a por medio del valor que tengamos en la variable i del bucle for, observen como el condicional indica que el bucle se hara mientras i sea menor que 5, es decir que contara hasta cuatro y luego saldra del bucle, y de ahora en adelante el valor de a sera igual a 10 y no mas 0, como dijimos antes este es un bucle que tiene un principio y un final pero no siempre es asi porque nosotros podriamos hacer un bucle infinito de la siguiente forma:

for(;;)
{
... instrucciones ...
}
Anuncios

En este caso se llama bucle infinito porque no tenemos ninguna condicion para salir del mismo pero luego veremos que si se puede salir de este bucle, por ahora pasemos al siguiente bucle.

Anuncios

While

Este es otro tipo de bucle que nos permite trabajar con una condicion mas flexible con respecto a la anterior porque no solamente podemos usar una condicion similar a la anterior sino otras mas, su sintaxis es:

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

Veamos algunas de las diferencias y riesgos entre este bucle y el anterior:

  • La condicion es mas flexible
  • Esta debe ser controlada por nosotros
  • Es mas facil hacer un bucle infinito
  • Pero es mas propenso a que nuestro programa falle por lo anterior
Anuncios

Para entender el concepto vamos a tomar el ejemplo anterior y lo modificaremos de la siguiente manera:

int a = 0, i = 0;

while(i < 5)
{
	a = a + i;
	i++;
}
Anuncios
Anuncios

Este codigo hace exactamente lo mismo que el anterior pero a diferencia del codigo anterior debemos definir previamente la variable i, despues usaremos un while donde i sea menor que 5 pero el incrementador lo tendremos dentro del bucle y tambien haremos la misma cuenta para obtener el mismo resultado, este bucle no esta pensado para actuar como el for sino mas bien a la espera de un valor de un menu, por ejemplo el condicional podria esperar un valor de un menu para salir del mismo y mientras (while) no se cumpla vuelve a repetir el menu, con esto explicado pasemos al siguiente bucle.

Anuncios
Nota: En el caso del bucle for infinito puede ser usado para un menu tambien.
Anuncios

Do…While

Este bucle es similar al anterior su unica diferencia es que en lugar de chequear el condicional al principio lo hara despues, en versiones anteriores a las actuales primero ejecutaba el bloque y despues verificaba si salir o no, hoy en dia no tiene esta conducta pero nos permite tener una mejor lectura de nuestro codigo en algunos casos, veamos su sintaxis:

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

Como pueden ver en lugar de comenzar con el while lo hace con do y al final del bloque usa el while de la misma forma que antes, tomemos el codigo anterior y apliquemos su forma de trabajo:

int a = 0, i = 0;

do
{
	i++;
	a = a + i;
} while(i < 5);
Anuncios
Anuncios

En este caso hace exactamente lo mismo al codigo anterior pero con la diferencia de verse distinto, en versiones anteriores se usaba para diferenciar la ejecucion del codigo, por ejemplo si la condicion se cumple con el while ya no ejecutaba el bloque y con el do…while ejecutaba y luego salia si se cumplia la condicion, hoy en dia esto no ocurre, si lo chequean debera traer el mismo resultado a los dos anteriores.

Anuncios

Con esto hemos cubierto los tres bucles basicos pero tendremos dos metodos mas para utilizar con nuestros bucles.

Anuncios

break y continue

Estos dos metodos se usan para interrumpir y omitir en un bucle, respectivamente, es decir cuando llamemos al break no importa la situacion saldra inmediatamente del bucle, en cambio la segunda cuando es invocado omite la operacion de esa vuelta pero no sale del bucle, por ejemplo vamos a usar el siguiente ejemplo:

int a = 0,i = 10;

for(;;)
{
	a++;
	if ((i % a) == 0)
	{
		Log.d("forTest", (i / a));
	} else {
		continue;
	}

	if ((i / a) == 1)
		break;
}
Anuncios
Anuncios

Este es un codigo particular, donde usaremos dos variables una la llamaremos a y tendra el valor de 0 y otra la llamaremos i y tendra el valor de 10, despues usaremos un bucle for sin condiciones para poder generar un bucle infinito, primero incrementamos a la variable a, luego usamos el operador de resto entre i y a, hablamos sobre este operador en este post, y usaremos un condicional if, de esto hablaremos en el proximo post, donde chequea si el valor de este resto es igual a 0.

Si esto es verdad, nos muestra en la pantalla del Log el resultado de la division entre i y a, en caso de no ser cierto llama a continue, luego tenemos otro condicional donde verifica si la division entre i y a es igual a 1, si es verdad llama a break para salir del bucle, si lo ejecutan deberia devolver unos resultados semejantes a este:

10
5
2
1
Anuncios

Este programa solo te mostrara el resultado de la division entre numeros primos y omitira a los que no sean, por ejemplo si nos mostro el resultado de la operacion 10/1 y 10/2 pero nos omitio con el continue la operacion 10/3 o 10/6 y este bucle termino cuando llego a 10/10, es decir cuando a llego a este valor.

Anuncios

En resumen, hoy hemos visto todos los bucles disponibles en el lenguaje, hemos visto sus sintaxis y conductas, tambien hemos visto como salir de un bucle infinito y un poco de como trabaja un condicional, 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