programacion-bucles

Qué son los bucles

Los bucles son estructuras de control que permiten repetir un conjunto de instrucciones varias veces. Junto con los condicionales, son dos de las herramientas más importantes a la hora de programar.

Está claro que los ordenadores son rápidos. Muy muy rápidos. Pero, precisamente por eso, no serían muy útiles si solo fueran capaz de hacer cada cosa una única vez.

Imagina que tienes un sistema para comprobar si un texto, que contiene un DNI, es correcto. El sitio donde destacan los ordenadores es con su capacidad para comprobar millones y millones por segundo.

Aquí es donde entra el concepto de “bucle” (loop en inglés). Es una estructura que permite repetir una acción múltiples veces, mientras se cumpla una condición. La condición es una expresión que evalúa a un booleano true o false.

Como vemos, tienen en común con los condicionales que ambos modifican el flujo del programa en función de una condición. De hecho, veremos en su momento que, bajo el capó, básicamente un condicional y un bucle son casi idénticos.

programacion-loop

Bucle básico

Los bucles son fundamentales en la programación ya que permiten automatizar tareas y realizar operaciones repetitivas de manera eficiente.

Entendiendo un bucle

Entender un bucle no es mucho más difícil que entender un condicional. De hecho, realizar bucles de acciones (tareas repetitivas) también es algo que hacemos en nuestra vida cotidiana con frecuencia.

Por ejemplo, imaginemos que tienes que hacer esto

Tengo que poner un sello a cada carta de este montón

Esto básicamente significa, coge una carta, ponle un sello, y mientras queden cartas en el montón repite la misma secuencia de acciones.

programacion-bucle-cartas

Mientras quedan cartas, cojo una y pongo sello

Esto sería un ejemplo de un bucle WHILE. En este caso, la condición es “¿quedan más cartas?” y la acción del bucle es “coge carta y ponle sello”. Lo cual expresado en código sería algo así.

while quedanCartas:
	# coger carta
    # poner sello

Otro ejemplo de bucle podría ser,

Tengo que poner un sello en 1500 cartas

En esta ocasión nos da igual que haya más cartas en el montón. En este caso debemos contar cuantas cartas hemos sellado, y cuando lleguemos a 1500 parar.

Así que la condición ahora sería “¿he puesto menos de 1500 sellos?” y la acción sería la misma “coge carta y ponle sello”. Para lo cual, tenemos que contar cuantas cartas hemos sellado anteriormente. Esto, expresado en código sería algo así,

contador = 0

while contador < 1500:
	# coger carta
    # poner sello
    contador = contador + 1

Esto sería un ejemplo de un bucle WHILE + CONTADOR. De hecho, es una estructura tan habitual, que la mayoría de lenguajes tienen un bucle específico para hacer esta acción, que llamamos bucle FOR.

Condición de parada

Probablemente el punto más importante de un bucle es la condición, o criterio de parada. Por ejemplo, si cometemos un error en la condición, y siempre se evalúa como TRUE, caeremos en un bucle infinito.

Por ejemplo, miramos el siguiente bucle.

while 1 < 2:
	# hacer algo

Donde hemos metido la pata, y hemos puesto una condición que siempre es TRUE. En esta caso, el programa se metería en el bucle, y nunca podría salir. A esto lo llamamos un bucle infinito.

Cuando nos metemos en un bucle infinito, nuestro programa queda atrapado en él sin poder salir. Se quedará consumiendo CPU, hasta que forcemos cerrar el programa, o reiniciemos el ordenador.

Evidentemente, en el ejemplo la condición es muy evidente que está mal. Pero cuando programes, en algún momento vas a meter un error menos evidente, que hará que tu programa caiga en un bucle infinito.

No te preocupes. Es algo que nos ha pasado a todos, y que en tu vida te pasará mil veces. Simplemente tienes que estar atento para que sepas lo que te está pasando. Lo arreglas, y a otra cosa mariposa.

Tipos de bucles

Existen varios tipos de bucles en programación, cada uno con sus propias características y usos. Los más comunes son los siguientes:

De todos ellos, el bucle WHILE el más básico de ellos. De hecho, los demás son variaciones de este. Es “el papá de los bucles”.

Debemos conocerlos todos, y usar adecuadamente el que mejor convenga en cada situación, para mejorar la legibilidad de nuestro código.