Ir ao conteúdo
  • Cadastre-se

Como criar um relógio com data no pascal?


Visitante: Dj.Ágape

Posts recomendados

Visitante: Dj.Ágape
 

Estou tentando fazer um relógio com data, no pascal.

O Relógio esta pronto, mas não estou conseguindo pensar em uma lógica para

adicionar a data...

O relógio ficou assim:


uses crt;
var hora,minuto,segundo : integer;

Begin
textcolor(09);
writeln('R e l o g i o 2 4 H o r a s');
writeln('---------------------------------------');
textcolor(15);
write('Digite a Hora Atual(0 a 23): ');
readln(hora);
while hora > 23 do
begin
textcolor(12);
write('Hora Invalida. Digite Novamente -->(0 a 23): ');
readln(hora);
end;
textcolor(15);
write('Digite o Minuto Atual(0 a 59): ');
readln(minuto);

while minuto > 59 do
begin
textcolor(12);
write('Minuto Invalido. Digite Novamente -->(0 a 59): ');
readln(minuto);
textcolor(15);
end;
segundo := 0;
clrscr;
while (hora < 25) do
begin
textcolor(9);
writeln('R e l o g i o 2 4 H o r a s');
writeln('---------------------------------------');
textcolor(15);

segundo := segundo + 1;

if (segundo = 60) then
begin
segundo := 0;
minuto := minuto + 1;
end;
if (minuto = 60) then
begin
minuto :=0;
segundo :=0;
hora := hora + 1;
end;
if (hora = 24) then
begin
hora := 0;
segundo:=0;
minuto := 0;
end;

if ((segundo < 10) and (minuto < 10) and (hora < 10)) then
begin
writeln('0',hora,':0',minuto,':0',segundo);
end;
if ((segundo >= 10) and (minuto >= 10) and (hora >= 10)) then
begin
writeln(hora,':',minuto,':',segundo);
end;
if ((segundo >= 10) and (minuto < 10) and (hora < 10)) then
begin
writeln('0',hora,':0',minuto,':',segundo);
end;
if ((segundo >= 10) and (minuto < 10) and (hora >= 10)) then
begin
writeln(hora,':0',minuto,':',segundo);
end;
if ((segundo >= 10) and (minuto >= 10) and (hora < 10)) then
begin
writeln('0',hora,':',minuto,':',segundo);
end;
if ((segundo < 10) and (minuto >= 10) and (hora >= 10)) then
begin
writeln(hora,':',minuto,':0',segundo);
end;
if ((segundo < 10) and (minuto >= 10) and (hora < 10)) then
begin
writeln('0',hora,':',minuto,':0',segundo);
end;

if ((segundo < 10) and (minuto < 10) and (hora >= 10)) then
begin
writeln(hora,':0',minuto,':0',segundo);
end;
end;
end.
Program Relogio;

Link para o comentário
Compartilhar em outros sites

Ola Dj.Ágape, primeiramente, seja bem vindo ao Fórum do Clube do Hardware.

Primeiramente, sugiro que dê uma arrumada nessa questão da hora, posteriormente poderíamos passar para a data... mas adianto que a data poderia ser inserida da mesma forma que a hora. Simplesmente analisando ela como pertencente ao mesmo grupo... :segundo -> minuto -> hora -> dia -> mês -> ano... ^_^

Vamos à alguns pontos:

1) Posicionamento do relógio

Como é observável, a exibição da hora está sempre aparecendo embaixo da linha anterior, o que dificulta a visualização do mesmo, além de "não ficar bonito". Sugiro que o relógio fique em uma posição fixa.

Sugestão: Vide comando GotoXY() (unit CRT). Uma outra forma seria com o próprio ClrScr.

2) "Velocidade do tempo"

Pelo menos aqui no meu computador/compilador (FPC 2.6.0), a velocidade do relógio não está compatível com a da "realidade". Do programa está bem mais acelerado...

Sugestão: Vide comando Delay() (unit CRT).

3) Interrupção do progrma

No seu programa, você está utilizando:

while (hora < 25) do
begin

Que pelo contexto interno, nunca terá um fim, pois hora nunca chegará a ser "não menor que 25".

Esse trecho é equivalente a:

while True do
begin

Obs.: Como True é sempre True, logo o while "não vai ter fim".

Uma forma interessante para corrigir isso seria assim:

while (True) and (not KeyPressed) do
begin

***

Por enquanto é isso. Qualquer coisa é só postar...

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...