Qué es un ciclo
Mostrar la tabla del 7 escribiendo diez veces Escribir funciona, pero ¿y si fuera la tabla hasta el 100? Un ciclo (también llamado bucle o estructura repetitiva) escribe los pasos una vez y los repite las veces que haga falta.
Cada repetición se llama vuelta o iteración. Todo ciclo tiene una condición que decide si se da otra vuelta o si ya se termina. Hay tres formas de escribirlo, y la diferencia está en cuándo y cómo se revisa esa condición.
Para: cuando sabes cuántas veces
Para usa una variable que cuenta sola. Empieza en un valor, avanza de uno en uno y se detiene al llegar al final:
Algoritmo tabla_del_7
Para i <- 1 Hasta 10 Hacer
Escribir "7 x ", i, " = ", 7 * i
FinPara
FinAlgoritmo
Con Con Paso cambias cuánto avanza en cada vuelta. Un paso negativo cuenta hacia atrás:
Algoritmo cuenta_regresiva
Para i <- 10 Hasta 0 Con Paso -2 Hacer
Escribir i
FinPara
Escribir "¡Despegue!"
FinAlgoritmo
El final también puede ser una variable. Este programa calcula el factorial de un número (5! = 1 × 2 × 3 × 4 × 5):
Algoritmo factorial
Leer n
resultado <- 1
Para i <- 1 Hasta n Hacer
resultado <- resultado * i
FinPara
Escribir n, "! = ", resultado
FinAlgoritmo
No cambies el valor de i dentro de un Para: el ciclo lo maneja solo, y modificarlo a mano lleva a resultados confusos.
Mientras: repetir mientras algo sea cierto
Mientras revisa la condición antes de cada vuelta. Si es verdadera, ejecuta los pasos y vuelve a revisar. Si es falsa, sale del ciclo. Sirve cuando no sabes de antemano cuántas vueltas habrá. Por ejemplo, sumar números hasta que el usuario escriba 0:
Algoritmo suma_hasta_cero
suma <- 0
Leer n
Mientras n <> 0 Hacer
suma <- suma + n
Leer n
FinMientras
Escribir "Total: ", suma
FinAlgoritmo
Hay un Leer n antes del ciclo y otro al final de cada vuelta. El primero da el valor que se revisa la primera vez; el segundo da el siguiente. Si el primer número es 0, el ciclo no da ni una vuelta: Mientras puede repetirse cero veces.
En el diagrama de flujo, un ciclo es una flecha que regresa a la condición:
Repetir: al menos una vez
Repetir … Hasta Que revisa la condición después de cada vuelta, así que los pasos siempre se hacen por lo menos una vez. Es ideal para pedir un dato hasta que sea correcto:
Algoritmo contrasena
Repetir
Escribir "Contraseña:"
Leer clave
Hasta Que clave = "jaguar"
Escribir "Bienvenido"
FinAlgoritmo
Ojo con la lógica de la condición: Mientras sigue mientras sea verdadera, y Repetir … Hasta Que sigue hasta que sea verdadera. Son opuestas. Puedes practicar esta estructura en el reto de contraseña con Repetir.
Diferencias entre Para, Mientras y Repetir
| Para | Mientras | Repetir | |
|---|---|---|---|
| Úsalo cuando | Sabes cuántas vueltas | Repites mientras algo sea cierto | Debe hacerse al menos una vez |
| Revisa la condición | Antes de cada vuelta | Antes de cada vuelta | Después de cada vuelta |
| Vueltas mínimas | 0 | 0 | 1 |
| Termina cuando | El contador pasa del final | La condición es falsa | La condición es verdadera |
| Ejemplo típico | Tabla de multiplicar | Sumar hasta que escriban 0 | Pedir una contraseña |
Cualquier ciclo se puede escribir con Mientras, pero usar el adecuado hace el programa más corto y más claro.
Contadores y acumuladores
Casi todos los ejercicios de ciclos usan estas dos variables:
- Un contador suma 1 en cada vuelta en la que pasa algo:
aprobados <- aprobados + 1. Sirve para contar cuántos. - Un acumulador suma un valor que cambia:
suma <- suma + calificacion. Sirve para totales y promedios.
Los dos deben empezar en 0 antes del ciclo. Este programa lee 4 calificaciones, cuenta las aprobadas y calcula el promedio:
Algoritmo calificaciones
aprobados <- 0
suma <- 0
Para i <- 1 Hasta 4 Hacer
Leer calificacion
suma <- suma + calificacion
Si calificacion >= 6 Entonces
aprobados <- aprobados + 1
FinSi
FinPara
Escribir "Promedio: ", suma / 4
Escribir "Aprobados: ", aprobados
FinAlgoritmo
Un ciclo en la prueba de escritorio
La prueba de escritorio es la mejor forma de entender un ciclo, porque «desenrolla» las vueltas: la misma línea aparece una vez por cada repetición. Así se ve el factorial de 4:
| Paso | Línea | Instrucción | n | resultado | i | Pantalla |
|---|---|---|---|---|---|---|
| 1 | 3 | Leer n | 4 | |||
| 2 | 4 | resultado <- 1 | 4 | 1 | ||
| 3 | 5 | Para i <- 1 Hasta n Hacer | 4 | 1 | 1 | |
| 4 | 6 | resultado <- resultado * i | 4 | 1 | 1 | |
| 5 | 5 | Para i <- 1 Hasta n Hacer | 4 | 1 | 2 | |
| 6 | 6 | resultado <- resultado * i | 4 | 2 | 2 | |
| 7 | 5 | Para i <- 1 Hasta n Hacer | 4 | 2 | 3 | |
| 8 | 6 | resultado <- resultado * i | 4 | 6 | 3 | |
| 9 | 5 | Para i <- 1 Hasta n Hacer | 4 | 6 | 4 | |
| 10 | 6 | resultado <- resultado * i | 4 | 24 | 4 | |
| 11 | 5 | Para i <- 1 Hasta n Hacer | 4 | 24 | 4 | |
| 12 | 8 | Escribir n, "! = ", resultado | 4 | 24 | 4 | 4! = 24 |
Las celdas resaltadas muestran cómo i avanza y resultado crece en cada vuelta: 1, 2, 6, 24. Más sobre esta técnica en la guía de prueba de escritorio.
El ciclo infinito
Si nada dentro del ciclo cambia la condición, el ciclo nunca termina. Es el error más común con Mientras:
Algoritmo nunca_termina
i <- 1
Mientras i <= 3 Hacer
Escribir i
FinMientras
FinAlgoritmo
Aquí i vale 1 para siempre, porque falta i <- i + 1 dentro del ciclo. En papel no te das cuenta hasta que haces la prueba de escritorio. Jaguar detiene el programa cuando lleva demasiados pasos y te avisa, en vez de congelarse.
Antes de escribir un Mientras, pregúntate: ¿qué cambia en cada vuelta para que algún día la condición sea falsa?
Errores comunes
- No inicializar el contador o el acumulador antes del ciclo, o inicializarlo dentro (se reinicia en cada vuelta).
- Olvidar actualizar la variable de la condición en un
Mientras: ciclo infinito. - Dar una vuelta de más o de menos.
Para i <- 1 Hasta 10da 10 vueltas;Para i <- 0 Hasta 10da 11. - Invertir la condición del Repetir. «Repetir hasta que la clave sea correcta» se escribe
Hasta Que clave = "jaguar", no con<>. - Poner el
Escribirdel resultado dentro del ciclo, cuando solo debía mostrarse una vez al final.
Los mensajes que da Jaguar cuando un ciclo está mal escrito, con su explicación: errores al escribir un Para y bloques sin cerrar.
Preguntas frecuentes
¿Cuál es la diferencia entre Mientras y Repetir?
Mientras revisa la condición antes de cada vuelta, así que puede no ejecutarse ninguna vez. Repetir la revisa al final, así que siempre se ejecuta al menos una vez. Además, Mientras sigue mientras la condición sea verdadera y Repetir sigue hasta que lo sea.
¿Cuándo uso Para y cuándo Mientras?
Usa Para cuando sabes cuántas veces se repite, aunque ese número venga en una variable. Usa Mientras cuando la repetición depende de algo que no sabes de antemano, como que el usuario escriba 0.
¿Qué es un ciclo infinito?
Es un ciclo cuya condición nunca deja de cumplirse, normalmente porque olvidaste cambiar la variable que se revisa. El programa se repite sin terminar. Jaguar lo detiene y te avisa.
¿Qué es un acumulador?
Es una variable que va sumando valores en cada vuelta de un ciclo, como el total de una compra o la suma de calificaciones. Debe empezar en 0 antes del ciclo.