Necesario
Entorno de programación PascalABC. NET o PascalTurbo
Instrucciones
Paso 1
Entonces, primero, abramos el programa. Creemos un nuevo archivo y especifiquemos los complementos. En este caso, necesitamos un módulo para trabajar con la consola: CRT.
para esto escribiremos:
usos
CRT;
Paso 2
Indiquemos las variables i, s, m - variables del tipo real.
var
i, s, m: Real;
Paso 3
Para iniciar el programa, escriba:
comenzar
E indicaremos el título de la ventana de la consola:
SetWindowTitle ('Cronómetro');
Paso 4
El procedimiento TextColor asigna un color al texto y la instrucción Write muestra el texto en la pantalla:
TextColor (LightGreen);
WriteLn ('Presione Enter para iniciar el cronómetro');
WriteLn ('Presione de nuevo para detener');
Escriba ('Haga clic de nuevo para empezar de nuevo');
El final Ln se mueve a la siguiente línea.
Paso 5
El operador ReadLn ingresa valores desde el teclado, pero en este caso solo espera a que el usuario presione Enter:
ReadLn;
Paso 6
Hacemos un bucle sin fin:
mientras (cierto) hacer
comenzar
La construcción while (true) do begin se traduce como: While (condición) do (). ¿Por qué empezar aquí?
En este caso, necesitamos un operador compuesto, lo que significa que si bien la condición es verdadera, se ejecutan varios operadores. Si no fuera por el comienzo, después de While, solo se ejecutó una instrucción, lo que conduciría a una operación incorrecta del programa. Para finalizar la instrucción While al final, escribimos end.
Paso 7
Ahora reiniciemos el contador:
i: = 0;
Paso 8
La siguiente declaración se traduce como: hasta que se presione la tecla do ().
mientras no presione la tecla
comenzar
El operador ClrScr borra la pantalla:
ClrScr;
Paso 9
Establecemos la condición: si los segundos son más de 60 y menos de 3600 (esto es necesario para que cuando el tiempo sea más de una hora, el programa imprima solo lo que está después del tercero si) entonces:
si (i> 60) y (i <3600) entonces comience
La variable m (minutos) es igual a: segundos divididos por 60 y redondeados al frente.
m: = Int (i / 60);
Y la variable s (segundos sin minutos) es igual a: todos los segundos menos minutos multiplicados por 60.
s: = i - m * 60;
Paso 10
La instrucción Write escribe cuántos minutos y segundos han pasado, y la instrucción end finaliza el trabajo de begin siguiendo la condición if:
Escriba (m, 'minutos (s) y', s: 1: 2, 'segundos (s)')
fin;
Función: 1: 2 significa que los segundos deben escribirse con dos decimales.
Paso 11
Si los segundos son menos de 60, simplemente escriba cuántos segundos han pasado con dos lugares decimales:
si yo <60 entonces
Escriba ('', i: 1: 2, 'segundos (a / s)');
Paso 12
Si los segundos son más de 3600 (es decir, más de una hora), entonces:
si i> 3600 entonces comience
m: = Int (i / 60);
s: = i - m * 60;
ch: = Int (m / 60);
m: = m - ch * 60;
Escriba (ch, 'hora (s)', m, 'minutos (s) y', s: 1: 2, 'segundos (s)');
fin;
Paso 13
Entonces, el programa escribió que han pasado 0 segundos, ahora aumenta el contador i en 10 milisegundos, y como el programa hace todo instantáneamente, hacemos un retraso por el mismo tiempo:
i: = i + 0,01;
Retraso (10);
A continuación, finalizamos la declaración While (no presionada la tecla):
fin;
Si el usuario presionó la tecla Enter, entonces el programa espera a que la presione nuevamente para iniciar el cronómetro nuevamente:
Readln;
Readln;
No es coincidencia que establezcamos el contador en cero después de la instrucción While (verdadero), porque cuando el usuario presiona Enter por segunda vez, el programa comenzará desde allí, reiniciará el contador y comenzará a contar nuevamente.
A continuación, finalizamos el while y para todo el programa:
fin;
Paso 14
Aquí está el programa completo:
usos
CRT;
var
Es real;
s: Real;
m: Real;
ch: Real;
comenzar
SetWindowTitle ('Cronómetro');
TextColor (LightGreen);
WriteLn ('Presione Enter para iniciar el cronómetro');
WriteLn ('Presione de nuevo para detener');
Escriba ('Haga clic de nuevo para empezar de nuevo');
ReadLn;
mientras (cierto) hacer
comenzar
i: = 0;
mientras no presione la tecla
comenzar
ClrScr;
si (i> 60) y (i <3600) entonces comience
m: = Int (i / 60);
s: = i - m * 60;
Escriba (m, 'minutos (s) y', s: 1: 2, 'segundos (s)')
fin;
si yo <60 entonces
Escriba ('', i: 1: 2, 'segundos (a / s)');
si i> 3600 entonces comience
m: = Int (i / 60);
s: = i - m * 60;
ch: = Int (m / 60);
m: = m - cad * 60;
Escriba (ch, 'hora (s)', m, 'minutos (s) y', s: 1: 2, 'segundos (s)');
fin;
i: = i + 0,01;
Retraso (10);
fin;
Readln;
Readln;
fin;
fin.
Paso 15
No resultó muy agradable, ¡pero el programa funciona correctamente!