Sesión 10
Unidad 2 · De ciclos aislados a soluciones completas con arreglos
Navegación: ← → · Home / End · F pantalla completa · Táctil: desliza
Unidad 2 · De ciclos aislados a soluciones completas con arreglos
Navegación: ← → · Home / End · F pantalla completa · Táctil: desliza
Problema: El usuario ingresa N calificaciones de estudiantes (entre 0.0 y 5.0). Se requiere:
Versión extendida: se desea, además, conocer cuántos estudiantes están en una franja específica (ej. entre 4.0 y 5.0).
Este problema está alineado con la tarea “Resolviendo un problema con ciclos mediante una solución iterativa en C#” de la Unidad 2. [file:54]
Observa cómo la combinación de contador, acumulador y comparaciones permite obtener todas las métricas sin guardar cada nota individualmente.
Mientras las preguntas de negocio se limiten a métricas agregadas simples, esta estrategia es suficiente.
Cuando necesitamos reusar los datos en varias operaciones, se vuelve imprescindible almacenarlos en estructuras como arreglos o listas.
Imagina una fila de casillas de correo en un edificio. Cada casilla:
En C#, un arreglo ocupa un bloque contiguo de memoria RAM, lo que hace el acceso por índice extremadamente rápido.
| Índice (i) | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| notas[i] | 4.5 | 3.2 | 1.8 | 5.0 | 2.7 |
| Estudiante | 1 | 2 | 3 | 4 | 5 |
⚠ El índice va de 0 a Length − 1. Para 5 elementos: índices 0, 1, 2, 3, 4. El índice 5 provoca IndexOutOfRangeException.
Regla de oro: los índices válidos siempre son 0 hasta notas.Length - 1. En un arreglo de 5 elementos: posiciones 0, 1, 2, 3 y 4. Nunca se usa el índice 5.
Úsalo cuando necesitas el índice, modificar elementos o comparar posiciones adyacentes.
Úsalo cuando solo lees los datos y no necesitas saber la posición. El código queda más limpio.
| ¿Qué necesito? | for con índice | foreach |
|---|---|---|
| Solo leer todos los elementos | ✓ | ✓ (preferido) |
| Modificar elementos del arreglo | ✓ | ✗ |
| Acceder al número de posición (i) | ✓ | ✗ |
| Recorrer en orden inverso | ✓ | ✗ |
Separar fases hace más sencilla la lectura, depuración y posterior modularización en funciones de esta lógica.
La tarea “Resolviendo un problema con ciclos mediante una solución iterativa en C#” pide diseñar y programar una solución que use ciclos, contadores, acumuladores y (en la versión extendida) estructuras de datos para procesar entradas múltiples. [file:54]
Se propone, en equipos pequeños, extender la solución con arreglos para responder al menos dos de estas preguntas:
El énfasis no está en la “cantidad de código”, sino en la solidez del razonamiento iterativo y en la capacidad de traducir requisitos en ciclos bien definidos.