на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Разработка приложений в визуальной среде Delphi на языке программирования Object Pascal
ункция обратного преобразования типа

FloatToStr (Value: Extended): String;

преобразует вещественное число в строку, возвращаемый результат типа string [4]. Строка, параметр использовать необязательно. При указании параметра задается формат отображения;

математическая функция

Abs (n);

абсолютное значение n [1] ;

математическая функция

Sqrt (n);

квадратный корень из n [1] (n ? 0);

математическая функция

Sqr (n);

возведение в квадрат n [1].

В приложении задачи 1 использованы методы обработки событий, происходящих на форме, код которых создан во время работы приложения:

procedure Button1Click (Sender: TObject); - нажатие на кнопку Button1;

procedure Button2Click (Sender: TObject); - нажатие на кнопку Button2;

procedure Button3Click (Sender: TObject); - нажатие на кнопку Button3.

Для определения расстояния до ближайшей стороны в задаче 1 была написана пользовательская функция function Rj (k, x, n, y, m: real): real;.

В процессе создания программного приложения задачи 2 использовались следующие функции:

функция преобразования типа

StrToInt (const S: string): Integer;

преобразует строку S, в которую записано целое число, в целочисленный тип [4] ;

функция преобразования типа

Round (x: real): integer;

преобразует вещественное число в целое [1] ;

математическая функция Sin (a); - синус угла а, заданного в радианах [1] ;

математическая функция Cos (a); - косинус угла а, заданного в радианах [1].

В приложении задачи 2 использованы методы обработки событий, происходящих на форме, код которых создан во время работы приложения:

procedure Button1Click (Sender: TObject); - нажатие на кнопку Button1;

procedure SpinEdit1Change (Sender: TObject); - изменение содержимого SpinEdit.

Методы объекта Canvas, обеспечивающие рисование на элементах формы:

MoveTo (x,y) - перемещает в указанную позицию (x,y) карандаш, не вычерчивает никаких графических примитивов;

LineTo (x,y) - рисует линию, рисование осуществляется из текущей позиции карандаша в позицию (х, у);

Rectangle (x1,y1,x2,y2) - рисует прямоугольник, параметры x1, y1, x2, y2 - координаты находящихся на одной диагонали углов прямоугольника;

Ellipse (x1,y1,x2,y2) - рисует эллипс, параметры x1, y1, x2, y2 - координаты диагональных углов области, внутри которой вычерчивается эллипс;

TextOut (x,y, <Текст>); - выводит текст на графическую поверхность, параметры (х, у) задают положение текста на экране, параметр <Текст> содержит строку текста, которую необходимо отобразить [1].

При рисовании графических примитивов использовался объект "карандаш" (Canvas. Pen), с помощью него прорисовка линий осуществлялась с различной толщиной и с различным стилем [1]:

Pen. Style: =<const>; - определяет вид линии (задается специальными константами: psSolid - сплошная линия, psDot - пунктирная линия с короткими штрихами, psDash - пунктирная линия с длинными штрихами);

Pen. Width: =<числовое значение в пикселях>; - задает толщину выводимой линии в пикселях.

4. Текст приложений

Программный код разработанного приложения к задаче 1.

unit Unit1;

interface

uses

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

Dialogs, StdCtrls,Math;

type

TForm1 = class (TForm)

Button1: TButton;

Button2: TButton;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Edit8: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label8: TLabel;

Button3: TButton;

Label9: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

procedure Button2Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *. dfm}

procedure TForm1. Button2Click (Sender: TObject);

begin

close;

end;

procedure TForm1. Button3Click (Sender: TObject);

begin

Label15. Caption: = ('');

end;

procedure TForm1. Button1Click (Sender: TObject);

var

x1,x2,x3,x0,y1,y2,y3,y0: real;

a,b,c,a1,b1,c1,a2,b2,c2,a3,b3,c3,t1,t2,t3: real;

d1,d2,d3,d: real;

h,g,w: real;

// подпрограмма определения расстояния до ближайшей стороны

function Rj (k,x,n,y,m: real): real;

var

d0: real;

begin

d0: =abs (k*x+n*y+m) / (sqrt (sqr (k) +sqr (n)));

Rj: =d0;

end;

begin

// ввод координат вершин треугольника

x1: =strtofloat (edit1. text);

y2: =strtofloat (edit2. text);

x2: =strtofloat (edit3. text);

y2: =strtofloat (edit4. text);

x3: =strtofloat (edit5. text);

y3: =strtofloat (edit6. text);

// ввод координат точки

x0: =strtofloat (edit7. text);

y0: =strtofloat (edit8. text);

// вычисление длин сторон треугольника

a: =sqrt (sqr (x2-x1) +sqr (y2-y1));

b: =sqrt (sqr (x3-x2) +sqr (y3-y2));

c: =sqrt (sqr (x1-x3) +sqr (y1-y3));

// проверка условий существования треугольника

h: = a+b; g: =b+c; w: =a+c;

if ( (a>=g) or (b>=w) or (c>=h)) then Label15. Caption: ='Нет решения'

else begin

// вычисление параметров уравнений сторон треугольника

a1: =y2-y1; b1: =x1-x2; c1: = (-x1) * (y2-y1) +y1* (x2-x1);

a2: =y3-y2; b2: =x2-x3; c2: = (-x2) * (y3-y2) +y2* (x3-x2);

a3: =y1-y3; b1: =x3-x1; c3: = (-x3) * (y1-y3) +y3* (x1-x3);

t1: =sqrt (sqr (a1) +sqr (b1));

t2: =sqrt (sqr (a2) +sqr (b2));

t3: =sqrt (sqr (a3) +sqr (b3));

// проверка условия существования формулы для нахождения кратчайшего расстояния

if ( (t1=0) or (t2=0) or (t3=0)) then Label15. Caption: ='Нет решения'

else begin

// вычисление кратчайшего расстояния с помощью подпрограммы к трем сторонам треугольника

d1: =Rj (a1,x0,b1,y0,c1);

d2: =Rj (a2,x0,b2,y0,c2);

d3: =Rj (a3,x0,b3,y0,c3);

// нахождение наименьшего значения

if ( (d1<=d2) and (d1<=d3)) then d: =d1 else

if ( (d2<=d1) and (d2<=d3)) then d: =d2 else d: =d3;

end;

Label15. Caption: ='d='+floattostr (d) +'см';

end; end;

end.

Программный код разработанного приложения к задаче2.

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls, Spin, Math;

type

TForm1 = class (TForm)

Panel1: TPanel;

Label1: TLabel;

Label3: TLabel;

Button1: TButton;

Panel2: TPanel;

Image1: TImage;

SpinEdit1: TSpinEdit;

Label2: TLabel;

Edit1: TEdit;

procedure Button1Click (Sender: TObject);

procedure SpinEdit1Change (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *. dfm}

procedure TForm1. Button1Click (Sender: TObject);

begin

close;

end;

procedure TForm1. SpinEdit1Change (Sender: TObject);

var

// координаты основных точек определяющих положение механизма

xd,xb,xa,xc,x0,yd,yb,ya,yc,y0,o1,o2,o3,o4: integer;

// значения радиуса барабана и срержней

od,dc,ab,ob,R: integer;

// углы

w,w1: real;

begin

// ввод значения радиуса барабана

R: =StrToInt (Edit1. Text);

od: =round (R);

ob: =round (od);

// задание размеров стержней

dc: =90;

ab: =70;

// определение значения угла W

W: =spinedit1. value*pi/180;

// задание точки определяющей начало координат

x0: =round (form1. image1. width/2);

y0: =round (form1. image1. height/2);

// вычисление значения угла W1

w1: =pi-pi/2-w;

// вычисление координат точек определяющих положение механизма

xd: =x0+round (od*cos (w));

yd: =y0-round (od*sin (w));

xb: =x0-round (ob*cos (w1));

yb: =y0-round (ob*sin (w1));

xc: =x0+round (dc*cos (w));

yc: =y0+round (dc);

xa: =x0-round (ab);

ya: =y0+round (ab*cos (w1));

o1: =round (x0-od);

o2: =round (y0-od);

o3: =round (x0+od);

o4: =round (y0+od);

// рисование элементов системы на экране и подписи основных точек механизма

form1. image1. picture: =nil;

with form1. image1. canvas do

begin

ellipse (o1,o2,o3,o4);

ellipse (xd-3, yd-3, xd+3, yd+3);

ellipse (xb-3, yb-3, xb+3, yb+3);

moveto (x0,y0);

Pen. Style: =psDot;

lineto (xd,yd);

moveto (x0,y0);

lineto (xb,yb);

Pen. Style: =psSolid;

moveto (xc,yc);

Rectangle (xc+10,yc+8,xc-10,yc-8);

Lineto (xc+400,yc);

lineto (xc-400,yc);

moveto (xc,yc+10);

Pen. Width: =2;

lineto (400,yc+10);

lineto (150,yc+10);

moveto (xc,yc-10);

lineto (400,yc-10);

lineto (150,yc-10);

moveto (xd,yd);

Pen. Width: =1;

lineto (xc,yc);

ellipse (xc-3, yc-3, xc+3, yc+3);

moveto (xb,yb);

lineto (xa,ya);

ellipse (xa-3, ya-3, xa+3, ya+3);

moveto (xa,ya);

Pen. Width: =2;

lineto (xa,ya+400);

lineto (xa,ya-400);

Pen. Width: =1;

moveto (xd+5,yd-8);

Textout (xd+5,yd-8,'D');

moveto (xb-5,yb-15);

Textout (xb-5,yb-15,'B');

moveto (xa-15,ya-8);

Textout (xa-15,ya-8,'A');

moveto (xc+10,yc-25);

Textout (xc+10,yc-25,'C');

moveto (x0+1,y0+1);

Textout (x0+1,y0+1,'O');

moveto (x0,y0+R);

Textout (x0,y0+R+3,'P');

Pen. Width: =2;

Lineto (x0+20,y0+R);

Lineto (x0-20,y0+R);

end;

end;

end.

5. Формы приложений

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

Форма, на которой размещаются компоненты, является основой большинства приложений Delphi. Она представляет собой окно создаваемого приложения, определяет интерфейс приложения для общения с пользователем и непосредственно дает возможность редактировать взаимное расположение и свойства (цвет, размер) элементов интерфейса для придания ему большей эргономичности [4].

Для решения задачи 1 в Delphi было разработано приложение. Вид окна приложения до выполнения вычислений представлен на рисунке 5 (Исходная форма приложения задачи 1).

Рисунок 5 - Исходная форма приложения задачи 1

На рисунке 6 (Форма приложения с результатами вычислений задачи 1) представлена форма приложения с результатами вычислений. Различные варианты работы алгоритма приложения к задаче 1 отображены на рисунке А.9 (Форма приложения с результатами вычислений задачи 1), где треугольник не существует и на рисунке В.10 (Форма приложения с результатами вычислений задачи 1), где точка располагается на одной из вершин треугольника.

Рисунок 6 - Форма приложения с результатами вычислений задачи 1

На форме расположены следующие компоненты:

Label - компоненты для вывода текста (13 шт.);

Edit - поля редактирования (8 шт.);

Button - кнопки (3 шт.).

Для решения задачи 2 в Delphi было разработано приложение работы кинематической схемы. Исходный вид окна приложения представлен на рисунке 7 (Исходная форма приложения задачи 2), а на рисунке 8 (Форма приложения кинематической схемы) представлена форма приложения с изображением кинематической схемы, если радиус барабана R=30. Другие варианты работы алгоритма приложения кинематической схемы представлены на рисунке С.11 (Форма приложения кинематической схемы), где радиус барабана R= 40 и на рисунке D.12 (Форма приложения кинематической схемы), где радиус барабана R= 20.

Рисунок 7 - Исходная форма приложения задачи 2

Рисунок 8 - Форма приложения кинематической схемы

На форме размещены следующие компоненты:

Panel1, Panel2 - это контейнер для других компонентов и позволяет легко управлять компонентами, которые находятся на панели (компоненты, находящиеся на панели, наследуют свойства компонента Panel);

Button1 - командная кнопка для закрытия приложения;

Edit1 - поле редактирования, содержащее значение вводимой величины;

SpiEdit1 - строка, содержащая числовое значение переменной W;

Label1, Label2, Label3 - компоненты для вывода текста, содержащие текст и несущие информацию о назначении других компонентов;

Image1 - место для рисования схемы.

Заключение

При выполнении курсовой работы были закреплены навыки программирования. Изучены способы применения их на практике для решения вычислительных задач в визуальной среде Delphi на языке программирования Object Pascal.

В ходе выполнения работы были написаны приложения для двух задач разного типа.

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

В первой задаче поставлены два условия:

система ограничений, формулы (1.8), проверки существования треугольника;

система ограничений, формулы (1.7), существования формулы (1.5) для расчета наименьшего расстояния до сторон треугольника.

Решение второй задачи предполагает использовать более широкий спектр базовых компонент при программировании:

Panel;

Button;

Edit;

SpiEdit;

Label;

Image.

Реализация заданной кинематической схемы позволяет изучить основы работы с графикой в визуальной среде Delphi.

Изучены методы вычерчивания основных графических примитивов:

MoveTo (x,y);

LineTo (x,y);

Rectangle (x1,y1,x2,y2);

Ellipse (x1,y1,x2,y2)).

Метод вывода текста на графическую поверхность - TextOut (x,y,<Текст>). Изучены свойства основного инструмента, позволяющего рисовать на графической поверхности - карандаш (Pen).

Задачами курсовой работы являлось:

изучить основы работы в среде Delphi;

изучить основные этапы решения задач на ЭВМ;

разработать математические модели решения задач;

изучить методы составления алгоритмов решения задач;

проанализировать результаты работы программ на ЭВМ.

Поставленные задачи в ходе выполнения курсовой работы выполнены в полном объеме.

Список использованных источников

1. Шупрута В.В. Delphi 2005. Учимся программировать / В.В. Шупрута. - М.: НТ Пресс, 2005. - 352с.;

2. Воднев В.Т. Основные математические формулы: справочник / В.Т. Воднев, А.Ф. Наумович, Н.Ф. Наумович. - Мн: Высш. шк., 2000. - 269с.;

3. Прищепов М.А. Программирование на языках Basic, Pascal и Object Pascal в среде Delphi / М.А. Прищепов, Е.В. Севернёва, А.И. Шакирин. - Мн.: ТетраСистемс, 2006. - 320с.;

4. Бескоровайный И.В. Азбука Delphi: программирование с нуля / И.В. Бескоровайный. - Новосибирск: Сиб. унив. изд-во, 2008. - 112с.;

5. Яблонский А.А. Курс теоретической механики / А.А. Яблонский, В.М. Никифорова. - М.: Высш. шк., 1977. - 368с. с ил.;

6. Фаронов В.В. Турбо Паскаль 7.0/В.В. Фаронов. - М.: Нолидж, 2006. - 616с.;

7. Тейксейра С. Borland Delphi6/С. Тейксейра, К. Пачеко. - М.: Нолидж, 2002. - 1120с.;

8. Фаронов В.В. Профессиональная работа в Delphi 6/В.В. Фаронов. - М.: Нолидж, 2002. - 320 с.;

9. Культин И.Б. Программирование в Turbo Pascal 7.0 и Delphi / И.Б. Культин. - СПб.: ВНV, 2003. - 462с.;

10. Яблонский А.А. Сборник заданий для курсовых работ по теоретической механике: Учебное пособие для технических вузов / А.А. Яблонский, С.С. Норейко, С.А. Вольфсон. - М.: Интеграл-Пресс, 2008. - 384с.;

11. Краснов М. Графика в проектах Delphi / М. Краснов. - СПб.: БХВ-Петербург, 2000. - 352с. .

Приложения

Приложение А

Рисунок 9 - Форма приложения с результатами вычислений задачи 1

Приложение В

Рисунок 10 - Форма приложения с результатами вычислений задачи 1

Приложение С

Рисунок 11 - Форма приложения кинематической схемы

Приложение D

Рисунок 12 - Форма приложения кинематической схемы

Страницы: 1, 2



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.