Contenido verificado asociado a este RA
Control de Flujo I: Estructuras de Selección
Esta unidad introduce las estructuras de selección condicional (if-else, switch) que permiten a los programas tomar decisiones y ejecutar diferentes bloques de código según el cumplimiento de ciertas condiciones. Se explora su sintaxis, lógica y aplicación práctica para dirigir el flujo de ejecución.
Control de Flujo II: Estructuras de Repetición y Sentencias de Salto
Esta unidad aborda las estructuras de repetición (bucles) que permiten ejecutar un bloque de código múltiples veces, y las sentencias de salto que modifican el flujo normal de ejecución dentro de estos bucles o funciones.
Control de Excepciones: Gestión de Errores en Tiempo de Ejecución
Esta unidad explica cómo manejar situaciones inesperadas o errores que ocurren durante la ejecución de un programa (excepciones), utilizando bloques `try-catch-finally` para prevenir caídas y mantener la robustez de la aplicación.
Creación, Prueba, Depuración y Documentación de Programas con Estructuras de Control
Esta unidad integra el uso de todas las estructuras de control aprendidas en la creación de programas ejecutables, enfatizando las prácticas esenciales de prueba, depuración y documentación para asegurar la calidad y mantenibilidad del código.
Conceptos clave
Condición booleanaBloque de códigoAnidamientoFall-throughSentencia `if`Sentencia `else`Sentencia `else if`Sentencia `switch`Sentencia `case`Sentencia `default`Sentencia `break`Bucle `for`Bucle `while`Bucle `do-while`IteraciónBucle infinitoSentencia `continue`Sentencia `return`
Errores que conviene evitar
- **Olvidar `break` en `switch`:** Causa que la ejecución continúe en el siguiente `case` (fall-through), llevando a comportamientos inesperados. **Corrección:** Añadir `break;` al final de cada bloque `case` a menos que el 'fall-through' sea intencional y documentado.
- **Condiciones incorrectas en `if`:** Usar operadores de asignación (`=`) en lugar de comparación (`==`) o construir lógicas booleanas erróneas. **Corrección:** Revisar cuidadosamente los operadores y la tabla de verdad de las expresiones lógicas.
- **Anidamiento excesivo de `if-else`:** Dificulta la lectura y el mantenimiento del código. **Corrección:** Refactorizar usando `else if`, `switch`, o extraer lógica a funciones separadas para mejorar la claridad.
- **Bucle infinito en `while`/`do-while`:** Ocurre si la condición de salida nunca se vuelve falsa. **Causa:** No modificar la variable de la condición dentro del bucle o modificarla incorrectamente. **Corrección:** Asegurarse de que haya una instrucción que eventualmente haga que la condición del bucle sea falsa.
- **Error 'off-by-one' en `for`:** La condición del bucle (`<` vs `<=`) o la inicialización/actualización es incorrecta, lo que lleva a una iteración de más o de menos. **Causa:** Confusión con índices base cero o límites inclusivos/exclusivos. **Corrección:** Probar los límites del bucle con valores mínimos y máximos esperados.
- **Uso excesivo de `break`/`continue`:** Puede hacer que el flujo del programa sea difícil de seguir (spaghetti code). **Causa:** Intentar forzar la lógica en un bucle inadecuado o no refactorizar. **Corrección:** Considerar si una estructura de control diferente o una función separada podría simplificar la lógica.
- **Capturar `Exception` genérica demasiado pronto:** `catch (Exception e)` captura cualquier tipo de excepción, lo que puede ocultar errores específicos y dificultar la depuración. **Causa:** Pereza o desconocimiento de los tipos de excepción específicos. **Corrección:** Capturar excepciones específicas primero y usar `Exception` solo como último recurso o para errores realmente inesperados.
- **Ignorar excepciones:** Un bloque `catch` vacío o que solo imprime un `printStackTrace()` sin manejar el error de forma significativa. **Causa:** No querer lidiar con el error o no entender sus implicaciones. **Corrección:** Siempre proporcionar una lógica de manejo de errores significativa: registrar el error, notificar al usuario, intentar una recuperación o terminar el programa de forma controlada.