Necessario
Ambiente di programmazione PascalABC. NET o PascalTurbo
Istruzioni
Passo 1
Quindi, per prima cosa, apriamo il programma. Creiamo un nuovo file e specifichiamo i plugin. In questo caso, abbiamo bisogno di un modulo per lavorare con la console - CRT.
per questo scriveremo:
usa
CRT;
Passo 2
Indichiamo le variabili i, s, m - variabili di tipo reale.
varia
io, s, m: reale;
Passaggio 3
Per avviare il programma scrivi:
inizio
E indicheremo il titolo della finestra della console:
SetWindowTitle ("Cronometro");
Passaggio 4
La procedura TextColor assegna un colore al testo e l'istruzione Write visualizza il testo sullo schermo:
TextColor (verde chiaro);
WriteLn ('Premi Invio per avviare il cronometro');
WriteLn ("Premi di nuovo per interrompere");
Scrivi ("Fai clic di nuovo per ricominciare");
L'estremità Ln si sposta alla riga successiva.
Passaggio 5
L'operatore ReadLn inserisce i valori dalla tastiera, ma in questo caso attende solo che l'utente prema Invio:
LeggiLn;
Passaggio 6
Facciamo un ciclo infinito:
mentre (vero) do
inizio
Il costrutto while (true) do begin si traduce come: While (condition) do(). Perché inizia qui?
In questo caso, abbiamo bisogno di un operatore composto, il che significa che mentre la condizione è vera, vengono eseguiti diversi operatori. Se non fosse per l'inizio, dopo il While, è stata eseguita solo un'istruzione, il che porterebbe a un'operazione errata del programma. Per terminare l'istruzione While alla fine, scriviamo end.
Passaggio 7
Ora resettiamo il contatore:
io: = 0;
Passaggio 8
La seguente istruzione si traduce come: finché non viene premuto il tasto do().
mentre non è premuto il tasto do
inizio
L'operatore ClrScr cancella lo schermo:
ClrScr;
Passaggio 9
Impostiamo la condizione: se i secondi sono maggiori di 60 e minori di 3600 (questo è necessario affinché quando il tempo è maggiore di un'ora il programma stampi solo ciò che è dopo il terzo se) allora:
se (i> 60) e (i <3600) allora inizia
La variabile m (minuti) è uguale a: secondi divisi per 60 e arrotondati in avanti.
m: = Int (i / 60);
E la variabile s (secondi senza minuti) è uguale a: tutti i secondi meno i minuti moltiplicati per 60.
s: = io - m * 60;
Passaggio 10
L'istruzione Write scrive quanti minuti e secondi sono trascorsi e l'istruzione end termina il lavoro dell'inizio dopo la condizione if:
Scrivi (m, 'minuti (s) e', s: 1: 2, 'secondi (s)')
fine;
Funzione: 1: 2 significa che i secondi devono essere scritti con due cifre decimali.
Passaggio 11
Se i secondi sono inferiori a 60, scrivi semplicemente quanti secondi sono trascorsi con due cifre decimali:
se io <60 allora
Scrivi ('', i: 1: 2, 'secondi (a/s)');
Passaggio 12
Se i secondi sono più di 3600 (cioè più di un'ora), allora:
se i> 3600 allora inizia
m: = Int (i / 60);
s: = io - m * 60;
ch: = Int (m / 60);
m: = m - cat * 60;
Scrivi (ch, 'ora (s)', m, 'minuti (s) e', s: 1: 2, 'secondi (s)');
fine;
Passaggio 13
Quindi, il programma ha scritto che sono trascorsi 0 secondi, ora aumenta il contatore i di 10 millisecondi e poiché il programma fa tutto istantaneamente, facciamo un ritardo per lo stesso tempo:
io: = io + 0,01;
Ritardo (10);
Successivamente, chiudiamo l'istruzione While (non premuto):
fine;
Se l'utente ha premuto il tasto Invio, il programma attende che lo prema di nuovo per far ripartire il cronometro:
Leggi;
Leggi;
Non è un caso che impostiamo il contatore a zero dopo l'istruzione While (true), perché quando l'utente preme Invio una seconda volta, il programma riparte da lì, azzera il contatore e ricomincia a contare.
Successivamente, terminiamo il While e per l'intero programma:
fine;
Passaggio 14
Ecco il programma completo:
usa
CRT;
varia
io veramente;
s: reale;
m: reale;
ch: reale;
inizio
SetWindowTitle ("Cronometro");
TextColor (verde chiaro);
WriteLn ('Premi Invio per avviare il cronometro');
WriteLn ("Premi di nuovo per interrompere");
Scrivi ("Clicca di nuovo per ricominciare");
LeggiLn;
mentre (vero) do
inizio
io: = 0;
mentre non è premuto il tasto do
inizio
ClrScr;
se (i> 60) e (i <3600) allora inizia
m: = Int (i / 60);
s: = io - m * 60;
Scrivi (m, 'minuti (s) e', s: 1: 2, 'secondi (s)')
fine;
se io <60 allora
Scrivi ('', i: 1: 2, 'secondi (a/s)');
se i> 3600 allora inizia
m: = Int (i / 60);
s: = io - m * 60;
ch: = Int (m / 60);
m: = m - cat * 60;
Scrivi (ch, 'ora (s)', m, 'minuti (s) e', s: 1: 2, 'secondi (s)');
fine;
io: = io + 0,01;
Ritardo (10);
fine;
Leggi;
Leggi;
fine;
fine.
Passaggio 15
Non si è rivelato molto carino, ma il programma funziona correttamente!