Як зробити програму-секундомір на паскалі

Як зробити програму-секундомір на Паскалі

Вам знадобиться

  • Середовище програмування PascalABC.NET або PascalTurbo.

Інструкція

1
Отже, для початку відкриємо програму. Створимо новий файл і вкажемо Plug-in. В даному випадку нам потрібен модуль для роботи з консоллю - CRT.
для цього напишемо:

uses
CRT-

2
Зазначимо змінні i, s, m - змінні дійсного типу.

var
i, s, m: Real-

3
Для початку програми напишемо:

begin

І вкажемо заголовок консольного вікна:

SetWindowTitle ( `Секундомір`) -

4
Процедура TextColor призначає колір тексту, а оператор Write виводить текст на екран:

TextColor (LightGreen) -
WriteLn ( `Натисніть Enter щоб запустити секундомір`) -
WriteLn ( `Натисніть повторно, щоб зупинити`) -
Write ( `Натисніть ще раз, щоб запустити заново`) -
Закінчення Ln здійснює перехід на наступний рядок.

5
Оператор ReadLn вводить значення з клавіатури, але в даному випадку він просто чекає, коли користувач натисне Enter:

ReadLn -



6
Робимо нескінченний цикл:

while (true) do
begin

Конструкція while (true) do begin перекладається як: Поки (умова) роби (). Питається навіщо тут begin?
В даному випадку нам потрібен складовою оператор, а це значить що поки умова істинна виконується кілька операторів. Якби тут не стояло begin то після While виконувався лише один оператор, що призвело б неправильної роботи програми. Щоб закінчити оператор While в кінці ми напишемо end.

7
Тепер обнулив лічильник:

i: = 0

8
Наступний оператор перекладається як: поки не натиснута клавіша роби ().

while not keypressed do
begin
Оператор ClrScr очищає екран:

ClrScr-

9
Ставлять умову: якщо секунд більше 60 і менше 3600 (це потрібно для того, щоб коли часу було більше години, програма друкувала тільки те що знаходиться після третього if) то:

if (i gt; 60) and (ilt; 3600) then begin

Мінлива m (хвилини) дорівнює: секунди поділені на 60 і округлені до Челою частини.

m: = Int (i / 60);

А змінна s (секунди без хвилин) дорівнює: все секунди мінус хвилини помножені на 60.

s: = i - m * 60

10
Оператор Write пише скільки минуло хвилин і секунд, а оператор end закінчує роботу begin стоїть після умови if:

Write (m, `хвилин (а / ів) і`, s: 1: 2, "секунд (а / и) `)
end-
Функція: 1: 2 означає що секунди потрібно писати з двома знаками після знаками після коми.

11



Якщо секунд менше 60 то просто пиши скільки секунд пройшло з двома знаками після коми:

if i lt; 60 then
Write ( ``, i: 1: 2, "секунд (а / и) `) -

12
Якщо секунд більше 3600 (тобто більше години) то:

if i gt; 3600 then begin
m: = Int (i / 60) -
s: = i - m * 60
ch: = Int (m / 60) -
m: = m - ch * 60
Write (ch, `годину (а / ів)`, m, `хвилин (а / и) і`, s: 1: 2, "секунд (а / и) `) -
end-

13
Отже, програма написала що пройшло 0 секунд, тепер збільшує лічильник i на 10 мілісекунд і так як програма виконує все миттєво робимо затримку на цей же час:

i: = i + 0.01-
Delay (10);

Далі робимо кінець для оператора While (not keypressed):

end-
Якщо користувач натиснув клавішу Enter, то програма чекає коли коли він знову її натисне, щоб запустити секундомір заново:

Readln -
Readln;

Не випадково ми поставили обнулення лічильника після оператора While (true), тому що коли користувач вдруге натисне Enter, програма піде якраз з нього, обнулить лічильник і почне відлік заново.

Далі робимо кінець для While і для всієї програми:

end-

14
Ось вся програма повністю:

uses
CRT;


var
i: Real-
s: Real-
m: Real-
ch: Real;

begin
SetWindowTitle ( `Секундомір`) -
TextColor (LightGreen) -
WriteLn ( `Натисніть Enter щоб запустити секундомір`) -
WriteLn ( `Натисніть повторно, щоб зупинити`) -
Write ( `Натисніть ще раз, щоб запустити заново`) -
ReadLn-
while (true) do
begin
i: = 0
while not keypressed do
begin
ClrScr-
if (i gt; 60) and (ilt; 3600) then begin
m: = Int (i / 60) -
s: = i - m * 60
Write (m, `хвилин (а / ів) і`, s: 1: 2, "секунд (а / и) `)
end-
if i lt; 60 then
Write ( ``, i: 1: 2, "секунд (а / и) `) -
if i gt; 3600 then begin
m: = Int (i / 60) -
s: = i - m * 60
ch: = Int (m / 60) -
m: = m - ch * 60
Write (ch, `годину (а / ів)`, m, `хвилин (а / и) і`, s: 1: 2, "секунд (а / и) `) -
end-
i: = i + 0.01-
Delay (10) -
end-
Readln-
Readln-
end-
end.

15
Вийшло не дуже красиво, але програма працює правильно!

Корисна порада

Щоб поліпшити інтерфейс, можна використовувати модуль GraphABC.


Увага, тільки СЬОГОДНІ!


Оцініть, будь ласка статтю
Всього голосів: 124
Увага, тільки СЬОГОДНІ!