Fala galera da programação, tudo beleza? 💻 Novo exercício na área para aprimorar a nossa lógica de programação.
Dica do exercício:
Para simplificar o problema, converta cada par de valores em um único valor em minutos. 🕒
Neste exercício, podemos aprender várias coisas:
Vamos aos códigos!
/****************************************************************************** Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br *******************************************************************************/ #include <iostream> using namespace std; int main() { int Hi, Mi, Hf, Mf; int inicio_minutos, fim_minutos, duracao_minutos; // Leitura dos valores de entrada cout << "Digite a hora inicial (Hi Mi): "; cin >> Hi >> Mi; cout << "Digite a hora final (Hf Mf): "; cin >> Hf >> Mf; // Convertendo hora inicial e final para minutos inicio_minutos = Hi * 60 + Mi; fim_minutos = Hf * 60 + Mf; // Calculando a duração do evento em minutos if (fim_minutos > inicio_minutos) { duracao_minutos = fim_minutos - inicio_minutos; } else { duracao_minutos = (24 * 60 - inicio_minutos) + fim_minutos; } // Convertendo a duração de minutos para horas e minutos int duracao_horas = duracao_minutos / 60; int duracao_minutos_resto = duracao_minutos % 60; // Exibindo o resultado cout << "A duração do evento é de " << duracao_horas << " horas e " << duracao_minutos_resto << " minutos." << endl; return 0; }
Esse programa lê os valores de entrada representando a hora e minuto inicial (Hi, Mi) e a hora e minuto final (Hf, Mf) do evento. Em seguida, converte esses valores para minutos, calcula a duração do evento em minutos e, por fim, converte a duração de volta para horas e minutos, exibindo o resultado.
A estratégia utilizada neste programa foi:
/****************************************************************************** Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br *******************************************************************************/ #include <stdio.h> int main() { int Hi, Mi, Hf, Mf; int inicio_minutos, fim_minutos, duracao_minutos; // Leitura dos valores de entrada printf("Digite a hora inicial (Hi Mi): "); scanf("%d %d", &Hi, &Mi); printf("Digite a hora final (Hf Mf): "); scanf("%d %d", &Hf, &Mf); // Convertendo hora inicial e final para minutos inicio_minutos = Hi * 60 + Mi; fim_minutos = Hf * 60 + Mf; // Calculando a duração do evento em minutos if (fim_minutos > inicio_minutos) { duracao_minutos = fim_minutos - inicio_minutos; } else { duracao_minutos = (24 * 60 - inicio_minutos) + fim_minutos; } // Convertendo a duração de minutos para horas e minutos int duracao_horas = duracao_minutos / 60; int duracao_minutos_resto = duracao_minutos % 60; // Exibindo o resultado printf("A duração do evento é de %d horas e %d minutos.\n", duracao_horas, duracao_minutos_resto); return 0; }
Este programa em C faz exatamente a mesma coisa que o programa em C++. Ele lê os valores de entrada, realiza os cálculos e exibe o resultado. Enquanto C++ usa cout
e cin
, C usa printf
e scanf
para entrada/saída.
{ Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br } program CalculaDuracaoEvento; var Hi, Mi, Hf, Mf: Integer; inicio_minutos, fim_minutos, duracao_minutos: Integer; duracao_horas, duracao_minutos_resto: Integer; begin // Leitura dos valores de entrada Write('Digite a hora inicial (Hi Mi): '); Readln(Hi, Mi); Write('Digite a hora final (Hf Mf): '); Readln(Hf, Mf); // Convertendo hora inicial e final para minutos inicio_minutos := Hi * 60 + Mi; fim_minutos := Hf * 60 + Mf; // Calculando a duração do evento em minutos if fim_minutos > inicio_minutos then duracao_minutos := fim_minutos - inicio_minutos else duracao_minutos := (24 * 60 - inicio_minutos) + fim_minutos; // Convertendo a duração de minutos para horas e minutos duracao_horas := duracao_minutos div 60; duracao_minutos_resto := duracao_minutos mod 60; // Exibindo o resultado WriteLn('A duração do evento é de ', duracao_horas, ' horas e ', duracao_minutos_resto, ' minutos.'); end.
Este programa em Pascal realiza as mesmas operações que os programas anteriores, lendo os valores de entrada, calculando a duração do evento e exibindo o resultado. Em Pascal, a entrada é feita usando Readln
e a saída usando Write
ou WriteLn
. A declaração de variáveis vem antes do bloco principal do programa.
''' Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br ''' # Leitura dos valores de entrada Hi, Mi = map(int, input("Digite a hora inicial (Hi Mi): ").split()) Hf, Mf = map(int, input("Digite a hora final (Hf Mf): ").split()) # Convertendo hora inicial e final para minutos inicio_minutos = Hi * 60 + Mi fim_minutos = Hf * 60 + Mf # Calculando a duração do evento em minutos if fim_minutos > inicio_minutos: duracao_minutos = fim_minutos - inicio_minutos else: duracao_minutos = (24 * 60 - inicio_minutos) + fim_minutos # Convertendo a duração de minutos para horas e minutos duracao_horas = duracao_minutos // 60 duracao_minutos_resto = duracao_minutos % 60 # Exibindo o resultado print("A duração do evento é de", duracao_horas, "horas e", duracao_minutos_resto, "minutos.")
Este programa em Python realiza as mesmas operações que os programas anteriores, lendo os valores de entrada, calculando a duração do evento e exibindo o resultado. Python é uma linguagem de alto nível, por isso não há necessidade de declaração de tipo de variável e a sintaxe é mais simplificada em comparação com C e Pascal.
/****************************************************************************** Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br *******************************************************************************/ using System; class Program { static void Main() { // Leitura dos valores de entrada Console.Write("Digite a hora inicial (Hi Mi): "); string[] inicio = Console.ReadLine().Split(); int Hi = int.Parse(inicio[0]); int Mi = int.Parse(inicio[1]); Console.Write("Digite a hora final (Hf Mf): "); string[] fim = Console.ReadLine().Split(); int Hf = int.Parse(fim[0]); int Mf = int.Parse(fim[1]); // Convertendo hora inicial e final para minutos int inicio_minutos = Hi * 60 + Mi; int fim_minutos = Hf * 60 + Mf; // Calculando a duração do evento em minutos int duracao_minutos; if (fim_minutos > inicio_minutos) duracao_minutos = fim_minutos - inicio_minutos; else duracao_minutos = (24 * 60 - inicio_minutos) + fim_minutos; // Convertendo a duração de minutos para horas e minutos int duracao_horas = duracao_minutos / 60; int duracao_minutos_resto = duracao_minutos % 60; // Exibindo o resultado Console.WriteLine($"A duração do evento é de {duracao_horas} horas e {duracao_minutos_resto} minutos."); } }
Este programa em C# realiza as mesmas operações que os programas anteriores, lendo os valores de entrada, calculando a duração do evento e exibindo o resultado. C# é uma linguagem fortemente tipada, então é necessário fazer a conversão explícita dos valores lidos para os tipos desejados.
/****************************************************************************** Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br *******************************************************************************/ import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // Leitura dos valores de entrada System.out.print("Digite a hora inicial (Hi Mi): "); int Hi = scanner.nextInt(); int Mi = scanner.nextInt(); System.out.print("Digite a hora final (Hf Mf): "); int Hf = scanner.nextInt(); int Mf = scanner.nextInt(); // Convertendo hora inicial e final para minutos int inicio_minutos = Hi * 60 + Mi; int fim_minutos = Hf * 60 + Mf; // Calculando a duração do evento em minutos int duracao_minutos; if (fim_minutos > inicio_minutos) duracao_minutos = fim_minutos - inicio_minutos; else duracao_minutos = (24 * 60 - inicio_minutos) + fim_minutos; // Convertendo a duração de minutos para horas e minutos int duracao_horas = duracao_minutos / 60; int duracao_minutos_resto = duracao_minutos % 60; // Exibindo o resultado System.out.println("A duração do evento é de " + duracao_horas + " horas e " + duracao_minutos_resto + " minutos."); scanner.close(); } }
Este programa em Java realiza as mesmas operações que os programas anteriores, lendo os valores de entrada, calculando a duração do evento e exibindo o resultado. Java é uma linguagem fortemente tipada e orientada a objetos, então é necessário utilizar classes como Scanner
para entrada de dados.
/****************************************************************************** Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br *******************************************************************************/ use std::io; fn main() { // Leitura dos valores de entrada println!("Digite a hora inicial (Hi Mi): "); let mut inicio = String::new(); io::stdin().read_line(&mut inicio).expect("Falha ao ler entrada."); let inicio: Vec<i32> = inicio.trim().split_whitespace() .map(|x| x.parse().expect("Valor inválido.")) .collect(); let Hi = inicio[0]; let Mi = inicio[1]; println!("Digite a hora final (Hf Mf): "); let mut fim = String::new(); io::stdin().read_line(&mut fim).expect("Falha ao ler entrada."); let fim: Vec<i32> = fim.trim().split_whitespace() .map(|x| x.parse().expect("Valor inválido.")) .collect(); let Hf = fim[0]; let Mf = fim[1]; // Convertendo hora inicial e final para minutos let inicio_minutos = Hi * 60 + Mi; let fim_minutos = Hf * 60 + Mf; // Calculando a duração do evento em minutos let duracao_minutos = if fim_minutos > inicio_minutos { fim_minutos - inicio_minutos } else { (24 * 60 - inicio_minutos) + fim_minutos }; // Convertendo a duração de minutos para horas e minutos let duracao_horas = duracao_minutos / 60; let duracao_minutos_resto = duracao_minutos % 60; // Exibindo o resultado println!("A duração do evento é de {} horas e {} minutos.", duracao_horas, duracao_minutos_resto); }
Em Rust, a entrada é tratada usando a biblioteca padrão std::io
, enquanto a conversão de tipos é mais explícita usando parse()
e expect()
para tratamento de erros. A linguagem enfatiza a segurança de memória e a prevenção de erros de tempo de execução.
/****************************************************************************** Criado pelo Professor Giovani Da Cruz https://giovanidacruz.com.br *******************************************************************************/ package main import ( "fmt" ) func main() { // Leitura dos valores de entrada var Hi, Mi, Hf, Mf int fmt.Print("Digite a hora inicial (Hi Mi): ") fmt.Scan(&Hi, &Mi) fmt.Print("Digite a hora final (Hf Mf): ") fmt.Scan(&Hf, &Mf) // Convertendo hora inicial e final para minutos inicioMinutos := Hi*60 + Mi fimMinutos := Hf*60 + Mf // Calculando a duração do evento em minutos var duracaoMinutos int if fimMinutos > inicioMinutos { duracaoMinutos = fimMinutos - inicioMinutos } else { duracaoMinutos = (24*60 - inicioMinutos) + fimMinutos } // Convertendo a duração de minutos para horas e minutos duracaoHoras := duracaoMinutos / 60 duracaoMinutosResto := duracaoMinutos % 60 // Exibindo o resultado fmt.Printf("A duração do evento é de %d horas e %d minutos.\n", duracaoHoras, duracaoMinutosResto) }
Este programa em Go realiza as mesmas operações que os programas anteriores, lendo os valores de entrada, calculando a duração do evento e exibindo o resultado. Go é uma linguagem compilada, concorrente e de tipagem estática, e sua sintaxe é mais simples e concisa em comparação com algumas outras linguagens.
Neste exercício, exploramos como resolver um problema simples de cálculo de duração de evento em diferentes linguagens de programação, como C++, C, Pascal, Python, C#, Java, Rust e Go. Ao escrever e comparar as soluções em várias linguagens, pudemos observar as diferentes sintaxes, abordagens e características de cada uma. A prática nos permitiu entender melhor como lidar com entrada/saída, fazer cálculos básicos, controlar o fluxo do programa e manipular tipos de dados em cada linguagem.
Beleza pessoal? Espero que tenham gostado!
Dúvidas ou sugestões de outras linguagens? Deixe o seu comentário!
Um abraço e até o próximo post. Valeu!
#Programação
#DesenvolvimentoDeSoftware
#LinguagensDeProgramação
#GiovaniDaCruz
Está gostando do conteúdo?
Considere pagar um cafezinho para nossa equipe!