Информация


Programm.ws - это сайт, на котором вы можете почитать литературу по языкам программирования, а так-же посмотреть примеры работающих программ на С++, ассемблере, паскале и много другого..

Программирование — в обычном понимании, это процесс создания компьютерных программ.
В узком смысле (так называемое кодирование) под программированием понимается написание инструкций — программ — на конкретном языке программирования (часто по уже имеющемуся алгоритму — плану, методу решения поставленной задачи). Соответственно, люди, которые этим занимаются, называются программистами (на профессиональном жаргоне — кодерами), а те, кто разрабатывает алгоритмы — алгоритмистами, специалистами предметной области, математиками.
В более широком смысле под программированием понимают весь спектр деятельности, связанный с созданием и поддержанием в рабочем состоянии программ — программного обеспечения ЭВМ. Более точен современный термин — «программная инженерия» (также иначе «инженерия ПО»). Сюда входят анализ и постановка задачи, проектирование программы, построение алгоритмов, разработка структур данных, написание текстов программ, отладка и тестирование программы (испытания программы), документирование, настройка (конфигурирование), доработка и сопровождение.

Графика

34. Напишите программу, которая на поверхность формы выво дит изображение идущих часов с часовой, минутной и секунд ной стрелками.

Окно и форма приложения приведены на рис. 1.32.

Рис. 1.32. Окно и форма программы Часы

unit' clock_;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, ExtCtrls;
type
TForml = class(TForm)
Timerl: TTimer;
procedure FormCreate(Sender: TObject);
procedure ForraPaint(Sender: TObject);
procedure TimerlTimer(Sender: TObject); // эти объявления вставлены вручную
procedure Vector(xO,yO,a,1: integer);
procedure DrawClock; private
{ Private declarations )
public
I Public declarations }
end;var
Forml: TForml;implementation .
{$R *.dfm}uses
DateUtils; // для доступа к SecondOf,
// MinuteOf и HourOfconst
R = 75; // радиус циферблата часовvar
xO,yO: integer; // центр циферблата
ahr,amin,asec: integer; // положение стрелок (угол)// инициализация формы
procedure TForml.FormCreate(Sender: TObject);
var
t: TDateTime;
begin
// зададим размер формы
// в соответствии с размером циферблата
ClientHeight := (R+10)*2;
ClientWidth := (R+10)*2;
хО := R+1O;
уО := R+1O; t := Now(); // положение стрелок
ahr := 90 - HourOf(t)*30-(MinuteOf(Today)div 12)*6;
amin := 90 - MinuteOf(t)*6;
asec := 90 - SecondOf(Today)*6; Timerl.Interval := 1000; // период сигнало от таймера 1 сек
Timerl.Enabled := True; // пуск таймера
end;// вычерчивает вектор заданной длины из точки (х0,у0)
procedure TForml.Vector(x0,y0: integer; a, 1: integer);
// х0,у0 — начало вектора
//а — угол между осью х и вектором
// 1 — длина вектора
const
GRAD = 0.0174532; // коэффициент пересчета угла из градусов
// в радианы
var
х,у: integer; // координаты конца вектора
begin
Canvas.MoveTo(хО, y0) ;
х := Round(хО + l*cos(a*GRAD));
у := Round(y0 - l*sin(a*GRAD));
Canvas.LineTo(x, y);
end;// рисует стрелки
procedure TForml.DrawClock;
var
t: TDateTime;
begin
// шаг секундной и минутной стрелок 6 градусов,
// часовой — 30. // стереть изображение стрелок
Canvas.Pen.Color := clBtnFace;
Canvas.Pen.Width :=3;
// часовую
Vector(x0,y0, ahr, R-20) ;
// минутную
Vector(xO,yO, amin, R-15);
// секундную
Vector(xO,yO, asec, R-7); t := Now(); // новое положение стрелок
ahr := 90 - HourOf(t)*30-(MinuteOf(t)div 12) *6;
amin := 90 - MinuteOf(t)*6;
asec := 90 - SecondOf(t)* 6; // нарисовать стрелки
// часовая стрелка
Canvas.Pen.Width := 3;
Canvas.Pen.Color := clBlack;
Vector(x0,y0, ahr, R-20); // минутная стрелка
Canvas.Pen.Width := 2;
Canvas.Pen.Color := clBlack;
Vector(xO,yO, amin, R-15); . // секундная стрелка
Canvas.Pen.Width := 1;
Canvas.Pen.Color := clYellow;
Vector(xO,yO, asec, R-7);
end;// прорисовка циферблата и начальных стрелок
procedure TForml.FormPaint(Sender: TObject);
var
x,y: integer; // координаты маркера на циферблате
a: integer; // угол между ОХ и прямой (х0,у0) (х,у) рс: TColor; // цвет карандаша
pw: integer; // ширина карандаша
begin
рс := Canvas.Pen.Color;
pw := Canvas.Pen.Width; Canvas.Pen.Width := 1;
Canvas.Pen.Color := clBlack; a:=0; // метки ставим от 3-х часов, против часовой стрелки
// циферблат
while a < 360 do
begin
x:=xO+Round( R * cos(a*2*pi/360)) ;
y:=xO-Round( R * sin(a*2*pi/360));
Forml.Canvas.MoveTo(x,у);
if (a mod 30) - 0
then Canvas.Ellipse(x-2,y-2,x+3, y+3)
else Canvas.Ellipse(x-1,y-1,x+1,y+1);
a:=a+6; // 1 сунута — 6 градусов
end;
// восстановить карандаш-кисть
Canvas.Pen.Width := pw;
Canvas.Pen.Color := pc; DrawClock;
end;// прорисовка текущих положений стрелок часов
procedure TForml.TimerlTimer(Sender: TObject);
begin
DrawClock;
end;end.