Faça um procedimento que transforme e mostre segundos em horas, minutos em segundos. Todas as variáveis devem ser passadas como parâmetros, não havendo variáveis globais.
Passo 1
Beleza, a questão pede pra gente criar um procedimento que receba um valor em segundos e transforme isso em horas, minutos e segundos, mostrando o resultado. O conteúdo envolvido é aritmética de inteiros (divisão inteira e resto da divisão) e passagem de parâmetros em procedimentos, sem usar variável global.
Passo 2
Antes de tudo, vamos entender duas operações básicas:
- Divisão inteira (
div
): quando você faz, por exemplo,7 div 3
, o resultado é2
(a parte inteira). - Resto da divisão (
mod
): quando você faz7 mod 3
, o resultado é1
(o que sobra).
Na teoria de números, se
é o total de segundos, aí vale:
Passo 3
Calcular as horas a partir de
:
ou, em código,
Horas := TotalSegundos div 3600;
Passo 4
Depois de tirar as horas, sobra um resto de segundos que a gente usa pra achar os minutos. Primeiro o resto:
Para achar os minutos:
em código:
Resto := TotalSegundos mod 3600;
Minutos := Resto div 60;
Passo 5
Finalmente, o que sobrou depois de tirar os minutos é o número de segundos:
em código:
Segundos := Resto mod 60;
Passo 6
Agora que sabemos as fórmulas, é só montar o procedimento passando tudo por parâmetro. Em Pascal, por exemplo, ficaria assim:
Resposta
procedure ConverteSegundos(TotalSegundos: Integer;
var Horas, Minutos, Segundos: Integer);
var
Resto: Integer;
begin
// calcula horas
Horas := TotalSegundos div 3600;
// calcula o que sobra depois de tirar as horas
Resto := TotalSegundos mod 3600;
// calcula minutos a partir desse resto
Minutos := Resto div 60;
// o que sobra depois dos minutos são os segundos finais
Segundos := Resto mod 60;
// mostra o resultado
Writeln('Horas: ', Horas,
', Minutos: ', Minutos,
', Segundos: ', Segundos);
end;