Вам понадобится
- Среда программирования PascalABC.NET или PascalTurbo.
Инструкция
1
Итак, для начала откроем программу. Создадим новый файл и укажем подключаемые модули. В данном случае нам нужен модуль для работы с консолью - CRT.
для этого напишем:
uses
CRT;
для этого напишем:
uses
CRT;
2
Укажем переменные i, s, m - переменные вещественного типа.
var
i, s, m: Real;
var
i, s, m: Real;
3
Для начала программы напишем:
begin
И укажем заголовок консольного окна:
SetWindowTitle('Секундомер');
begin
И укажем заголовок консольного окна:
SetWindowTitle('Секундомер');
4
Процедура TextColor назначает цвет текста, а оператор Write выводит текст на экран:
TextColor(LightGreen);
WriteLn('Нажмите Enter чтобы запустить секундомер');
WriteLn('Нажмите повторно, чтобы остановить');
Write('Нажмите ещё раз, чтобы запустить заново');
Окончание Ln осуществляет переход на следующую строку.
TextColor(LightGreen);
WriteLn('Нажмите Enter чтобы запустить секундомер');
WriteLn('Нажмите повторно, чтобы остановить');
Write('Нажмите ещё раз, чтобы запустить заново');
Окончание Ln осуществляет переход на следующую строку.
5
Оператор ReadLn вводит значения с клавиатуры, но в даном случае он просто ждёт, когда пользователь нажмёт Enter:
ReadLn ;
ReadLn ;
6
Делаем бесконечный цикл:
while (true) do
begin
Конструкция while (true) do begin переводится как: Пока (условие) делай(). Спрашивается зачем здесь begin?
В данном случае нам нужен составной оператор, а это значит что пока условие истинно выполняется несколько операторов. Если бы здесь не стоял begin то после While выполнялся только один оператор, что привело бы неправильной работе программы. Чтобы закончить оператор While в конце мы напишем end.
while (true) do
begin
Конструкция while (true) do begin переводится как: Пока (условие) делай(). Спрашивается зачем здесь begin?
В данном случае нам нужен составной оператор, а это значит что пока условие истинно выполняется несколько операторов. Если бы здесь не стоял begin то после While выполнялся только один оператор, что привело бы неправильной работе программы. Чтобы закончить оператор While в конце мы напишем end.
7
Теперь обнулим счётчик:
i := 0;
i := 0;
8
Следующий оператор переводится как: пока не нажата клавиша делай().
while not keypressed do
begin
Оператор ClrScr очищает экран:
ClrScr;
while not keypressed do
begin
Оператор ClrScr очищает экран:
ClrScr;
9
Ставим условим: если секунд больше 60 и меньше 3600(это нужно для того, чтобы когда времени было больше часа, программа печатала только то что находится после третьего if) то:
if (i > 60) and (i<3600) then begin
Переменная m(минуты) равна: секунды поделённые на 60 и округлённые до челой части.
m := Int(i / 60);
А переменная s(секунды без минут) равна: все секунды минус минуты умноженные на 60.
s := i - m * 60;
if (i > 60) and (i<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 означает что секунды нужно писать с двумя знаками после знаками после запятой.
Write(m, 'минут(а/ов) и ', s:1:2, 'секунд(а/ы)')
end;
Функция :1:2 означает что секунды нужно писать с двумя знаками после знаками после запятой.
11
Если секунд меньше 60 то просто пиши сколько секунд прошло с двумя знаками после запятой:
if i < 60 then
Write(' ', i:1:2, ' секунд(а/ы)');
if i < 60 then
Write(' ', i:1:2, ' секунд(а/ы)');
12
Если секунд больше 3600(то есть больше часа) то:
if i > 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;
if i > 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;
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 > 60) and (i<3600) then begin
m := Int(i / 60);
s := i - m * 60;
Write(m, 'минут(а/ов) и ', s:1:2, 'секунд(а/ы)')
end;
if i < 60 then
Write(' ', i:1:2, ' секунд(а/ы)');
if i > 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.
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 > 60) and (i<3600) then begin
m := Int(i / 60);
s := i - m * 60;
Write(m, 'минут(а/ов) и ', s:1:2, 'секунд(а/ы)')
end;
if i < 60 then
Write(' ', i:1:2, ' секунд(а/ы)');
if i > 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.