Fazer uma função que recebe um mês e um ano como parâmetros e retorna o número de dias daquele mês daquele ano. Dica: um ano é bissexto quando é múltiplo de 4 e não múltiplo de 100, ou também quando é múltiplo de 400 .

Passo 1

Beleza, então a ideia é: criar uma função que receba dois parâmetros, mês e ano, e devolva quantos dias aquele mês tem naquele ano. O assunto aqui é lógica de programação básica, especialmente estruturas condicionais (if/else) e a regra de ano bissexto. Para resolver a gente vai precisar:
  • Saber quais meses têm 30 dias e quais têm 31.
  • Tratar fevereiro (que muda entre 28 e 29 dias dependendo se o ano é bissexto).
  • Entender como testar “divisibilidade” usando o operador módulo ( ).

Passo 2

Primeiro, lembrando a teoria dos meses:
  • Meses com 31 dias: janeiro (1), março (3), maio (5), julho (7), agosto (8), outubro (10), dezembro (12).
  • Meses com 30 dias: abril (4), junho (6), setembro (9), novembro (11).
  • Fevereiro (2) tem 28 ou 29.
Em código a gente vai agrupar esses grupos e, se o mês for fevereiro, cai num tratamento especial.

Passo 3

Agora, a parte de ano bissexto. Regra:
  1. Ano múltiplo de 4: bissexto ;=; l(ano bmod 4 = 0 ;wed>=; ano bmod 100 neq 0r) ;lor; l(ano bmod 400 = 0r)
  2. Exceto se for múltiplo de 100: a não ser que também seja múltiplo de 400: .
Ou seja, em fórmula lógica:
Se isso der true, fevereiro tem 29 dias; senão, 28.

Passo 4

Bora montar a função em pseudocódigo (estilo Python, mas serve de guia pra qualquer linguagem):
def dias_no_mes(mes, ano):
    # 1) Verifica meses de 31 dias
    if mes in [1, 3, 5, 7, 8, 10, 12]:
        return 31

    # 2) Verifica meses de 30 dias
    elif mes in [4, 6, 9, 11]:
        return 30

    # 3) Se for fevereiro, checa bissexto
    elif mes == 2:
        eh_bissexto = ((ano % 4 == 0 and ano % 100 != 0) or (ano % 400 == 0))
        if eh_bissexto:
            return 29
        else:
            return 28

    # 4) Caso o mês seja inválido
    else:
        return "Mês inválido"
Explicando rapidinho:
  • Usamos mes in [...] só pra simplificar a checagem de grupos.
  • Para fevereiro, criamos a variável eh_bissexto aplicando a fórmula que vimos.
  • No final, cobrimos também o caso de mês inválido (por via das dúvidas).

Resposta

A função acima retorna o número de dias corretos de cada mês em qualquer ano, incluindo o tratamento de anos bissextos segundo a regra:
l(ano bmod 4 = 0 ;wed>=; ano bmod 100 neq 0r) ;lor; l(ano bmod 400 = 0r)
Fácil, né? É só seguir o passo a passo!

Exercícios relacionados