Fala galera da programação, tudo beleza?
📅💻 Explore a manipulação de datas e descubra como calcular o dia anterior em várias linguagens de programação! Aprenda algoritmos, lógica condicional e muito mais neste desafio divertido.
Considerações
Para facilitar, considerar que os anos bissextos são aqueles divisíveis por 4.
Assim o mês 2 (fevereiro) possui 28 dias, exceto nos anos bissextos, nos quais possui 29 dias.
Abril (4), junho(6), setembro(9) e novembro(11) possuem 30 dias e os demais 31 dias.
Dica do Exercício
Subtrair 1 unidade do dia, se o resultado for menor que 1, determinar o mes anterior, seão já está tudo ok.
Quando for necessário determinar o mês anterior (subtrair 1 do mesmo, se o resultado for menor que 1, atribuir 12 para o mês e determinar o ano anterior subtraindo 1 do ano; determinar o dia considerando a quantidade de dias do mês calculado)
Manipulação de datas: Aprender como manipular datas e realizar operações básicas, como adição e subtração de dias, meses e anos.
Lógica de programação: Desenvolver habilidades em lógica de programação, especialmente em termos de estruturas de controle, como condicionais (if-else) e laços (se necessário).
Uso de funções: Praticar a definição e uso de funções para organizar o código e evitar repetições.
Trabalho com múltiplas variáveis: Ganhar experiência em lidar com múltiplas variáveis e entender como elas interagem entre si em um programa.
Conceitos matemáticos: Revisar conceitos matemáticos básicos, como divisão, módulo e operações aritméticas.
Tratamento de exceções: Considerar casos especiais, como anos bissextos, e aprender como lidar com essas situações em um programa.
Exemplo em pseudocódigo
1. Ler o dia, mês e ano 2. Subtrair 1 do dia 3. Se o dia for menor que 1, então: 4. Subtrair 1 do mês 5. Se o mês for menor que 1, então: 6. Atribuir 12 ao mês 7. Subtrair 1 do ano 8. Determinar o número de dias no mês anterior: 9. Se o mês for fevereiro (2), então: 10. Se o ano for bissexto, atribuir 29 dias ao mês anterior 11. Caso contrário, atribuir 28 dias ao mês anterior 12. Se o mês for abril (4), junho (6), setembro (9) ou novembro (11), atribuir 30 dias ao mês anterior 13. Caso contrário, atribuir 31 dias ao mês anterior 14. Atribuir o número de dias ao dia 15. Escrever o dia anterior (dia, mês e ano)
Essa estratégia é eficaz para calcular a data anterior com base em uma data fornecida pelo usuário, considerando adequadamente as variações nos meses e anos.
''' Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br ''' # Função para determinar se o ano é bissexto def bissexto(ano): return ano % 4 == 0 and (ano % 100 != 0 or ano % 400 == 0) # Ler o dia, mês e ano dia = int(input("Digite o dia: ")) mes = int(input("Digite o mês: ")) ano = int(input("Digite o ano: ")) # Subtrair 1 do dia dia -= 1 # Verificar se o dia é menor que 1 if dia < 1: # Subtrair 1 do mês mes -= 1 # Verificar se o mês é menor que 1 if mes < 1: # Atribuir 12 ao mês mes = 12 # Subtrair 1 do ano ano -= 1 # Determinar o número de dias no mês anterior if mes == 2: # Fevereiro if bissexto(ano): dias_mes_anterior = 29 else: dias_mes_anterior = 28 elif mes in [4, 6, 9, 11]: # Abril, Junho, Setembro, Novembro dias_mes_anterior = 30 else: dias_mes_anterior = 31 # Atribuir o número de dias ao dia dia = dias_mes_anterior # Escrever o dia anterior print("O dia anterior é:", dia, mes, ano)
Esse código irá ler uma data e imprimir a data correspondente ao dia anterior.
/****************************************************************************** Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br *******************************************************************************/ #include <iostream> using namespace std; // Função para determinar se o ano é bissexto bool bissexto(int ano) { return ano % 4 == 0 && (ano % 100 != 0 || ano % 400 == 0); } int main() { int dia, mes, ano; // Ler o dia, mês e ano cout << "Digite o dia: "; cin >> dia; cout << "Digite o mês: "; cin >> mes; cout << "Digite o ano: "; cin >> ano; // Subtrair 1 do dia dia--; // Verificar se o dia é menor que 1 if (dia < 1) { // Subtrair 1 do mês mes--; // Verificar se o mês é menor que 1 if (mes < 1) { // Atribuir 12 ao mês mes = 12; // Subtrair 1 do ano ano--; } // Determinar o número de dias no mês anterior int dias_mes_anterior; if (mes == 2) { // Fevereiro if (bissexto(ano)) { dias_mes_anterior = 29; } else { dias_mes_anterior = 28; } } else if (mes == 4 || mes == 6 || mes == 9 || mes == 11) { // Abril, Junho, Setembro, Novembro dias_mes_anterior = 30; } else { dias_mes_anterior = 31; } // Atribuir o número de dias ao dia dia = dias_mes_anterior; } // Escrever o dia anterior cout << "O dia anterior é: " << dia << " " << mes << " " << ano << endl; return 0; }
Este código em C++ faz exatamente o mesmo que o código Python, lê uma data e imprime a data correspondente ao dia anterior.
{ Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br } program DataAnterior; // Função para determinar se o ano é bissexto function bissexto(ano: integer): boolean; begin bissexto := (ano mod 4 = 0) and ((ano mod 100 <> 0) or (ano mod 400 = 0)); end; var dia, mes, ano, dias_mes_anterior: integer; begin // Ler o dia, mês e ano write('Digite o dia: '); readln(dia); write('Digite o mês: '); readln(mes); write('Digite o ano: '); readln(ano); // Subtrair 1 do dia dia := dia - 1; // Verificar se o dia é menor que 1 if dia < 1 then begin // Subtrair 1 do mês mes := mes - 1; // Verificar se o mês é menor que 1 if mes < 1 then begin // Atribuir 12 ao mês mes := 12; // Subtrair 1 do ano ano := ano - 1; end; // Determinar o número de dias no mês anterior if mes = 2 then // Fevereiro begin if bissexto(ano) then dias_mes_anterior := 29 else dias_mes_anterior := 28; end else if (mes = 4) or (mes = 6) or (mes = 9) or (mes = 11) then // Abril, Junho, Setembro, Novembro dias_mes_anterior := 30 else dias_mes_anterior := 31; // Atribuir o número de dias ao dia dia := dias_mes_anterior; end; // Escrever o dia anterior writeln('O dia anterior é: ', dia, ' ', mes, ' ', ano); end.
Esse código em Pascal realiza a mesma tarefa que os códigos em Python e C++, lendo uma data e imprimindo a data correspondente ao dia anterior.
/****************************************************************************** Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br *******************************************************************************/ using System; class Program { // Função para determinar se o ano é bissexto static bool IsBissexto(int ano) { return ano % 4 == 0 && (ano % 100 != 0 || ano % 400 == 0); } static void Main(string[] args) { int dia, mes, ano, diasMesAnterior; // Ler o dia, mês e ano Console.Write("Digite o dia: "); dia = int.Parse(Console.ReadLine()); Console.Write("Digite o mês: "); mes = int.Parse(Console.ReadLine()); Console.Write("Digite o ano: "); ano = int.Parse(Console.ReadLine()); // Subtrair 1 do dia dia--; // Verificar se o dia é menor que 1 if (dia < 1) { // Subtrair 1 do mês mes--; // Verificar se o mês é menor que 1 if (mes < 1) { // Atribuir 12 ao mês mes = 12; // Subtrair 1 do ano ano--; } // Determinar o número de dias no mês anterior if (mes == 2) // Fevereiro { if (IsBissexto(ano)) diasMesAnterior = 29; else diasMesAnterior = 28; } else if (mes == 4 || mes == 6 || mes == 9 || mes == 11) // Abril, Junho, Setembro, Novembro diasMesAnterior = 30; else diasMesAnterior = 31; // Atribuir o número de dias ao dia dia = diasMesAnterior; } // Escrever o dia anterior Console.WriteLine($"O dia anterior é: {dia} {mes} {ano}"); } }
Este código em C# realiza a mesma tarefa que os códigos em Python, C++ e Pascal, lê uma data e imprime a data correspondente ao dia anterior.
/****************************************************************************** Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br *******************************************************************************/ import java.util.Scanner; public class Main { // Função para determinar se o ano é bissexto static boolean isBissexto(int ano) { return ano % 4 == 0 && (ano % 100 != 0 || ano % 400 == 0); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int dia, mes, ano, diasMesAnterior; // Ler o dia, mês e ano System.out.print("Digite o dia: "); dia = scanner.nextInt(); System.out.print("Digite o mês: "); mes = scanner.nextInt(); System.out.print("Digite o ano: "); ano = scanner.nextInt(); // Subtrair 1 do dia dia--; // Verificar se o dia é menor que 1 if (dia < 1) { // Subtrair 1 do mês mes--; // Verificar se o mês é menor que 1 if (mes < 1) { // Atribuir 12 ao mês mes = 12; // Subtrair 1 do ano ano--; } // Determinar o número de dias no mês anterior if (mes == 2) { // Fevereiro if (isBissexto(ano)) diasMesAnterior = 29; else diasMesAnterior = 28; } else if (mes == 4 || mes == 6 || mes == 9 || mes == 11) { // Abril, Junho, Setembro, Novembro diasMesAnterior = 30; } else { diasMesAnterior = 31; } // Atribuir o número de dias ao dia dia = diasMesAnterior; } // Escrever o dia anterior System.out.println("O dia anterior é: " + dia + " " + mes + " " + ano); } }
Este código em Java realiza a mesma tarefa que os códigos em Python, C++, C# e Pascal, lê uma data e imprime a data correspondente ao dia anterior.
Neste exercício, exploramos a manipulação de datas em diferentes linguagens de programação, incluindo Python, C++, C#, Java e Pascal. A tarefa consistiu em escrever um programa que lê uma data fornecida pelo usuário e imprime a data correspondente ao dia anterior, levando em consideração as peculiaridades dos meses e anos bissextos.
Durante a implementação, lidamos com diversos aspectos, como lógica condicional para verificar limites, manipulação de strings e conversão de tipos de dados para entrada/saída, e utilizamos funções para determinar se um ano é bissexto.
Este exercício nos proporcionou uma oportunidade valiosa para praticar habilidades essenciais de programação, incluindo resolução de problemas, pensamento lógico e implementação de algoritmos. Além disso, nos permitiu familiarizar com as características específicas de cada linguagem, como a sintaxe, a manipulação de entradas/saídas e as convenções de estilo.
Em resumo, através deste exercício, ampliamos nosso conhecimento sobre manipulação de datas e fortalecemos nossa proficiência em diferentes linguagens de programação.
Beleza pessoal? Espero que tenham gostado!
Dúvida ou sugestões? Deixe o seu comentário.
Um abraço e até o próximo post. Valeu!
#Programação
#Datas
#Algoritmos
#GiovaniDaCruz
Está gostando do conteúdo?
Considere pagar um cafezinho para nossa equipe!