Sunteți pe pagina 1din 7

FACULTAD DE INGENIERÍA 

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 

S-ar putea să vă placă și