Programación de Software

¿Alguna vez te has preguntado cómo saber qué día de la semana cayó o caerá una fecha específica? Ya sea por curiosidad, para planificar eventos o por motivos de programación, este problema tiene una solución eficiente mediante un algoritmo. En este post, te explicaremos paso a paso cómo crear un programa que te permita determinar el día de la semana para cualquier fecha, utilizando un enfoque claro y práctico.


Caso o Ejercicio: Determinar el Día de la Semana para una Fecha

El objetivo es crear un algoritmo que, al recibir una fecha en formato día, mes y año, devuelva el día de la semana correspondiente (lunes, martes, miércoles, etc.). Este tipo de cálculos es útil en aplicaciones de calendarios, recordatorios o incluso en sistemas de gestión de tareas.

Datos de Entrada

Para resolver este problema, necesitamos los siguientes datos de entrada:

  1. Día: Un número entero entre 1 y 31 (dependiendo del mes).
  2. Mes: Un número entero entre 1 y 12.
  3. Año: Un número entero (por ejemplo, 2023).

Proceso del Ejercicio

El algoritmo se basa en la fórmula de Zeller, una fórmula matemática que permite calcular el día de la semana para cualquier fecha del calendario gregoriano. Los pasos son los siguientes:

🌟 ¡Visita Nuestra Tienda para Programadores! 🌟

Descubre Códigos Fuente, Cursos, Software, Computadoras, Accesorios y Regalos Exclusivos. ¡Todo lo que necesitas para llevar tu programación al siguiente nivel!

  1. Ajustar el mes y el año si el mes es enero o febrero (se consideran como meses 13 y 14 del año anterior).
  2. Aplicar la fórmula de Zeller para obtener un número que represente el día de la semana.
  3. Asignar el número resultante a un día específico (0 = sábado, 1 = domingo, 2 = lunes, etc.).

Salidas

El programa devolverá el día de la semana correspondiente a la fecha ingresada, en formato de texto (por ejemplo, «Lunes»).

Código del Ejercicio

def dia_de_la_semana(dia, mes, año):
    if mes < 3:
        mes += 12
        año -= 1
    # Fórmula de Zeller
    K = año % 100
    J = año // 100
    h = (dia + ((13 * (mes + 1)) // 5) + K + (K // 4) + (J // 4) + (5 * J))
    h = h % 7
    # Asignar el resultado a un día de la semana
    dias = ["Sábado", "Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes"]
    return dias[h]

# Ejemplo de uso
dia = 25
mes = 12
año = 2023
print(f"El día {dia}/{mes}/{año} cae en: {dia_de_la_semana(dia, mes, año)}")

Explicación del Código

  1. Ajuste de Mes y Año: Si el mes es enero (1) o febrero (2), se ajusta a 13 o 14 respectivamente, y el año se reduce en 1. Esto es necesario para la fórmula de Zeller.
  2. Fórmula de Zeller: La fórmula calcula un valor h que representa el día de la semana. Se utilizan operaciones matemáticas como división entera y módulo para obtener este valor.
  3. Asignación del Día: El valor h se mapea a un día de la semana utilizando una lista de días.

Ejemplo al Ejecutar el Ejercicio

Si ejecutamos el código con la fecha 25 de diciembre de 2023, obtendremos el siguiente resultado:

El día 25/12/2023 cae en: Lunes

Esto nos indica que el 25 de diciembre de 2023 será un lunes.

Lograste crear un algoritmo para saber que día cae una fecha

Este algoritmo es una herramienta poderosa y sencilla para determinar el día de la semana de cualquier fecha. Utilizando la fórmula de Zeller, podemos resolver este problema de manera eficiente y aplicarlo en diversos contextos, desde aplicaciones de calendario hasta sistemas de programación avanzada. Con este conocimiento, ya no tendrás que adivinar o buscar manualmente en qué día cae una fecha importante.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *