Necessário
Ambiente de programação PascalABC. NET ou PascalTurbo
Instruções
Passo 1
Então, primeiro, vamos abrir o programa. Vamos criar um novo arquivo e especificar os plug-ins. Neste caso, precisamos de um módulo para trabalhar com o console - CRT.
para isso vamos escrever:
usa
CRT;
Passo 2
Vamos indicar as variáveis i, s, m - variáveis do tipo real.
var
i, s, m: Real;
etapa 3
Para iniciar o programa, escreva:
começar
E vamos indicar o título da janela do console:
SetWindowTitle ('Cronômetro');
Passo 4
O procedimento TextColor atribui uma cor ao texto, e a instrução Write exibe o texto na tela:
TextColor (LightGreen);
WriteLn ('Pressione Enter para iniciar o cronômetro');
WriteLn ('Pressione novamente para parar');
Write ('Clique novamente para recomeçar');
O final Ln passa para a próxima linha.
Etapa 5
O operador ReadLn insere valores do teclado, mas, neste caso, apenas espera que o usuário pressione Enter:
ReadLn;
Etapa 6
Fazemos um loop infinito:
enquanto (verdadeiro) faça
começar
A construção while (true) do begin traduz como: While (condição) do (). Por que começar aqui?
Nesse caso, precisamos de um operador composto, o que significa que, embora a condição seja verdadeira, vários operadores são executados. Se não fosse para começar, então após o While, apenas uma instrução seria executada, o que levaria à operação incorreta do programa. Para encerrar a instrução While no final, escrevemos end.
Etapa 7
Agora vamos zerar o contador:
i: = 0;
Etapa 8
A seguinte declaração é traduzida como: até que a tecla do () seja pressionada.
enquanto não pressionado, faça
começar
O operador ClrScr limpa a tela:
ClrScr;
Etapa 9
Definimos a condição: se os segundos forem maiores que 60 e menores que 3600 (isso é necessário para que quando o tempo for maior que uma hora, o programa imprima apenas o que vier depois do terceiro se) então:
if (i> 60) e (i <3600) então comece
A variável m (minutos) é igual a: segundos divididos por 60 e arredondados para a frente.
m: = Int (i / 60);
E a variável s (segundos sem minutos) é igual a: todos os segundos menos minutos multiplicados por 60.
s: = i - m * 60;
Etapa 10
A instrução Write grava quantos minutos e segundos se passaram, e a instrução end termina o trabalho do begin seguindo a condição if:
Escreva (m, 'minutos (s) e', s: 1: 2, 'segundos (s)')
fim;
Função: 1: 2 significa que os segundos devem ser escritos com duas casas decimais.
Etapa 11
Se os segundos forem inferiores a 60, basta escrever quantos segundos se passaram com duas casas decimais:
se eu <60 então
Write ('', i: 1: 2, 'segundos (a / s)');
Etapa 12
Se os segundos forem mais de 3600 (ou seja, mais de uma hora), então:
se eu> 3600, então comece
m: = Int (i / 60);
s: = i - m * 60;
ch: = Int (m / 60);
m: = m - ch * 60;
Escreva (ch, 'hora (s)', m, 'minutos (s) e', s: 1: 2, 'segundos (s)');
fim;
Etapa 13
Então, o programa escreveu que se passaram 0 segundos, agora ele aumenta o contador i em 10 milissegundos, e como o programa faz tudo instantaneamente, fazemos um atraso para o mesmo tempo:
i: = i + 0,01;
Atraso (10);
Em seguida, encerramos a instrução While (não pressionada na tecla):
fim;
Se o usuário pressionou a tecla Enter, o programa espera que ele a pressione novamente para iniciar o cronômetro novamente:
Readln;
Readln;
Não é por acaso que colocamos o contador em zero após a instrução While (true), porque quando o usuário pressiona Enter uma segunda vez, o programa começa a partir daí, zera o contador e começa a contar novamente.
Em seguida, encerramos o While e para todo o programa:
fim;
Etapa 14
Aqui está o programa completo:
usa
CRT;
var
i: Real;
s: real;
m: real;
ch: Real;
começar
SetWindowTitle ('Cronômetro');
TextColor (LightGreen);
WriteLn ('Pressione Enter para iniciar o cronômetro');
WriteLn ('Pressione novamente para parar');
Write ('Clique novamente para recomeçar');
ReadLn;
enquanto (verdadeiro) faça
começar
i: = 0;
enquanto não pressionado, faça
começar
ClrScr;
if (i> 60) e (i <3600) então comece
m: = Int (i / 60);
s: = i - m * 60;
Escreva (m, 'minutos (s) e', s: 1: 2, 'segundos (s)')
fim;
se eu <60 então
Write ('', i: 1: 2, 'segundos (a / s)');
se eu> 3600, então comece
m: = Int (i / 60);
s: = i - m * 60;
ch: = Int (m / 60);
m: = m - ch * 60;
Escreva (ch, 'hora (s)', m, 'minutos (s) e', s: 1: 2, 'segundos (s)');
fim;
i: = i + 0,01;
Atraso (10);
fim;
Readln;
Readln;
fim;
fim.
Etapa 15
Não ficou muito legal, mas o programa funciona corretamente!