«El programa se detuvo porque llevaba demasiados pasos»

Este error aparece cuando un ciclo nunca termina, casi siempre porque dentro del ciclo no cambia nada que haga falsa la condición. Jaguar lo detiene para que el programa no se quede trabajando para siempre.

Qué significa

Error al ejecutar en la línea 4
El programa se detuvo porque llevaba demasiados pasos (1000000). Parece un ciclo que no termina. Dentro del Mientras o del Repetir debe cambiar algo, por ejemplo n <- n - 1, para que la condición deje de cumplirse.

Un ciclo repite sus instrucciones mientras se cumpla una condición. Si dentro del ciclo nada cambia lo que la condición revisa, la condición se cumple siempre y el ciclo nunca termina. Para que el programa no se quede trabajando para siempre, Jaguar cuenta los pasos y, al llegar a un límite, lo detiene y te avisa.

El número entre paréntesis es ese límite. Puede variar según dónde ejecutes el programa.

Ejemplos y cómo arreglarlos

El contador no avanza

Algoritmo contar
    i <- 1
    Mientras i < 5 Hacer
        Escribir i
    FinMientras
FinAlgoritmo

La condición pregunta si i es menor que 5, pero i siempre vale 1. Hay que hacerla crecer dentro del ciclo:

Algoritmo contar
    i <- 1
    Mientras i < 5 Hacer
        Escribir i
        i <- i + 1
    FinMientras
FinAlgoritmo

Una condición que nunca se logra

Con Repetir pasa igual: la condición de Hasta Que debe poder cumplirse algún día.

Algoritmo cuenta
    n <- 1
    Repetir
        n <- n + 1
    Hasta Que n = 0
FinAlgoritmo

Aquí n solo crece, así que nunca llega a 0. Se arregla con una condición que sí se alcance:

Algoritmo cuenta
    n <- 1
    Repetir
        n <- n + 1
    Hasta Que n >= 5
    Escribir n
FinAlgoritmo

Por qué aparece

  • Falta la instrucción que hace avanzar el ciclo: i <- i + 1.
  • El contador cambia en la dirección contraria a la condición: sube cuando debía bajar.
  • La condición revisa una variable distinta de la que cambia dentro del ciclo.
  • Un Mientras o un Repetir espera un dato con Leer que nunca llega al valor de salida.
  • Más raro: el programa sí termina, pero hace tantísimos pasos que supera el límite.

Cómo evitarlo

Antes de escribir un ciclo, responde: ¿qué variable cambia en cada vuelta y hacia dónde? Esa es la que debe estar en la condición. La prueba de escritorio lo muestra enseguida: si el valor de la variable de la condición es el mismo en todas las filas, el ciclo no avanza. Hay más sobre ciclos en la guía de Mientras, Para y Repetir.

Preguntas frecuentes

¿Puedo cambiar el límite de pasos?

El límite lo pone cada lugar donde se ejecuta el programa, y no lo eliges tú. En la herramienta de prueba de escritorio, un ciclo infinito no da este error: la tabla se corta en las primeras filas y avisa. Si tu programa es legítimo y muy pesado, revisa antes que no haya un ciclo infinito, porque casi siempre es eso.

¿Pasa con el ciclo Para?

Casi nunca, porque Para avanza solo. Solo puede pasar si el paso es 0, y en ese caso Jaguar avisa con otro mensaje.

¿Qué pasa si detengo el programa yo mismo?

En la app, el botón rojo de detener corta el programa en cualquier momento. El error de esta página es el que ponen las pruebas automáticas cuando nadie puede detenerlo.

Sigue aprendiendo