En esta sección, exploraremos estructuras de control avanzadas que permiten manejar el flujo de un programa de manera más eficiente y flexible. Estas estructuras incluyen el uso de switch/case
, bucles anidados, y el manejo de excepciones. Al final de esta sección, deberías ser capaz de implementar estas estructuras en tus programas para resolver problemas más complejos.
Contenido
switch/case
- Bucles anidados
- Manejo de excepciones
switch/case
switch/case
El switch/case
es una estructura de control que permite seleccionar una de varias alternativas basadas en el valor de una expresión. Es una alternativa más legible y eficiente que múltiples sentencias if-else
cuando se trata de comparar una variable con varios valores posibles.
Sintaxis
# Ejemplo en Python usando diccionario para simular switch/case def switch_case_example(value): switcher = { 1: "Opción 1", 2: "Opción 2", 3: "Opción 3" } return switcher.get(value, "Opción no válida") # Uso print(switch_case_example(1)) # Salida: Opción 1 print(switch_case_example(4)) # Salida: Opción no válida
Ejercicio
Escribe una función que utilice un switch/case
para convertir una calificación numérica (0-10) en una letra (A-F).
def calificacion_a_letra(calificacion): switcher = { 10: 'A', 9: 'A', 8: 'B', 7: 'C', 6: 'D', 5: 'E', 4: 'F', 3: 'F', 2: 'F', 1: 'F', 0: 'F' } return switcher.get(calificacion, "Calificación no válida") # Prueba la función print(calificacion_a_letra(9)) # Salida: A print(calificacion_a_letra(4)) # Salida: F
- Bucles Anidados
Los bucles anidados son bucles dentro de otros bucles. Son útiles para trabajar con estructuras de datos multidimensionales, como matrices.
Ejemplo
# Imprimir una matriz de 3x3 for i in range(3): for j in range(3): print(f"({i},{j})", end=" ") print()
Ejercicio
Escribe un programa que imprima una tabla de multiplicar del 1 al 5.
- Manejo de Excepciones
El manejo de excepciones permite gestionar errores en tiempo de ejecución de manera controlada, evitando que el programa se detenga abruptamente.
Sintaxis
try: # Código que puede causar una excepción resultado = 10 / 0 except ZeroDivisionError: # Código que se ejecuta si ocurre una excepción print("Error: División por cero") finally: # Código que se ejecuta siempre, ocurra o no una excepción print("Operación finalizada")
Ejercicio
Escribe una función que divida dos números y maneje la excepción de división por cero.
def dividir(a, b): try: resultado = a / b except ZeroDivisionError: return "Error: División por cero" else: return resultado finally: print("Operación finalizada") # Prueba la función print(dividir(10, 2)) # Salida: 5.0 print(dividir(10, 0)) # Salida: Error: División por cero
Conclusión
En esta sección, hemos explorado estructuras de control avanzadas como switch/case
, bucles anidados y el manejo de excepciones. Estas herramientas te permitirán escribir programas más robustos y eficientes. Asegúrate de practicar estos conceptos con los ejercicios proporcionados para reforzar tu comprensión. En el próximo módulo, profundizaremos en funciones y procedimientos, lo que te permitirá modularizar y organizar mejor tu código.
Fundamentos de la Programación
Módulo 1: Introducción a la Programación
- ¿Qué es la programación?
- Historia de la programación
- Lenguajes de programación
- Entornos de desarrollo