El bucle WHILE

El bucle WHILE

La función básica del bucle WHILE es permitir la repetición de un bloque de código mientras se cumpla una condición. El bucle WHILE es un tipo de bucle indeterminado, ya que no se sabe con anticipación cuantas veces se va a ejecutar el contenido de su código, sino mas bien hasta cuando se va a ejecutar. Es importante destacar que para que el flujo del programa entre a ejecutar el código del bloque al menos una vez se debe cumplir la condición previamente, o lo que es lo mismo debe devolver TRUE la evaluación de la condición WHILE. Otro punto importante a tomar en cuenta es que en algún punto dentro del bloque de código la condición debe dejar de cumplirse o el programa se ejecutará en un ciclo infinito.


La sintaxis básica de la instrucción de bucle de repetición WHILE es la siguiente:

WHILE <condición a evaluar>:
    este bloque de código se ejecutará de manera repetida mientras la condición evaluada sea TRUE. En     este mismo bloque debería en algún momento cambiarse la condición evaluada para que su                    evaluación resulte FALSE y el flujo del programa pase a la siguiente instrucción luego del bloque        del WHILE.

Nota: al igual que en la sentencia condicional IF, en el bucle WHILE se colocan dos puntos (:) al final de la condición a evaluar.

Veamos un ejemplo del uso del bucle WHILE para motrar por pantalla los numeros del 0 al 9:

iContador=0
while iContador < 10:
    print(f'El valor de la variable iContador es {iContador}')
    iContador += 1

El resultado del código anterior sería el siguiente:

El valor de la variable iContador es 0
El valor de la variable iContador es 1
El valor de la variable iContador es 2
El valor de la variable iContador es 3
El valor de la variable iContador es 4
El valor de la variable iContador es 5
El valor de la variable iContador es 6
El valor de la variable iContador es 7
El valor de la variable iContador es 8
El valor de la variable iContador es 9

Como podemos ver el programa termina al momento de la variable iContador obtener un valor de 10 (la décima vez que se ejecuta el bloque de código gracias al operador de incremento (usando operadores en asignación) que suma 1 a dicha variable cada vez que el flujo del programa pase por esa línea de código). Nótese que no se puede ver el mensaje que dice que el valor de la variable iContador es 10 ya que la condición es que sea menor estricto que 10 y al evaluarse si es menor que 10 el resultado booleano es FALSE, terminando de esta manera el bucle WHILE.

En el ejemplo anterior se sabía de antemano cuantas veces se iba a ejecutar el bucle WHILE ya que la condición de salida esta implícita en la lógica del programa. Sin embargo es posible que la condición de salida dependa de la ejecución del código que lo compone, como por ejemplo el ingreso de un valor determinado por el usuario. Vamos a crear un ejemplo en donde se ejecute el bucle WHILE de manera indefinida hasta que se introduzca un valor válido de edad, es decir si se ingresan valores de edad menores a 0 o mayores a 100 se repetirá el bucle hasta que el usuario ingrese un valor de edad entre 0 y 100 años:

import os

iEdad = -1
while iEdad <0 or iEdad > 100:
    os.system('cls')
    print('* * * PROGRAMA DE VALIDACION DE EDAD * * *')    
    iEdad=int(input('Introduzca su edad: '))
    if iEdad <0 or iEdad> 100:
        print(f'Error: Edad {iEdad} no válida, por favor introduzca un valor entre 0 y 100')
        _=input('Presione <ENTER> tecla para continuar...')
    else:
        print('Edad introducida: ' + str(iEdad) + ' muchas gracias.')
print('Fin del programa')

Resultado ingresando -45:


* * * PROGRAMA DE VALIDACION DE EDAD * * *
Introduzca su edad: -45
Error: Edad -45 no válida, por favor introduzca un valor entre 0 y 100
Presione <ENTER> tecla para continuar...

Resultado ingresando 150:

* * * PROGRAMA DE VALIDACION DE EDAD * * *
Introduzca su edad: 150
Error: Edad 150 no válida, por favor introduzca un valor entre 0 y 100
Presione <ENTER> tecla para continuar...

Resultado ingresando 49:

* * * PROGRAMA DE VALIDACION DE EDAD * * *
Introduzca su edad: 49
Edad introducida: 49 muchas gracias.
Fin del programa

Podemos comprobar como las veces que se va a ejecutar el código dentro del bucle WHILE ya no es posible saberse debido a que depende enteramente de una condición externa al programa y es, en este caso, que el usuario ingrese un valor válido de edad.

Nota importante: en algunas situaciones de programación conviene crear un bucle infinito, aunque la explicación de estos casos no esta dentro de los objetivos de este apartado, si es necesario puntualizar que un bucle infinito no implica necesariamente un error de programación ni una mala práctica. Un ejemplo sería la programación de hilos de ejecución de un programa o un programa en segundo plano realizando una tarea de manera indefinida.

Comentarios

Entradas populares