Contenido del capítulo

Los bucles infinitos en programación suelen ser provocados por error, al hacer algún tipo de fallo lógico, como poner mal la expresión de salida o por incrementar o decrementar mal el iterador.

Duración estimada de todo el contenido:
Duración del vídeo:
Contiene 2 ejercicios de programación para resolver. Contiene 1 vídeo.
Tabla de contenidos
Logo

    ¿Qué son los bucles infinitos?

    Bucles infinitos
    Bucles infinitos

    Un bucle infinito, es aquel que no tiene fin. Es el que se sigue ejecutando de forma ilimitada hasta que cerramos el programa o la consola.

    Bucle infinito en inglés se dice infinite loop.

    Espacio publicitario

    A veces, esto será a propósito y otras por error. Hacerlo por error, puede tener consecuencias:

    • Los programas pueden consumir grandes cantidades de recursos, como memoria y CPU, lo que provoca ralentizaciones y bloqueos del sistema.
    • Si alguien malintencionado se percata de este fallo en el programa puede que lo aproveche para algún mal propósito.
    • El programa se congelará o irá muy lento.
    • El programa puede generar datos no válidos.

    ¿Cómo se producen los bucles infinitos?

    Los bucles infinitos son fáciles de producir. Mira un ejemplo en la siguiente página:

    Algoritmo bucle_repetir
    
        // Se declara y solicita el valor del iterador
        Definir i Como Entero
        Escribir "Introduzca un número del 0 al 5."
        Leer i
    
        // Bucle Repetir
        Repetir
            Escribir "El valor del bucle es: ", i
            //i <- i + 1 A este bucle le falta el paso (incremento o decremento)
    Hasta Que i > 5
    
    FinAlgoritmo

    He anulado la parte que incrementa el iterador con un comentario. Es como si me lo hubiera olvidado de poner. En ese caso, el bucle nunca finaliza. Si le pongo un 4 en la consola, esto es lo que sale:

    Bucle infinito en la consola

    El bucle se ejecuta muchas veces, haciendo que el consumo de CPU suba por encima de lo normal. Si esto manejase muchos datos, también se consumiría mucha memoria RAM y velocidad de procesador. Mira lo simple que es el ejemplo, y un procesador de 16 núcleos a 2.3 GHz, lo tengo trabajando como ves en la imagen, solo por ese bucle infinito que tan solo escribe una frase repetidamente en la consola.

    Bucle infinito gasto de recursos CPU

    Bucles infinitos a propósito

    Habrá muchas ocasiones en las que tendrás que crear bucles infinitos a propósito. Por ejemplo, para mantener abierta la ventana de un programa con interfaz gráfica. Lo importante, es que esta ejecución esté controlada y haya alguna forma de salir del bucle cuando el usuario quiera. Por ejemplo, un botón para salir.

    Una interfaz gráfica es la forma en que se llaman los programas que tienen botones, menús y diferentes elementos interactivos. Por ejemplo, PSeInt es un programa que tiene interfaz gráfica. En cambio, nuestros programas hasta el momento, son solo de consola, no tienen elementos gráficos, son solo texto. A los programas de interfaz gráfica se les denomina también como GUI.

    GUI son las siglas de Graphical User Interface.

    En español significa Interfaz Gráfica de Usuario.

    Espacio publicitario




    Espacio publicitario


    Ejercicios de programación para resolver

    Analiza el código y responde un par de preguntas sin ejecutarlo. Si tienes dudas, consulta la solución o ejecuta el código.

    Algoritmo bucle_repetir
    
        // Se declara y solicita el valor del iterador
        Definir i Como Entero
        Escribir "Introduzca un número: "
        Leer i
    
        // Bucle Repetir
        Repetir
            Escribir "El valor del bucle es: ", i
            //i <- i + 1
        Hasta Que i < 3
    
    FinAlgoritmo

    38. Si en el Leer, en la consola, le introduzco el valor 2, ¿tengo un bucle infinito?

    39. Si en el Leer, en la consola, le introduzco el valor 7, ¿tengo un bucle infinito?

    38. Con el valor 2 no genera un bucle infinito.

    39. Con el valor 7, sí genera un bucle infinito.



    Espacio publicitario