Практика программирования (Бейсик, Си, Паскаль)


         

и двоеточия, разделяющего часы, минуты


Совет 2 (Паскаль)

Позиции цифр на экране и двоеточия, разделяющего часы, минуты и секунды, подбирались экспериментальным путем. В программе не очень изящно реализовано отображение двоеточия. Было бы лучше, если бы оно мигало с частотой раз в секунду. Но усовершенствования такого рода мы вполне доверяем читателям.

Совет 3 (Паскаль)

В отличие от приводившейся выше функции cifra здесь использован одномерный массив двоичных чисел, что уменьшает объем используемых данных и несколько ускоряет работу программы (операции с элементами одномерных массивов выполняются быстрее). Прощупывание двоичных битов ведется в цикле путем сдвига соответствующей константы на нужное число разрядов влево и логического умножения на код соответствующих перемычек.

Совет 4 (Паскаль)

Программа оформлена в виде бесконечного цикла, работа которого прерывается нажатием любой клавиши.

Программа 8_16.pas

program time;

uses Crt, Dos, Graph;

var

gd,gm,k:integer;

hi,ml,si,h2,m2,s2,hs2:word;
procedure cifra(x,y,n:integer); type

a4=array [0..4] of integer;

a6=array [1..7] of byte; const

a=4; b=20; c=a+a+b;

dl:a4=(a,b,a,-a,-b);

d2:a4=(-a,0,a,a,0);

dx:a6=(0,0,0,0,c,0,c);

dy:a6=(0,c,2*c,0,0,c,c);

q:array[0..9]of byte=

($5F,$5,$76,$75,$2D,$79,$7B,$45,$7F,$7D); var

xy:array [0..5] of PointType;

j,k,d:byte; begin

setfillstyle(0,0);

bar(x-a,y-a,x+(c+a+a),y+2*(c+2*a));

d:=q[n];

for j:=1 to 7 do begin

if ((d) and ($80 shr j))=0 then continue;

ху[0]. х:=x+dx[j];
ху[0].y:=y+dy[j];
for k:=l to 5 do if j<4 then begin

xy[k].x:=xy[k-l].x+dl[k-l];

xytk].y:=xy[k-l].y+d2[k-l];
end
else
begin

xy[k].x:=xy[k-l].x-d2[k-l];

xy[k].y:=xy[k-l].y+dl[k-l];
end;
setfillstyle(l,14);
fillpoly(6,xy);
end;
end;

begin gd:=0;

initgraph(gd,gm,'');
settextstyle(0,0,4);
setcolor(14);

outtextxy(136,44,':');
{ Разделитель часов и минут }
outtextxy(256,44,':');
{ Разделитель минут и секунд }
setcolor(4);

hi:=100; { Начальные установки }
ml:=100;
sl:=100;

Содержание  Назад  Вперед