|
||||||||||||
|
||||||||||||
|
|||||||||
МЕНЮ
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Разработка приложений в визуальной среде Delphi на языке программирования Object PascalРазработка приложений в визуальной среде Delphi на языке программирования Object Pascal2 Содержание
+ ? + ? Рисунок 3 - Блок-схема решения задачи 1 При решении задач часто приходится выполнять многократные вычисления не только по одним и тем же формулам, но и по одним и тем же алгоритмам, в которых изменяются значения только некоторых переменных. В этом случае повторяющиеся части целесообразно оформлять в виде отдельных модулей - подпрограмм, дополняющих основную программу. Использование подпрограмм не только освобождает от переписывания повторяющихся фрагментов программного текста, но и улучшает наглядность и структуру программы, позволяет перейти к модульному программированию и оптимизировать программу, создать личную библиотеку программных модулей. В Delphi подпрограммы оформляют в виде процедур и функций, которые входят в основную программу путем соответствующего описания. Для решения задачи была использована подпрограмма, оформленная в виде функции пользователя, рисунок 4 (Блок-схема подпрограммы задачи 1). Функция пользователя ? это один из способов оформления подпрограммы или фрагмента программы, предназначенного для решения части общей задачи [4]. Функция пользователя предназначена для вычисления только одного значения и передается в основную программу как значение одной переменной с именем этой функции. Параметры, записываемые в обращении к функции, называются фактическими, а параметры, указанные в ее описании, ? формальными. В теле функции обязательно должен быть хотя бы один оператор присваивания, где в левой части стоит имя функции, а в правой - её значение. Иначе значение функции не будет определено. 2 Рисунок 4 - Блок-схема подпрограммы задачи 1 2.2 Задача 2. Алгоритм решенияНа основании созданной математической модели задачи 2 составим алгоритм программного приложения.Алгоритм приложения задачи 2 является линейным, в нём операции выполняются последовательно одна за другой, в естественном и единственном порядке следования. Все операции имеют последовательное соединение логической связью передачи информационных потоков [3].Для простых приложений не требуются блок - схемы алгоритмов. Составим алгоритм в вербальной форме.В связи с изменением геометрических характеристик системы в зависимости от переменной W, алгоритм предполагает наличие следующих действий:ввод значения радиуса барабана (R);определение констант (размеры стержней АВ и СD);определение значения угла W;определение положения точки начала координат О (х0, у0);определение значения переменной W1;определение координат точек, которые определяют положение механизма;производим рисование элементов на экране;закрытие программного приложения.3. Описание основных операторов, процедур, функций и методовПри написании программного кода задачи 1 использовался условный оператор. Он позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие. Таким образом, условный оператор - это средство ветвления вычислительного процесса.Структура условного оператора имеет следующий вид [1]:if <условие> then <оператор1> else <оператор2>,где: if/ then/ else - зарезервированные слова (если, то, иначе);<условие> - произвольное выражение логического типа;<оператор1>, <оператор2> - любые операторы языка Object Pascal.Условный оператор работает по следующему алгоритму. Вначале вычисляется условное выражение <условие>. Если результат есть True (истина), то выполняется <оператор1>, а <оператор2> пропускается; если результат есть False (ложь), наоборот, <оператор1> пропускается, а выполняется <оператор2>. Условными называются выражения, имеющие одно из двух возможных значений: истина или ложь. Такие выражения чаще всего получаются при сравнении переменных с помощью операций отношения =, <>, >, >=, <, <=. Сложные логические выражения составляются с использованием логических операций and (логическое И), or (логическое ИЛИ) и not (логическое НЕ).В процессе создания программного приложения задачи1 использовались следующие функции:функция преобразования типаStrToFloat (const S: string): Extended;преобразует строку S в вещественное число [4]. Строка должна содержать знак, цифры и десятичный разделитель в порядке, характерном для записи десятичных дробей. Также строка может содержать мантиссу, состоящую из знака, буквы Е и целого числа. Пробелы в начале и в конце строки игнорируются. Если S имеет другой формат, функция возвращает сообщение об ошибке;функция обратного преобразования типа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;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls,Math;typeTForm1 = 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;varForm1: TForm1;implementation{$R *. dfm}procedure TForm1. Button2Click (Sender: TObject);beginclose;end;procedure TForm1. Button3Click (Sender: TObject);beginLabel15. Caption: = ('');end;procedure TForm1. Button1Click (Sender: TObject);varx1,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;vard0: real;begind0: =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 elseif ( (d2<=d1) and (d2<=d3)) then d: =d2 else d: =d3;end;Label15. Caption: ='d='+floattostr (d) +'см';end; end;end.Программный код разработанного приложения к задаче2.unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls, Spin, Math;typeTForm1 = 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;varForm1: TForm1;implementation{$R *. dfm}procedure TForm1. Button1Click (Sender: TObject);beginclose;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; // определение значения угла WW: =spinedit1. value*pi/180; // задание точки определяющей начало координатx0: =round (form1. image1. width/2);y0: =round (form1. image1. height/2); // вычисление значения угла W1w1: =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 dobeginellipse (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 - Форма приложения кинематической схемы |
РЕКЛАМА
|
|||||||||||||||||
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА | ||
© 2010 |