You are on page 1of 2

AC

08 e 09
Criando calendário
Atividade a ser realizada em duplas.
Prazo final: Sexta-feira, 26 de Outubro de 2018 – 12h (meio dia)
Submeter o arquivo .py

Atenção! Não é permitido o uso da biblioteca Calendar ou semelhante.


Vamos ao problema de exibir o calendário mensal de
qualquer mês e ano entre 1800 e 2099.

Representação: o mês e o ano, o número de dias de


cada mês, os nomes dos dias da semana, o dia da
semana e em qual dia da semana cai o primeiro dia do
mês.

Organizar seu programa usando funções em Python.





1a. Etapa*: Determinar quantos dias no mês / Ano Bissexto
*Esta etapa já foi realizada anteriormente.

Para determinar quantos dias tem um determinado mês, temos que tratar o mês
de fevereiro, verificando quando o ano é bissexto. Escreva uma função chamada
anoBissexto que recebe o ano e retorna um valor booleano True ou False
informando se o ano dado é bissexto ou não. O ano é bissexto quando a condição
seguinte é verdadeira:

(year % 4 == 0) and (not (year % 100 == 0) or (year % 400 == 0))

Considere que o usuário deseja gerar quantos calendários deseja. O Processo
termina quando o mês for igual a -1. Escreva uma função que interage com o
usuário chamada Main.
Utilize uma variável do tipo flag que executa um laço infinito enquanto desejar


2a. etapa: Determinar o dia da semana que uma determinada data cai.

Escreva uma função chamada diaSemana que recebe como parâmetro o mês, dia e
ano (todos do tipo inteiro) e retorna o dia da semana para o primeiro dia. Considere
o seguinte algoritmo.

Para determinar o dia da semana dada o mês, dia e ano (todos do tipo inteiro):
1. Seja variável century_digits = os dois primeiros dígitos do ano;
2. Seja a variável year_digits = os dois últimos dígitos do ano;
3. Seja a variável value = year_digits + (year_digits//4);
4. Se century_digits == 18 então adiciona 2 a value. Caso contrário, se century_digits == 20
adiciona 6 a value.
5. Se o mes é igual a janeiro e o ano não é bissexto, adiciona 1 a value. Caso contrário,
a. Se o mes é igual a Fevereiro e o ano é bissexto, adiciona 3 a value. Se o ano não é
bissexto adiciona 4 a value. Caso contrário,
b. Se o mes é igual a Março ou Novembro adiciona 4 a value. Caso contrário,
c. Se o mes é igual a Abril ou Julho adiciona 0 a value. Caso contrário,
d. Se o mes é igual a Maio adiciona 2 a value. Caso contrário,
e. Se o mes é igual a Junho adiciona 5 a value. Caso contrário,
f. Se o mes é igual a Agosto adiciona 3 a value. Caso contrário,
g. Se o mes é igual a Outubro adiciona 1 a value. Caso contrário,
h. Se o mes é igual a Setembro ou Dezembro adiciona 6 a value.
6. A variável value é baseado no dia do mês. Mas desejamos para o dia da semana:
a. value= (value + dia) % 7
7. Se value é igual a 1 então o dia da semana é Domingo. Caso contrário,
a. Se value é igual a 2 então o dia da semana é Segunda. Caso contrário,
b. Se value é igual a 3 então o dia da semana é Terça. Caso contrário,
c. Se value é igual a 4 então o dia da semana é Quarta. Caso contrário,
d. Se value é igual a 5 então o dia da semana é Quinta. Caso contrário,
e. Se value é igual a 6 então o dia da semana é Sexta. Caso contrário,
f. Se value é igual a 0 então o dia da semana é Sábado.

Para o dia da semana considere a seguinte representação:

1 2 3 4 5 6 0

Domingo Segunda Terça Quarta Quinta Sexta Sábado

A entrada de dados deve contemplar uma mensagem de erro caso o usuário


digite valores inválidos.

You might also like