Аналоговые часы на Delphi

Автор: Пользователь скрыл имя, 28 Марта 2012 в 00:54, курсовая работа

Краткое описание

Информатика – это наука о способах представления, накопления, передачи и обработки информации. Она служит для помощи другим наукам и вместе с математикой снабжает их методами исследований и обработки информации.
Современная информатика имеет несколько основных направлений:
разработка методов и алгоритмов автоматического сбора, хранения, поиска и передачи информации,
разработка методов и алгоритмов обработки и преобразования информации,

Оглавление

Аннотация 3
Введение 4
1 История Delphi………………………………………………………………5
1.1 История языка……………………………………………………………7
1.2 Объектно-ориентированное программирование……………………10
1.3 Объект и класс………………………………………………………….11
2 Постановка задачи…………………………………………………...13
2.1 Математическое описание……………………………………….14
3 Алгоритм решения 15
3.1 Программа на языке Delphi 16
3.2 Операторы, применяемые в программе 22
3.3 Разработка интерфейса 23
Заключение 24
Литература……………………………………………

Файлы: 1 файл

Аналоговые часы на Delphi.doc

— 112.00 Кб (Скачать)

нии объекта, например, лампа включена или выключена, автомобиль мчит-

ся со скоростью 60 км/ч.

Все присущие объекту характеристики в терминах OOП называют полями.

По сути, это принадлежащие объекту переменные определенного типа, в ко-

торые записываются значения, отражающие состояние объекта. Для управ-

ления объектом предназначены его методы. Настольной лампой управляют

два ключевых метода: включить и выключить. У автомобиля этих методов

значительно больше: он заводится, набирает скорость, изменяет направле-

ние движения, замедляет движение и все это время пожирает бензин.

В первую очередь методы воздействуют на поля объекта. Так, практически все

методы автомобиля сосредоточены вокруг поля, описывающего его скорость.

Если методы объекта возвращают какое-нибудь значение, то они реализуются

в виде функции, в противном случае метод представляется процедурой.

 

 

 

 

 

Объект не может возникнуть из воздуха, среда программирования каким-то образом должна быть проинформирована о его характеристиках. Поэтому предварительно программист описывает объект; такое описание называется  классом. Класс – это чертеж будущего объекта, в котором учитываются не только его конструктивные элементы (поля), но и определяются способы управления этими элементами – методы класса.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 Постановка задачи

 

Разработка программы создания аналоговых часов включает в себя следующие этапы:

– Прорисовка часовой стрелки

– Прорисовка минутной стрелки

– Прорисовка секундной стрелки

-  Синхронизация с реальным временем

 


2.1 Математическое описание

 

Для решения данной задачи необходимо составить ее математическое описание.

Одним из возможных вариантов решения является следующий:

 

1.      Константа R-радиус циферблата

 

2. т – переменная времени, т = Now()- реальное время

 

3. после чего реальное время отображается в аналоговом виде:

ahr :=  90 - HourOf(t)*30-(MinuteOf(Today)div 12)*6;

  amin := 90 - MinuteOf(t)*6;

  asec := 90 - SecondOf(Today)*6;

 

4.Прорисовка реального времени, циферблата, часовой,минутной и секундной стрелок часов

 

5. Закрытие программы

 

 

 

 

 

             

 

 

 

 

3 Алгоритм решения

 

Для исполнительных устройств создаются алгоритмы. Алгоритм представляет собой упорядоченную последовательность действий приводящих к решению поставленной задачи, то есть последовательность предписаний исполнителю. Число этих предписаний конечно. Исполнитель должен неукоснительно выполнять данные предписания, чтобы достичь желаемого результата. При этом поставленная задача решается за определенное число шагов.

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

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

Данный алгоритм является однозначным и  результативным.

 

 

 

 


3.1 Программа на языке Delphi

 

 

unit clock2_;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ExtCtrls;

 

type

  TForm1 = class(TForm)

    Timer1: TTimer;

    procedure FormCreate(Sender: TObject);

    procedure FormPaint(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

 

    // эти объявления вставлены вручную

    procedure Vector(x0,y0,a,l: integer);

    procedure DrawClock;

 

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

 

 

var

  Form1: TForm1;

 

implementation

{$R *.dfm}

 

uses

   DateUtils; // для доступа к SecondOf,

              // MinuteOf и HourOf

 

const

  R = 75 ;    // радиус циферблата часов

 

var

x0,y0: integer;         // центр циферблата

ahr,amin,asec: integer; // положение стрелок (угол)

 

// инициализация формы

procedure TForm1.FormCreate(Sender: TObject);

var

    t: TDateTime;

begin

  // зададим размер формы

  // в соответствии с размером циферблата

  ClientHeight := (R+30)*2;

  ClientWidth  := (R+30)*2;

  x0 := R+30;

  y0 := R+30;

 

  t := Now();

 

  // положение стрелок

  ahr :=  90 - HourOf(t)*30-(MinuteOf(Today)div 12)*6;

  amin := 90 - MinuteOf(t)*6;

  asec := 90 - SecondOf(Today)*6;

 

  Timer1.Interval := 1000; // период сигнал от таймера 1 сек

  Timer1.Enabled := True;  // пуск таймера

end;

 

// вычерчивает вектор заданной длины из точки (x0,y0)

procedure TForm1.Vector(x0,y0: integer; a, l: integer);

    // x0,y0 - начало вектора

    // a - угол между осью x и вектором

    // l - длина вектора

const

  GRAD = 0.0174532;   // коэффициент пересчета угла из градусов в радианы

var

  x,y: integer;       // координаты конца вектора

begin

  Canvas.MoveTo(x0,y0);

  x := Round(x0 + l*cos(a*GRAD));

  y := Round(y0 - l*sin(a*GRAD));

  Canvas.LineTo(x,y);

end;

 

// рисует стрелки

procedure TForm1.DrawClock;

var

    t: TDateTime;

begin

  // шаг секундной и минутной стрелок 6 градусов,

  // часовой - 30.

 

  // стереть изображение стрелок

  Canvas.Pen.Color := clBtnFace;

  Canvas.Pen.Width :=3;

  // часовую

  Vector(x0,y0, ahr, R-20);

  // минутную

  Vector(x0,y0, amin, R-15);

  // секундную

  Vector(x0,y0, 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(x0,y0, amin, R-15);

 

  // секундная стрелка

  Canvas.Pen.Width := 1;

  Canvas.Pen.Color := clYellow;

  Vector(x0,y0, asec, R-7);

end;

 

// прорисовка циферблата и начальных стрелок

procedure TForm1.FormPaint(Sender: TObject);

var

    x,y: integer;    // координаты маркера на циферблате

    a: integer;      // угол между OX и прямой (x0,yo) (x,y)

    h: integer;      // метка часовой риски

 

    bs: TBrushStyle; // стиль кисти

    pc: TColor;      // цвет карандаша

    pw: integer;     // ширина карандаша

begin

  bs := Canvas.Brush.Style;

  pc := Canvas.Pen.Color;

  pw := Canvas.Pen.Width;

 

  Canvas.Brush.Style := bsClear;

  Canvas.Pen.Width := 1;

  Canvas.Pen.Color := clBlack;

 

  a:=0; // метки ставим от 3-х часов, против

        // часовой стрелки

  h:=3; // угол 0 градусов - это 3 часа

 

  // циферблат

  while a < 360 do

  begin

    x:=x0+Round( R * cos(a*2*pi/360));

    y:=x0-Round( R * sin(a*2*pi/360));

    Form1.Canvas.MoveTo(x,y);

    if (a mod 30) = 0 then

        begin

            Canvas.Ellipse(x-2,y-2,x+3,y+3);

            // цифры по большему радиусу

            x:=x0+Round( (R+15) * cos(a*2*pi/360));

            y:=x0-Round( (R+15) * sin(a*2*pi/360));

            Canvas.TextOut(x-5,y-7,IntToStr(h));

            dec(h);

            if h = 0 then h:=12;

        end

        else Canvas.Ellipse(x-1,y-1,x+1,y+1);

    a:=a+6; // 1 минута - 6 градусов

  end;

  // восстановить карандаш кисть

  Canvas.Brush.Style := bs;

  Canvas.Pen.Width := pw;

  Canvas.Pen.Color := pc;

 

  DrawClock;

end;

 

// прорисовка текущих положений стрелок часов

procedure TForm1.Timer1Timer(Sender: TObject);

begin

    DrawClock;

end;

end.

                         

3.2 Операторы, применяемые в программе

 

В процессе написания программы мною были использованы следующие операторы и управляющие конструкции языка Delphi:

Var – оператор объявления переменной

<,>,<> – операторы сравнения

              +, -, /, * – математические операторы

While– Оператор цикла

Ellipse – построение окружности (Функция)

Canvas -  вырисовка объекта (Класс)

round – oкругление до целого (Функция)

          DrawClock -прорисовка текущих положений стрелок часов

bs: TBrushStyle - стиль кисти

pc: TColor - цвет карандаша

        pw: integer - ширина карандаша

TextOut - вывод текста на канву


3.3 Разработка интерфейса

 

Интерфейс для данной программы выполнен с помощью интегрированной среды разработки Delphi 6.0, он включает в себя несколько компонентов оформления форм. Наиболее функциональным и значимыми является невизуальный компонент Timer. Данный компоненты является стандартными для операционной системы Microsoft Windows 2000/XP и присутствуют во множестве популярных программ.

 

 

 

 

 

Рис. 2, Интерфейс курсового проекта


Заключение

 

В данной курсовой работе был разработан алгоритм и программа для соэдания аналоговых часов. В итоге проделанной работы можно сказать, что среда разработки Delphi обладает широкими возможностями для решения задач практически любой сложности. Значит, эффективность работы ЭВМ вполне оправдывает затраченные на них расходы и ресурсы. Естественно, не трудно предположить, что развитие ЭВМ нисколько не замедлится и некогда не прекратится. Очевидно, что новейшие ЭВМ будут постоянно внедрятся в различные сферы деятельности человека.


Литература

 

1.      Delphi. Программирование на языке высокого уровня : Учебник для ВУЗов/Фаронов В.В. Изд-во: Питер 2011 г. 640 с.

2.      Программирование в Delphi: процедурное, объектно-ориентированное, визуальное: Учебное пособие, Серия: Специальность/Белов В.В., Чистякова В.И. Изд-во: Горячая Линия-Телеком 2009 г. 240 с.

3.      Курс Delphi для начинающих. Полигон нестандартных задач: Элективный курс  Профильное обучение/ Ремнев А.А., Федотова С.В.Изд-во: Солон-пресс 2007 г. 360 с.

Информация о работе Аналоговые часы на Delphi