programacion-bucle-while

El bucle WHILE

El bucle WHILE es una estructura de control que repite un bloque de código mientras una condición se evalúe como verdadera.

En lenguaje natural, el bucle WHILE significa,

Mientras se cumpla esto -> haz esto

Que en forma de diagrama queda algo así:

programacion-bucle-while

Esquema WHILE

En cada iteración, se verifica la condición:

  • Si es true, se ejecuta el bloque de código
  • Si es false, el bucle se detiene y el programa continúa con la siguiente instrucción después del bucle

De esta forma, el bucle se repite mientras que la condición sea verdadera ( true).

La sintaxis general del bucle WHILE es la siguiente:

while(condicion)
{
    // Bloque de código a ejecutar mientras la condición sea verdadera
}

// resto de código

El bloque de código se ejecuta repetidamente mientras la condición sea verdadera. Si la condición se evalúa como falsa desde el principio, el bloque de código no se ejecutará en absoluto.

Ejemplos de bucles WHILE en distintos lenguajes

Vamos a ver algunos ejemplos de sintaxis del bucle WHILE en diferentes lenguajes de programación.

Por ejemplo, en C, C++, C# y Java un bucle for tiene la siguiente pinta:

int contador = 0;
while (contador < 10)
{
	// hacer algo
    contador++;
}

En el caso de JavaScript la sintaxis es muy similar. La única diferencia es la que vamos a inicializar la variable contador con let, en lugar de con el tipo de variable. Pero la sintaxis del While es idéntica:

let contador = 0;
while (contador < 10)
{
    contador++;
}

Por su parte en Python, la sintaxis del bloque WHILE también es muy parecida:

contador = 0
while contador < 10:    
    contador += 1

En este ejemplo, el bucle WHILE se ejecuta mientras la variable contador sea menor que 10. En cada iteración realizaríamos una acción, que podría emplear el valor de contador.

Después de cada iteración, se incrementa el contador en 1. Si no hiciéramos esto, la condición nunca se cumpliría, y caeríamos en un bucle infinito.

En este caso, para iniciar contador no es necesario declararlo de ninguna forma. Respecto al WHILE, Python define los bloques por indentado significativo, en lugar de por llaves. Además, carece del operador ++, por lo que empleamos +=1.

Aparte de estas diferencias de sintaxis, que son hasta divertidas, vemos que el concepto y funcionamiento del bucle WHILE es idéntico en los distintos lenguajes.

Funcionamiento interno Avanzado

A nivel interno, el bucle WHILE está formado por un salto condicional. A diferencia de una instrucción GO-TO, los saltos condicionales realizan un salto en la ejecución de código sólo si se cumple una condición.

Por tanto, tenemos que nuestro código llegaría a un salto condicional. Si la condición es cierta, la ejecución continua con el cuerpo del loop. Al llegar al final de este, el flujo vuelve a la condición, y vuelve a evaluarse.

programacion-bucle-while-saltos

Salto condicional generado por el WHILE

Cuando la condición no se cumple, el salto condicional mueve el flujo de ejecución fuera del cuerpo del bucle, continuando con el flujo del programa.

Como vemos, la estructura de un bucle WHILE y de un IF son muy similares. La diferencia es que en el caso del bucle, el salto del flujo de ejecución es “hacia atrás”. Esto es lo que le permite repetir varias veces el mismo código.