Структура представления данных
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Кузнецкий институт информационных и управленческих технологий
(филиал Пензенского государственного университета)
Кафедра ЕН и ТД
КУРСОВАя работа
по дисциплине «Компьютерные технологии»
Пояснительная записка
Разработал: ст.гр.12кн1
Романов И.
Принял: ст. пр. кафедры ЕН и ТД
Валлиулова Н.А.
Кузнецк 2013
СОДЕРЖАНИЕ
Введение…………………………………………………………………..3
Основная часть……………………………………………………………4
1. Постановка задачи……………………………………………………..4
2. Математическая модель задачи………………………………………5
3. Структура представления данных……………………………………7
4. Программная реализация……………………………………………..8
4.1 Схема и описание алгоритма………………………………...…...8
4.2 Язык (среда) программирования…………………………………10
4.3 Структура программы (проекта)………………………………....11
4.3.1. Функциональное назначение процедур…………………..11
4.3.2. Описание процедур………………………………………...12
4.4. Интерфейс программы…………………………………………….13
5. Анализ результатов (тестирование программы)…………………….14
Заключение……………………………………………………………….15
Список литературы………………………………………………………16
Приложения………………………………………………………………17
Приложение А (листинг программы)
Unit 1………………………………………………………………..17
|
|
Unit 2………………………………………………………………..18
Unit 3………………………………………………………………..19
Unit 4………………………………………………………………..24
Приложение Б (результаты тестирования)………………………………29
Введение
В последнее время резко возрос интерес к программированию. Это связано с развитием и внедрением в повседневную жизнь информационно-коммуникационных технологий. Если человек имеет дело с компьютером, то рано или поздно у него возникает желание, а иногда и необходимость, программировать.
В среде программирования Delphi простота и удобство сочетаются с мощью и гибкостью. Она обеспечивает визуальное проектирование пользовательского интерфейса, имеет развитый объектно-ориентированный язык Object Pascal (позже переименованный в Delphi) и уникальные по своей простоте и мощи средства доступа к базам данных. Язык Delphi по возможностям значительно превзошел язык Basic и даже в чем-то язык C++, но при этом он оказался весьма надежным и легким в изучении (особенно в сравнении с языком C++). В результате, среда Delphi позволила программистам легко создавать собственные компоненты и строить из них профессиональные программы.
Среда Delphi стала, по сути, лучшим средством программирования для операционной системы Windows.
|
|
Постановка задачи
Целью данной курсовой работы является создание программы в среде программирования Delphi, результатом работы которой будет построение графика функции по условиям физической задачи.
Задача:
Какой вид имеют годографы радиус-вектора скорости и ускорения в следующих случаях:
а) тело движется поступательно с постоянной скоростью; с ускорением;
б) материальная точка движется по окружности с постоянной скоростью; с ускорением.
Поскольку построение функции зависит от некоторых параметров, в программе должна предусматриваться возможность задания этих параметров пользователем.
Математическая модель задачи
А) Для поступательного движения имеются следующие формулы:
1) движение с постоянной скоростью
2) движение с постоянным ускорением
Б) Для движения по окружности:
1) движение с постоянной скоростью
2) движение с постоянным ускорением
В ходе решения задачи были построены графики зависимости по данным формулам в программе MathCad.
А) График 1
График 2
Структура представления данных
При написании программы использовались следующие данные:
|
|
1) переменные:
f (x), f2(x) – функции зависимости скорости и ускорения;
V, V0, R – параметры функций;
leftGr, topGr, rightGr, bottomGr – координаты области построения графика;
x, xmin, xmax, stepx – х, его максимально и минимальное значения и шаг;
kx, ky – коэффициенты пересчета в графические координаты;
xGr, yGr, xOrd, yAbs – координаты точек графика;
n – число точек графика.
3) типы данных:
Integer(, real.
Программная реализация
4.1 Схема и описание алгоритма
Алгоритм исполнения программы
1. Вывод на экран начальных условий задачи;
2. выбор пользователем одного из двух исходных вариантов;
3. ввод параметров, необходимых для построения графика;
4. построение графика.
4.2 Язык (среда) программирования
Для создания программы при выполнении данной курсовой работы была выбрана среда программирования Delphi. Это среда быстрой разработки, вкоторой в качестве языка программирования используется язык Delphi. Язык Delphi - строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal.
Итак, Delphi — это среда для визуального проектирования Windows приложений. Основным преимуществом Delphi является его среда программирования с визуальным конструктором программ. Эта среда позволяет эффективно программировать под MS Windows, не отвлекаясь на выяснение всех деталей Win API, а работать над логикой программы. В Delphi нет необходимости программировать стандартные элементы управления Windows, такие как строка редактирования, кнопки и диалоговые окна: все это уже есть в виде готовых шаблонов компонентов.
|
|
Преимущества Delphi:
- быстрота разработки приложения;
- удобный интерфейс;
- высокая производительность разработанного приложения;
- низкие требования разработанного приложения к ресурсам компьютера;
- наращиваемость за счет встраивания новых компонент и инструментов в среду Delphi;
- язык поддерживает обработки исключительных ситуаций, а также перегрузку методов и подпрограмм;
и др.
4.3 Структура программы
4.3.1 Функциональное назначение процедур
В программе использовались процедуры для:
1) перехода с одной формы на другую;
3) определения действий программы в зависимости от выбора пользователя;
4) обработки данных, введенных в поле редактирования с клавиатуры;
5) обработки исключительных случаев;
6) построения графика.
Описание процедур
1) Процедура перехода с одной формы на другую.
При нажатии на кнопку «Далее», осуществляется переход между формами: начальная скрывается с помощью отключения ее видимости (Form1.Visible:=False), а вторая – выводится на экран (Form2.Show).
2) Определение действий программы в зависимости от выбора пользователя.
В программе необходимо предусмотреть выбор одного из двух исходных условий(тело движется поступательно или материальная точка движется по окружност). Для этого имеются элементы RadioButton, с помощью которых и осуществляется выбор, влияющий на дальнейшие действия программы (см. Приложение А, Unit2)
3) Обработка данных, введенных в поле редактирования с клавиатуры.
Для построения графика необходимы параметры, вводимые пользователем с клавиатуры в поле ввода. Данные значения параметров присваиваются различным переменным, которые затем будут использованы в функции построения графика. (см. Приложение А, Unit3, Unit4)
4) Процедура обработки исключительных случаев.
В программе необходимо учесть исключительные случаи, например, когда поле ввода параметра осталось пустым, а следовательно построение графика невозможно. В таком случае программа показывает сообщение: «Необходимо ввести значение» (см. Приложение А, Unit3, Unit4; Приложение Б, Рисунок3).
6) Построение графика
Построение графика включает следующие этапы:
-очистка холста перед началом построения;
-определение минимального и максимального значения х;
- определение области построения графика;
- определение коэффициентов пересчета в графические координаты;
- построение и разметка оси Х;
- построение оси Y;
- определение параметров графика (цвет, толщина линии);
- построение первой точки графика;
- построение остальных точек и соединение их линией.
Интерфейс программы
Интерфейс программы включает следующие элементы:
1) Формы.
Формы – основные визуальные компоненты проекта, но которых располагаются все остальные элементы.
2) Метки.
Метки представляют собой элементы, расположенные на форме и содержащие текст (условия задачи, пояснения и т.п.)
3) Кнопки.
С помощью кнопок осуществляются различные действия – построение графика, переход между формами.
4) Радиокнопки.
С помощью радиокнопок осуществляется выбор одного из трех вариантов начальных условий задачи.
5) Поля вода.
С помощью данных компонентов пользователь программы вводит значения параметров функции, которые зетам присваиваются переменным. Программными средствами обеспечен ввод в эти поля только числовых данных.
6) Холсты.
Данные элементы необходимы для построения графиков функций.
Тестирование программы
После запуска программы открывается первая форма с титульным листом, содержащим информацию о работе (Приложение Б, Рисунок 1).
На данной форме имеется кнопка «Далее», после нажатия которой становится видимой форма №2 (Приложение Б, Рисунок 2).
На второй форме расположены элементы Label (в которых описываются условия задачи), радиокнопки (от выбора одной из которых зависят дальнейшие действия программы), кнопки «Далее» и «Назад». Для продолжения работы необходимо выбрать одну из радиокнопок и нажать «Далее». После этого программа, в зависимости от выбранного пункта, отображает одну из форм для построения конечного графика.
На данных формах имеются поля ввода параметров, кнопки «Равномерно» и «Равноускоренно» (для построения графиков равномерного и равноускоренного движения), кнопка «Назад» (для возврата на форму, где осуществляется выбор исходной зависимости) и кнопка «Выход». При вводе всех необходимых параметров, после нажатия кнопки «Равномерно» или «Равноускоренно», программа строит соответствующий график. Если же значение параметра не введено, то выводится сообщение: «Необходимо ввести значение» (Приложение Б, Рисунок 3).
Заключение
Представленная в данной курсовой работе программа позволяет решать задачу построения графиков функций по условиям физической задачи.
В работе выполнены алгоритмы и блок-схемы задач, листинги программы, а также результаты ее тестирования.
Список литературы
1. В.Фаронов - язык программирования Delphi
2. Н.Б.Культин - Основы программирования в Delphi
3. newdelphi.net
4. cyberforum.ru
Приложения
Приложение А (листинг программы)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Visible:=False;
Form2.Visible:=True;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1, Unit3, Unit4;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
Form2.Visible:=False;
Form1.Visible:=True;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
begin if RadioButton1.Checked=true then begin Form2.Visible:=False; Form3.Show; end; end;
begin if RadioButton2.Checked=true then begin Form2.Visible:=False; Form4.Show; end; end;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm3 = class(TForm)
Label2: TLabel;
Button1: TButton;
Label3: TLabel;
Edit1: TEdit;
Label4: TLabel;
Edit2: TEdit;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Label1: TLabel;
Edit3: TEdit;
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure edit1KeyPress(Sender: TObject; var Key: Char);
procedure edit2KeyPress(Sender: TObject; var Key: Char);
procedure edit3KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
Edti1, Edti2, Edti3: TEdit;
implementation
uses Unit2;
{$R *.dfm}
function f1(x:real):real;
var V: Real;
begin
v:=StrToFloat(Form3.Edit1.text);
f1:=v*x;
end;
function f2(x2:real):real;
var v0, a: real;
begin
v0:=StrToFloat(Form3.Edit2.text);
a:=StrToFloat(Form3.Edit3.text);
f2:=v0*x2+(a*x2*x2)/2;
end;
procedure TForm3.edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of'0'..'9', chr(8):;
else key:=chr(0);
end;
end;
procedure TForm3.edit2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of '0'..'9', chr(8):;
else key:=chr(0);
end;
end;
procedure TForm3.edit3KeyPress(Sender: TObject; var Key: Char);
begin
case Key of '0'..'9', chr(8):;
else key:=chr(0);
end;
end;
procedure TForm3.Button3Click(Sender: TObject);
begin
form3.Visible:=False;
form2.Visible:=True;
end;
procedure TForm3.Button4Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TForm3.Button1Click(Sender: TObject);
var
leftGr, topGr, rightGr, bottomGr: integer;
x, xmin, xmax, stepx: real;
kx, ky: real;
xGr, yGr, xOrd, yAbs: integer;
n: integer;
begin
if edit1.text='' then MessageDlg('Необходимо ввести значение V', mtWarning, [mbOK], 0)
else
begin
canvas.fillrect(canvas.cliprect);
xmin:=-10;
xmax:=10;
stepx:=0.5;
with ClientRect do
begin
Canvas.Pen.Style:= psSolid;
leftGr:=left+150;
topGr:=top+150;
rightGr:=Right-150;
bottomGr:=bottom-50;
kx:=(rightGr-leftGr)/(xmax-xmin);
ky:=(bottomGr-topGr)/200.0;
xOrd:=(leftGr+rightGr) div 2;
yAbs:=(topGr+bottomGr) div 2;
Canvas.Pen.Color:= clBLACK;
Canvas.Brush.Color:= Form3.Color;
Canvas.MoveTo(leftGr, yAbs);
Canvas.LineTo(rightGr, yAbs);
x:=xmin;
n:=Round((xmax-xmin)/2);
while n>=0 do
begin
xGr:=xOrd+Round(x*kx);
Canvas.MoveTo(xGr, yAbs-5);
Canvas.LineTo(xGr, yAbs+5);
Canvas.TextOut(xGr, yAbs+10, FloatToStr(x));
x:=x+2;
n:=n-1;
end;
Canvas.MoveTo(xOrd, topGr);
Canvas.LineTo(xOrd, bottomGr);
Canvas.Pen.Color:=clBlue;
Canvas.Pen.Width:=3;
xGr:=xOrd+Round(xmin*kx);
yGr:=yAbs-Round(f1(xmin)*ky);
Canvas.MoveTo(xGr,yGr);
x:=xmin+stepx;
n:=Round((xmax-xmin)/stepx)-1;
while n>=0 do
begin
if (x<-0.5) or (x>-0.4) then
begin
xGr:=xOrd+Round(x*kx);
yGr:=yAbs-Round(f1(x)*ky);
Canvas.LineTo(xGr,yGr);
end;
x:=x+stepx;
n:=n-1;
end;
end;
end;
end;
procedure TForm3.Button2Click(Sender: TObject);
var
leftGr2, topGr2, rightGr2, bottomGr2: integer;
x2, xmin2, xmax2, stepx2: real;
kx2, ky2: real;
xGr2, yGr2, xOrd2, yAbs2: integer;
n2: integer;
begin
if edit2.text='' then MessageDlg('Необходимо ввести все значения', mtWarning, [mbOK], 0)
else
if edit3.text='' then MessageDlg('Необходимо ввести все значения', mtWarning, [mbOK], 0)
else
begin
canvas.fillrect(canvas.cliprect);
xmin2:=-10;
xmax2:=10;
stepx2:=0.5;
with ClientRect do
begin
Canvas.Pen.Style:= psSolid;
leftGr2:=left+150;
topGr2:=top+150;
rightGr2:=Right-150;
bottomGr2:=bottom-50;
kx2:=(rightGr2-leftGr2)/(xmax2-xmin2);
ky2:=(bottomGr2-topGr2)/200.0;
xOrd2:=(leftGr2+rightGr2) div 2;
yAbs2:=(topGr2+bottomGr2) div 2;
Canvas.Pen.Color:= clBLACK;
Canvas.Brush.Color:= Form3.Color;
Canvas.MoveTo(leftGr2, yAbs2);
Canvas.LineTo(rightGr2, yAbs2);
x2:=xmin2;
n2:=Round((xmax2-xmin2)/2);
while n2>=0 do
begin
xGr2:=xOrd2+Round(x2*kx2);
Canvas.MoveTo(xGr2, yAbs2-5);
Canvas.LineTo(xGr2, yAbs2+5);
Canvas.TextOut(xGr2, yAbs2+10, FloatToStr(x2));
x2:=x2+2;
n2:=n2-1;
end;
Canvas.MoveTo(xOrd2, topGr2);
Canvas.LineTo(xOrd2, bottomGr2);
Canvas.Pen.Color:=clBlue;
Canvas.Pen.Width:=3;
xGr2:=xOrd2+Round(xmin2*kx2);
yGr2:=yAbs2-Round(f2(xmin2)*ky2);
Canvas.MoveTo(xGr2,yGr2);
x2:=xmin2+stepx2;
n2:=Round((xmax2-xmin2)/stepx2)-1;
while n2>=0 do
begin
if (x2<-0.5) or (x2>-0.4) then
begin
xGr2:=xOrd2+Round(x2*kx2);
yGr2:=yAbs2-Round(f2(x2)*ky2);
Canvas.LineTo(xGr2,yGr2);
end;
x2:=x2+stepx2;
n2:=n2-1;
end;
end;
end;
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm4 = class(TForm)
Label2: TLabel;
Button1: TButton;
Label3: TLabel;
Edit1: TEdit;
Button2: TButton;
Label1: TLabel;
Edit2: TEdit;
Button3: TButton;
Button4: TButton;
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure edit1KeyPress(Sender: TObject; var Key: Char);
procedure edit2KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses Unit2;
{$R *.dfm}
function f1(x:real):real;
var V: Real;
begin
v:=StrToFloat(Form4.Edit1.text);
f1:=v*x;
end;
function f2(x2:real):real;
var R: real;
begin
R:=StrToFloat(Form4.Edit2.text);
f2:=x2*x2/r;
end;
procedure TForm4.edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of '0'..'9', chr(8):;
else key:=chr(0);
end;
end;
procedure TForm4.edit2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of '0'..'9', chr(8):;
else key:=chr(0);
end;
end;
procedure TForm4.Button3Click(Sender: TObject);
begin
form4.Visible:=False;
form2.Visible:=True;
end;
procedure TForm4.Button4Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TForm4.Button1Click(Sender: TObject);
var
leftGr, topGr, rightGr, bottomGr: integer;
x, xmin, xmax, stepx: real;
kx, ky: real;
xGr, yGr, xOrd, yAbs: integer;
n: integer;
begin
if edit1.text='' then MessageDlg('Необходимо ввести значение V', mtWarning, [mbOK], 0)
else
begin
canvas.fillrect(canvas.cliprect);
xmin:=-10;
xmax:=10;
stepx:=0.5;
with ClientRect do
begin
Canvas.Pen.Style:= psSolid;
leftGr:=left+150;
topGr:=top+150;
rightGr:=Right-150;
bottomGr:=bottom-50;
kx:=(rightGr-leftGr)/(xmax-xmin);
ky:=(bottomGr-topGr)/200.0;
xOrd:=(leftGr+rightGr) div 2;
yAbs:=(topGr+bottomGr) div 2;
Canvas.Pen.Color:= clBLACK;
Canvas.Brush.Color:= Form4.Color;
Canvas.MoveTo(leftGr, yAbs);
Canvas.LineTo(rightGr, yAbs);
x:=xmin;
n:=Round((xmax-xmin)/2);
while n>=0 do
begin
xGr:=xOrd+Round(x*kx);
Canvas.MoveTo(xGr, yAbs-5);
Canvas.LineTo(xGr, yAbs+5);
Canvas.TextOut(xGr, yAbs+10, FloatToStr(x));
x:=x+2;
n:=n-1;
end;
Canvas.MoveTo(xOrd, topGr);
Canvas.LineTo(xOrd, bottomGr);
Canvas.Pen.Color:=clBlue;
Canvas.Pen.Width:=3;
xGr:=xOrd+Round(xmin*kx);
yGr:=yAbs-Round(f1(xmin)*ky);
Canvas.MoveTo(xGr,yGr);
x:=xmin+stepx;
n:=Round((xmax-xmin)/stepx)-1;
while n>=0 do
begin
if (x<-0.5) or (x>-0.4) then
begin
xGr:=xOrd+Round(x*kx);
yGr:=yAbs-Round(f1(x)*ky);
Canvas.LineTo(xGr,yGr);
end;
x:=x+stepx;
n:=n-1;
end;
end;
end;
end;
procedure TForm4.Button2Click(Sender: TObject);
var
leftGr2, topGr2, rightGr2, bottomGr2: integer;
x2, xmin2, xmax2, stepx2: real;
kx2, ky2: real;
xGr2, yGr2, xOrd2, yAbs2: integer;
n2: integer;
begin
if edit2.text='' then MessageDlg('Необходимо ввести все значения', mtWarning, [mbOK], 0)
else
begin
canvas.fillrect(canvas.cliprect);
xmin2:=-10;
xmax2:=10;
stepx2:=0.5;
with ClientRect do
begin
Canvas.Pen.Style:= psSolid;
leftGr2:=left+150;
topGr2:=top+150;
rightGr2:=Right-150;
bottomGr2:=bottom-50;
kx2:=(rightGr2-leftGr2)/(xmax2-xmin2);
ky2:=(bottomGr2-topGr2)/200.0;
xOrd2:=(leftGr2+rightGr2) div 2;
yAbs2:=(topGr2+bottomGr2) div 2;
Canvas.Pen.Color:= clBLACK;
Canvas.Brush.Color:= Form4.Color;
Canvas.MoveTo(leftGr2, yAbs2);
Canvas.LineTo(rightGr2, yAbs2);
x2:=xmin2;
n2:=Round((xmax2-xmin2)/2);
while n2>=0 do
begin
xGr2:=xOrd2+Round(x2*kx2);
Canvas.MoveTo(xGr2, yAbs2-5);
Canvas.LineTo(xGr2, yAbs2+5);
Canvas.TextOut(xGr2, yAbs2+10, FloatToStr(x2));
x2:=x2+2;
n2:=n2-1;
end;
Canvas.MoveTo(xOrd2, topGr2);
Canvas.LineTo(xOrd2, bottomGr2);
Canvas.Pen.Color:=clBlue;
Canvas.Pen.Width:=3;
xGr2:=xOrd2+Round(xmin2*kx2);
yGr2:=yAbs2-Round(f2(xmin2)*ky2);
Canvas.MoveTo(xGr2,yGr2);
x2:=xmin2+stepx2;
n2:=Round((xmax2-xmin2)/stepx2)-1;
while n2>=0 do
begin
if (x2<-0.5) or (x2>-0.4) then
begin
xGr2:=xOrd2+Round(x2*kx2);
yGr2:=yAbs2-Round(f2(x2)*ky2);
Canvas.LineTo(xGr2,yGr2);
end;
x2:=x2+stepx2;
n2:=n2-1;
end;
end;
end;
end;
end.
Дата добавления: 2018-02-18; просмотров: 673; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!