Java
Bucles
11/11/2019
Conociendo lo que son las estructuras condicionales, podemos pasar al siguiente tema: bucles.
Un bucle es una estructura que permite repetir un conjunto de instrucciones un número determinado de veces. ¿Y cual es su utilidad? Mayormente ahorrarnos tiempo y líneas de código. Solo imagina tener que repetir 300 veces la misma instruccion para insertar datos en una lista. Más nos conviene utilizar un bucle el cual nos consume solo 3 líneas de código, y repetirá el proceso las veces que queramos.
Existen varias estructuras repetitivas. En este artículo veremos las 3 más básicas.
Escructura for
Es la mas utilizada de todas, o al menos desde un punto de vista personal. Al declarar un for debemos indicarle 3 condiciones en el siguiente orden:
- Condicion de inicio
- Condicion de fín
- Condicion de salto
Quizas al intentar explicarlo de esta forma no queda muy claro. Con un ejemplo se comprendera mejor:
1 for(int i = 0; i < 50; i++){ 2 //Conjunto de instrucciones 3 }
¿Que estamos haciendo? Lo primero que hice fue crear una variable de tipo int dentro del for, y le asigno el valor 0. Luego, debo indicar hasta que valor debe llegar el bucle. Al indicar i < 50, le estoy diciendo al programa que debe repetir las instrucciones hasta una unidad antes del 50, es decir, hasta 49. Finalmente, la condición de salto es i++. Si hacemos memoria, recordaremos que cuando una variable esta precedida por un ++, indica que esta aumentará su valor en una unidad (Si deseas repasar esto, podrás encontrarlo en la entrada sobre operadores).
Entonces este bucle se repetirá 50 veces. Pero, ¿no que el bucle llegaba hasta 49? Es correcto. Pero también es correcto que el bucle empieza cuando i = 0, y cuando se complete el conjunto de instrucciones por primera vez, la variable aumentara su valor por primera vez (es decir, valdra 1).
Si indicaramos que la condición de fin es i <= 50, entonces el conjunto de instrucciones se repetiría 51 veces. Hay que tener esto en cuenta al utilizar la estructura for para evitar situaciones no deseadas.
A continuación un ejemplo mas completo de este bucle:
1 public class Prueba{ 2 public static void main(String[] args){ 3 int i = 0; 4 int final = 50; 5 for(i = 0; i < final; i++){ 6 //Conjunto de instrucciones 7 } 8 } 9 }
Algunas aclaraciones antes de terminar: notese que las variable i puede declararse tanto dentro como fuera del bucle. A su vez se puede comparar dicha variable con otra con un valor previamente definido. En cuanto al por que se usa una letra i, se debe a la palabra index o indice en español.
Estructura while
While, en español "mientras", sirve para repetir un conjunto de instrucciones mientras que un condicion sea verdadera.
1 public class Prueba{ 2 public static void main(String[] args){ 3 int i = 0; 4 while(i < 50){ 5 //Conjunto de instrucciones 6 } 7 } 8 }
En el ejemplo puede verse como se declara la estructura while. Nota que si utilizas ese ejemplo tal cual esta escrito, obtendras un ERROR. En el bucle while debe declararse por dentro alguna operación que haga que en algun momento la condición establecida sea falsa para poder salir del bucle. De lo contrario, se creará un bucle infinito. Para arreglar este error, basta con agregar un i++ dentro de la estructura repetitiva.
1 public class Prueba{ 2 public static void main(String[] args){ 3 int i = 0; 4 while(i < 50){ 5 //Conjunto de instrucciones 6 i++; 7 } 8 } 9 }
Estructura do-while
Este tipo de bucle es igual que la estructura while, pero se diferencian en una sola cosa: una estructura do-while se repetirá al menos una vez, mientras que la estructura while puede repetirse 0 o N veces (0 veces considerando que la condicion es falsa desde un primer instante).
Cada vez que me encuentro en situación donde necesito usar un do-while se me viene este meme a la mente:
Continuando con la lección, así sería un ejemplo con la estructura do-while:
1 public class Prueba{ 2 public static void main(String[] args){ 3 int i = 0; 4 do{ 5 //Conjunto de instrucciones 6 i++; 7 } while(i < 50) 8 } 9 }
Eso fue todo sobre bucles o estructuras repetitivas.