Estructuras de control: bucles

Llegamos a la joya de la corona, si nos pusiéramos melosos podría decir que los bucles son con lo que se fabrican los sueños. Ahora hablando más en serio, los bucles son el pilar fundamental de la programación y su potencial es enorme. Este artículo se complementa muy bien con el de Estructuras de datos así que recomiendo que se lean estos 2 de manera simultánea para una mejor comprensión.

Un bucle es una repetición de un bloque de código hasta que la condición deje de cumplirse, es decir, que escrito como más formalmente sería algo así:

Mientras (se cumpla una condicion):
   hacer algo
Es decir, que ese "hacer algo" se va a estar repitiendo hasta que la condición deje de cumplirse. Pero veamos un ejemplo práctico:

n = 10
n_entero = int(n)
i = 1
while i<= n_entero:
    print(i)
    i = i + 1

Analicemos este código: tenemos una condición que se debe cumplir para entrar a ejecutar el bloque de código. La condición dice que la variable i debe ser menor o igual que la variable n. Las variables i y n se han inicializado a 1 y 10, por tanto, como la condición 1 < 10 es verdad, entra dentro del bloque y mostrará por pantalla "1". La gracia de esto está en la siguiente instrucción porque vamos a modificar la variable que está en la condición: la i, y le vamos a sumar el valor 1. Por lo tanto, i vale ahora 2 y volvamos a preguntar por la condición: ¿2 es menor que 10? Sí, por tanto volvemos a entrar y mostramos visualmente 2. Podemos imaginarnos que esto sucederá sucesivamente hasta que la variable i llegue al valor 11, entonces cuando en la condición se pregunte: ¿11 es menor que 10? La respuesta es no, y por tanto no entrará dentro del bloque de código y hemos salido del bucle. Como diría cierto personaje de Marvel: "un gran poder conlleva una gran responsabilidad". Y es que un bucle tiene mucho potencial pero si se comete algún despiste el error puede ser catastrófico. Por ejemplo, qué pasaría si en este mismo código elimináramos la línea: "i= i + 1". Pues nada menos que provocaríamos el temido "bucle infinito". Un bucle infinito que mostraría por pantalla el 1 para siempre y por siempre. Moraleja: siempre debemos ver si la condición dejará de cumplirse en algún momento.

Como precisamente es tan peligroso usar este tipo de bucles donde depende del programador que se produzca un bucle infinito, otra tipo de bucles se crearon para conseguir repetir código de forma más segura: el for. Veamos el mismo ejemplo de antes usando el bucle for:

for i in range(11):
    print(i)
Esa línea deberíamos leerla tal que así: voy a recorrer un rango de números de 0 hasta 11 (no incluído), y ese recorrido me lo vas a ir guardando en la variable i. Osea que tendríamos un código exactamente equivalente al del bucle while. Solamente cambia que ya nos ha introducido la condición y el incremento del i. Como esto es solo para introducirnos en los bucles, no voy a entrar en más detalles pero en general se dice que el bucle for es un bucle de recorrido porque va a recorrer un listado de elementos, mientras que un bucle while sirve para buscar algo. Por tanto, si pensábamos que podíamos olvidarnos del while, me temo que no.

No hay comentarios:

Publicar un comentario

Semana 10 · Del 10/04/19 al 10/04/19

Hoy ha sido mi último día en el centro y en la primera hora he estado terminando el practicum en la sala de profesores, y después hemos teni...