Ciclos anidados y acumuladores: estructuras complejas en PSeInt
¿Qué son los ciclos anidados?
Imagina que tienes que organizar los asientos de un salón de clases. Primero necesitas recorrer cada fila (eso sería un ciclo), y dentro de cada fila, necesitas revisar cada asiento (eso sería otro ciclo dentro del primero). Esto es exactamente lo que hacen los ciclos anidados: son ciclos dentro de otros ciclos.
En PSeInt, un ciclo anidado se ve así:
Para fila <- 1 Hasta 5 Con Paso 1 Hacer
Para columna <- 1 Hasta 4 Con Paso 1 Hacer
Escribir "Fila: ", fila, " Columna: ", columna
FinPara
FinPara
En este ejemplo, por cada vuelta del ciclo externo (filas), el ciclo interno (columnas) se ejecuta completamente. Si tenemos 5 filas y 4 columnas, el programa imprimirá 20 combinaciones diferentes.
¿Para qué sirven los ciclos anidados?
Los ciclos anidados son muy útiles para:
- Trabajar con tablas o matrices
- Crear patrones de dibujo con asteriscos
- Generar tablas de multiplicar
- Procesar datos bidimensionales (como las posiciones en un tablero de ajedrez)
¿Qué son los acumuladores?
Un acumulador es como una alcancía donde vas guardando dinero poco a poco. En programación, es una variable que va sumando (o acumulando) valores a medida que el programa se ejecuta.
Por ejemplo:
suma <- 0 // Iniciamos el acumulador en 0
Para i <- 1 Hasta 10 Con Paso 1 Hacer
suma <- suma + i // Vamos acumulando cada número
FinPara
Escribir "La suma total es: ", suma
Este programa suma todos los números del 1 al 10, y el resultado sería 55.
Tipos de acumuladores
Existen diferentes tipos de acumuladores según lo que necesitemos:
- Acumulador de suma: suma valores (suma <- suma + valor)
- Acumulador de producto: multiplica valores (producto <- producto * valor)
- Contador: cuenta cuántas veces ocurre algo (contador <- contador + 1)
Regla importante: Siempre debes inicializar (darle un valor inicial) a tu acumulador antes del ciclo. Para sumas y contadores usa 0, y para productos usa 1.
Combinando ciclos anidados con acumuladores
Aquí es donde las cosas se ponen interesantes. Podemos usar acumuladores dentro de ciclos anidados para resolver problemas más complejos.
Ejemplo práctico: Calcular la suma de todos los números en una tabla de 3x3
Algoritmo SumaTabla
suma <- 0 // Acumulador inicializado
Para fila <- 1 Hasta 3 Con Paso 1 Hacer
Para columna <- 1 Hasta 3 Con Paso 1 Hacer
Escribir "Ingrese el número de la posición [", fila, ",", columna, "]"
Leer numero
suma <- suma + numero // Acumulamos cada número
FinPara
FinPara
Escribir "La suma total de todos los números es: ", suma
FinAlgoritmo
En este programa, el ciclo externo recorre las filas, el ciclo interno recorre las columnas, y el acumulador va sumando cada número que ingresamos.
Consejos para usar ciclos anidados y acumuladores
- Planifica antes de programar: Dibuja en papel cómo debe funcionar tu programa
- Usa nombres claros: En lugar de "i" y "j", usa "fila" y "columna" para entender mejor tu código
- Prueba con números pequeños: Primero prueba con tablas de 2x2 antes de hacer una de 10x10
- Cuida la indentación: Esto te ayuda a ver claramente qué ciclo está dentro de cuál
- Revisa tus inicializaciones: No olvides inicializar tus acumuladores antes de los ciclos