PSeInt se queda colgado: ciclo infinito, cómo detenerlo (2026)
Ejecutas tu programa y… nada. La ventana no responde, no muestra resultados y parece haberse quedado «colgada». En la gran mayoría de los casos no es que PSeInt se haya roto: tu programa entró en un ciclo infinito, un bucle cuya condición nunca deja de cumplirse. Aquí verás cómo detenerlo y cómo evitarlo.
Cómo detener un programa colgado
Cuando un programa no responde durante la ejecución, busca en la barra de herramientas de PSeInt el botón Detener (suele representarse con un cuadrado, como el «stop» de un reproductor) y púlsalo. Esto interrumpe la ejecución y te devuelve el control del editor.
Importante: detener el programa no borra ni daña tu código. Puedes pulsar Detener con tranquilidad, revisar el bucle sospechoso y volver a ejecutar cuando lo hayas corregido.
Si el botón Detener no respondiera (situación poco habitual), cerrar la ventana de ejecución también interrumpe el programa.
Causa 1: la condición del Mientras nunca se vuelve falsa
El caso más frecuente: un Mientras cuya condición siempre es verdadera porque nada dentro del bucle la modifica.
Proceso BucleInfinito
Definir x Como Entero;
x <- 1;
Mientras x < 10 Hacer
Escribir "x vale ", x;
FinMientras
FinProceso
x siempre vale 1, así que x < 10 nunca deja de cumplirse. La corrección habitual es actualizar la variable dentro del bucle:
Proceso BucleCorregido
Definir x Como Entero;
x <- 1;
Mientras x < 10 Hacer
Escribir "x vale ", x;
x <- x + 1;
FinMientras
FinProceso
Causa 2: el paso del Para va en la dirección equivocada
En un Para…Hasta, si el paso avanza en dirección contraria al límite, el contador nunca lo alcanza:
Proceso PasoIncorrecto
Definir i Como Entero;
Para i <- 1 Hasta 10 Con Paso -1 Hacer
Escribir i;
FinPara
FinProceso
El contador empieza en 1 y decrece, alejándose del 10 en cada vuelta. La solución es usar un paso positivo cuando el límite es mayor que el inicio (o replantear los límites del bucle).
Causa 3: olvidaste actualizar el contador
Variante de la causa 1: la condición sí podría volverse falsa, pero olvidaste la instrucción que actualiza la variable de control. Revisa que dentro del bucle exista una asignación que acerque la condición a su fin (x <- x + 1, intentos <- intentos - 1, etc.).
Señales de que estás ante un ciclo infinito
Antes de pulsar Detener, confirma el diagnóstico con estas señales:
- El programa no muestra ningún resultado nuevo desde hace un rato, pero tampoco muestra un mensaje de error.
- Si añadiste un
Escribirtemporal dentro del bucle, ves que la variable de control no avanza (siempre el mismo valor) o que los mensajes se repiten sin fin. - El consumo de CPU sube mientras la ventana de ejecución sigue abierta: el programa está trabajando, solo que en algo que nunca termina.
Con el diagnóstico confirmado, detén la ejecución y revisa la condición del bucle y la actualización de su variable de control: ahí está la causa en la gran mayoría de los casos.
Cómo prevenir los ciclos infinitos
- Verifica la condición de salida antes de ejecutar: pregúntate «¿qué hace que este bucle termine?» y señala la instrucción exacta que lo provoca.
- Comprueba el sentido del paso en los bucles
Para: si vas de menor a mayor, el paso debe ser positivo. - Prueba con valores pequeños primero: si el bucle debe repetirse 100 veces, pruébalo con 3 o 4 para confirmar que termina.
- Añade un Escribir temporal dentro del bucle mostrando la variable de control: verás inmediatamente si no avanza.
Nota honesta: un programa que tarda mucho no siempre está en un ciclo infinito; podría simplemente estar procesando datos grandes. Si tras un tiempo prudencial no hay ningún avance visible, detenerlo y revisar los bucles suele ser el camino correcto. Si el problema es que PSeInt ni siquiera abre, revisa la guía de PSeInt no abre.
