Documente Academic
Documente Profesional
Documente Cultură
DEPARTAMENTO DE OPERACIONES Y SISTEMAS
ALGORITMIA Y PROGRAMACIÓN
Caso # 11
Un año bisiesto es aquel año, que es divisible por 4 y
no por 100 o es divisible por 400. Elabore un diseño
que permita determinar cuales de los siguientes años
es o no bisiesto:
a) 1984
b) 2020
c) 2011
d) 2013
e) 2016
DATOS DE ENTRADA (complete si es necesario):
• Año a evaluar (mayor o igual a 0)
…
DATOS DE SALIDA (complete si es necesario):
• …
DISEÑO
Dentro del proceso de diseño, se ha definido un método (principal, mostrado a
continuación) que realiza la lectura del año a evaluar, luego se determina si cumple con la
condición de año bisiesto y finalmente muestra el resultado de la evaluación. Se debe
realizar el diseño del subproceso (determinarAñoBisiesto) que cumple los requerimientos
solicitados.
RETO
A. El diseño propuesto se ejecuta 5 veces. Realice los cambios necesarios, para que el
ciclo se repita la cantidad conocida de veces indicada por el usuario.
B. Realice los cambios necesarios, para que el ciclo se repita una cantidad no conocida de
veces y esté controlada por una condición de finalización.
Algoritmia y Programación
Caso de Estudio: Decisiones # 11
Algoritmia y Programación
Caso de Estudio: Decisiones # 11
Algoritmia y Programación
Caso de Estudio: Decisiones # 11
IMPLEMENTACIÓN
Para la fase de implementación se ha construido el código correspondiente al método
principal, tanto en la versión CMD como en la GUI. Su equipo, debe adicionar el código
faltante para ejecutar las operaciones que se definieron en el diseño.
CMD
(Completar Código Faltante):
def determinarAñoBisiesto(año):
return (mensajeBisiesto)
(Principal):
def principal():
contadorAños = 0
while (contadorAños < 5):
entradaAño = int (input ("Ingrese el año: "))
mensajeBisiesto = determinarAñoBisiesto(entradaAño)
print(mensajeBisiesto)
contadorAños += 1
principal()
GUI
Algoritmia y Programación
Caso de Estudio: Decisiones # 11
(Completar Código Faltante):
def determinarAñoBisiesto(año):
return (mensajeBisiesto)
(Principal):
from tkinter import *
from tkinter import messagebox
def salir():
exit()
def principal():
global indice
if ( indice >= 5):
exit()
año = 0
try:
año = int (entradaAño.get())
error = False
except ValueError:
error = True
if(año < 0 or error):
messagebox.showerror(message="Año debe ser mayor a cero", title="Validando Año")
else:
mensajeBisiesto = determinarAñoBisiesto(año)
resultadoMensajeBisiesto.set(mensajeBisiesto)
indice += 1
indice = 0
(Definición de Interface Gráfica):
# ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
# Definicion Interface Grafica ‐ GUI
# ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
raiz = Tk()
raiz.title("GUI")
# Datos de entrada
labelEntradas = LabelFrame(raiz, text = "Entradas:")
labelEntradas.pack(padx = 10, pady = 10)
Algoritmia y Programación
Caso de Estudio: Decisiones # 11
# Valor Año
labelAño = Label(labelEntradas, text="Ingrese Año (aaaa):").grid(
row = 1, column = 0, sticky = "w", padx = 10, pady = 10)
entradaAño = Entry(labelEntradas)
entradaAño.grid(row = 1, column = 1, padx = 10, pady = 10)
# Datos de salida
labelSalidas = LabelFrame(raiz, text = "Salidas: ")
labelSalidas.pack(padx = 10, pady = 10)
# Valor mensaje de año bisiesto
labelMensajeBisiesto = Label(labelSalidas, text="Mensaje:").grid(
row = 0, column = 0, sticky = "w", padx = 10, pady = 10)
resultadoMensajeBisiesto = StringVar()
salidaMensajeBisiesto = Entry(labelSalidas, textvariable=resultadoMensajeBisiesto,
state = "disabled").grid(row = 0, column = 1, padx = 10, pady = 10)
# Botones
labelBotones = LabelFrame(raiz, text ="Acciones")
labelBotones.pack(padx = 10, pady = 10)
# Boton PROCESAR
botonProcesar = Button(labelBotones, text = "Procesar", width = 15, command = principal).grid(
row = 0, column = 0, sticky = "w", pady = 5, padx = 10)
# Boton SALIR
botonSalir = Button(labelBotones, text = "Salir", width = 15, command = salir).grid(
row = 0, column = 1, pady = 5, padx = 10)
# Ciclo de la aplicacion ‐ debe ir al final de todo
raiz.mainloop()
RETO
1. La implementación propuesta se ejecuta 5 veces. Realice los cambios necesarios, para
que el ciclo se repita la cantidad conocida de veces indicada por el usuario.
2. Realice los cambios necesarios, para que el ciclo se repita una cantidad no conocida de
veces y esté controlada por una condición de finalización.
Pruebe ambas implementaciones utilizando consola (CMD) y utilizando interface gráfica de
usuario (GUI).
PRUEBAS
Para la verificar la corrección del programa (que realice) lo que se supone que debe
hacer), se han establecido las siguientes pruebas, si equipo debe ejecutar el programa con
los valores indicados, si el resultado obtenido no corresponde a lo esperado, deben revisar
la razón de esa inconsistencia y corregirla.
AÑO Mensaje
PRUEBA 1 1984 Si es Bisiesto
PRUEBA 2 2020
Algoritmia y Programación
Caso de Estudio: Decisiones # 11
PRUEBA 3 2011
PRUEBA 4 2013 No es Bisiesto
PRUEBA 5 2016
Algoritmia y Programación
Caso de Estudio: Decisiones # 11