Розробка засобами Delphi дидактичного ілюстративного матеріалу для розв’язання задачі з аналітичної геометрії. Побудова в координатній площині логарифмічних спіралей

Логарифмічна спіраль у координатній площині та її властивості. Математичне розв’язання задачі на основі теоретичного матеріалу з аналітичної геометрії. Створення Windows-додатка в середовищі візуального програмування Delphi. Розробка алгоритмів процедур.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 30.10.2009
Размер файла 1,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Рисунок 27 - Приклад роботи програми (при q>1)

Рисунок 28 - Приклад роботи програми (при q<1)

Рисунок 29 - Приклад роботи програми (при q=1)

Висновки

Даний курсовий проект полягав у розробці дидактичного ілюстративного матеріалу для побудови логарифмічних спіралей в Delphi. Під час розробки додатку були вивчені теоретичні відомості з аналітичної геометрії, які згодом були застосовані у розробці. Отже, «поведінка» спіралі, що будується додатком, цілком відповідає теоретичним свідоцтвам про неї. Для цього був створений проект, що містить різноманітні форми, перелік файлів який приведений у Таблиці 1.

Аналізуючи отриманий результат, до переваг можна віднести зручність програми у використанні, зручний та інтуїтивно зрозумілий інтерфейс додатку, приємне графічне оформлення вікон та наявність функцій, які користувач може налаштувати під себе: ввімкнення та відключення відображення сітки, зміна умов масштабування.

До недостатків можна віднести деякі можливі помилки програми, що можуть виникнути із-за властивостей персональних систем як-то: повідомлення о помилці при спробі визвати Word-додаток через компонент OLE у підменю «Аналитическое решение», або повідомлення про помилку та неможливість, через це, побудови спіралі при введенні у поле для введення плаваючої коми. Ці недоліки аналізуються та зрештою будуть усунені.

Загалом же результат розробки можна вважати позитивним.

Таблица 1 - Файли проекту

№ з/п

Имя файлу

Опис

Розмір

1.

background.bmp

малюнок фону головної форми

28 КБ

2.

background_h.bmp

малюнок фону у формах меню

147 КБ

3.

Help_1.bmp

малюнки довідки

931 КБ

4.

Help_2.bmp

875 КБ

5.

LSpir.dfm

головна форма formMein

252 КБ

6.

LSpir.pas

код класу formMein

10 КБ

7.

LSpir_about.dfm

форма о програмі formAbout

181 КБ

8.

LSpir_about.pas

код класу formAbout

1 КБ

9.

LSpir_cons.dpr

файл проекту консольного додатку

1 КБ

10.

LSpir_cons.exe

виконуючий файл консольного додатку

18 КБ

11.

LSpir_help.dfm

форма довідки formHelp

4 072 КБ

12.

LSpir_help.pas

код класу formHelp

2 КБ

13.

LSpir_math.dfm

форми аналітичного рішення formMath

1 666 КБ

14.

LSpir_math_2.dfm

2 КБ

15.

LSpir_math.pas

коди класу formMath

1 474 КБ

16.

LSpir_math_2.pas

2 КБ

17.

LSpir_zas.dfm

форма заставки formVignette

410 КБ

18.

LSpir_zas.pas

код класу formVignette

1 КБ

19.

math_1.doc

Word-додатки аналітичного рішення

97 КБ

20.

math_2.doc

86 КБ

21.

math_3.doc

53 КБ

22.

Project_LSpir.cfg

файл конфігурації проекту

1 КБ

23.

Project_LSpir.dpr

файл проекту

1 КБ

24.

Project_LSpir.exe

виконуючий файл проекту

4 126 КБ

25.

Project_LSpir.res

ресурси проекту

1 КБ

26.

_files

тека, що містить файли (загалом графічні), які використовувались у розробці проекту. Надаються разом із файлами проекту для подальшого редагування, якщо це буде потрібно

1 063 МБ

Список використаних джерел

1. Інтернет-ресурс: http://ru.wikipedia.org/ (онлайн енциклопедія).

2. Інтернет-ресурс: http://expert.Delphi.int.ru/ (онлайн довідник по Delphi).

3. Выгодский М. Я. Справочник по высшей математике -- М.: АСТ: Астрель, 2006. -- 991 с.: ил.

4. Конопка Р. Создание оригинальных компонент в среде Delphi: пер. с англ. -- К.: НИПФ -- «ДиаСофт Лтд.», 1996. -- 512 с.

5. Сухарёв М. В. Основы Delphi. Профессиональный подход -- СПб.: Наука и Техника, 2004. -- 600 с.: ил.

6. Бондаренко, М.А. Программирование в Delphi -- Харьков : б.н., 2005.

7. Маркушевич А.И., Замечательные кривые -- М., 1978 г., 48 с.: ил.

8. Бобровский С. Delphi 5 -- М.: Питер, 2002. -- 346 с.: ил.

9. Гаевский А. Разработка программных приложений на Delphi 6 - М.: Киев, 2000. -- 457 с.

10. Коцюбинский А.О., Грошев С.В. Язык программирования Delphi 5 -- М.: «Издательство Триумф», 1999. -- 288 с.

11. Леонтьев В. Delphi 5 -- М.: Москва «Олма-Пресс», 1999. -- 446 с.

12. Ильина Т.А. Программирование на Delphi 6 -- М.: Питер, 2000. -- 318 с.

13. Шапошников И. Delphi 5 -- М.: Санкт-Петербург, 2001. -- 203 с.

14. Інтернет-ресурс: http://beluch.ru/progr/100comp/index.htm (онлайн довідник о компонентах Delphi).

Додаток 1

Програмний код додатку

Головна форма:

unit LSpir;

interface

uses

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

Dialogs, StdCtrls, ShellApi, Buttons, ExtCtrls, Menus, ButtonComps,

ComCtrls;

type

TformMain = class(TForm)

PaintBox1: TPaintBox;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

MainMenu1: TMainMenu;

j1: TMenuItem;

N1: TMenuItem;

GroupBox1: TGroupBox;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N9: TMenuItem;

ImageButton3: TImageButton;

GroupBox2: TGroupBox;

ImageButton1: TImageButton;

ImageButton2: TImageButton;

CheckBox1: TCheckBox;

GroupBox3: TGroupBox;

TrackBar1: TTrackBar;

Label4: TLabel;

CheckBoxPlus: TCheckBox;

CheckBoxMin: TCheckBox;

procedure FormPaint(Sender: TObject);

procedure PaintBox1Paint(Sender: TObject);

procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState;

X,Y: Integer);

procedure N5Click(Sender: TObject);

procedure ImageButton1Click(Sender: TObject);

procedure ImageButton2Click(Sender: TObject);

procedure ImageButton3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure CheckBox1Click(Sender: TObject);

procedure TrackBar1Change(Sender: TObject);

procedure Edit3KeyPress(Sender: TObject; var Key: Char);

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure N2Click(Sender: TObject);

procedure CheckBoxPlusClick(Sender: TObject);

procedure CheckBoxMinClick(Sender: TObject);

private

procedure Line(x1,y1,x2,y2: integer; const dep: byte = 1);

public

{ Public declarations }

end;

procedure Delay(ms : longint);

var

formMain: TformMain;

centerX, centerY, dp: integer;

spiral: boolean;

z:integer;

const

xmin = -8; xmax = 6;

ymin = -6; ymax = 8;

implementation

uses LSpir_zas, LSpir_math, LSpir_about, LSpir_Help;

{$R *.dfm}

//Задержка

procedure Delay(ms : longint);

var

t1 : longint;

begin

t1:=GetTickCount;

while (GetTickCount - t1) < ms do Application.ProcessMessages;

end;

//Фоновый рисунок

procedure TformMain.FormPaint(Sender: TObject);

var

x,y: integer;

pic: TGraphic;

begin

pic:=TBitmap.Create;

pic.LoadFromFile('background.bmp');

x:=0; y:=0;

while y < Height do

begin

while x < Width do

begin

Canvas.Draw(x,y,pic);

x:=x+pic.Width;

end;

x:=0;

y:=y+pic.Height;

end;

pic.Free;

end;

//Построение линии

procedure TformMain.Line(x1, y1, x2, y2: integer; const dep: byte);

begin

with PaintBox1.Canvas do

begin

Pen.Width:=dep;

MoveTo(centerX+(x1*dp),centerY-(y1*dp));

LineTo(centerX+(x2*dp),centerY-(y2*dp));

end;

nd;

//Трансляция координат

procedure TformMain.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState;

X,Y: Integer);

begin

Label4.Caption:=Format('X = %d, Y = %d',[X,Y]);

end;

//Построение координатной плоскости и спирали

procedure TformMain.PaintBox1Paint(Sender: TObject);

var

x,y,m,i,n: integer;

w,h,p0,p1,p2: integer;

fi,p,a,q,k: real;

begin

w:=PaintBox1.Width;

h:=PaintBox1.Height;

dp:=TrackBar1.Position;

with PaintBox1.Canvas do

begin

Pen.Width:=3;

Pen.Color:=clBlack;

Brush.Color:=clWhite;

Rectangle(0,0,w,h);

//центр координатной оси

centerX:=w div 2;

centerY:=h div 2;

//черчение сетки

if CheckBox1.Checked then

begin

for i:=0 to 36 do

begin

Line(-18, 18-i, 18, 18-i);

Line(18-i, 18, 18-i, -18);

end;

end;

//оцифровка

i:=0;

m:=0;

repeat

x:=xmin+m;

y:=ymin+m;

if (x <> 0) and (x <= xmax) then TextOut(centerX+(xmin*dp)+i+1, centerY, IntToStr(x));

if (y <> 0) and (y <= ymax) then TextOut(centerX+5, centerY-(ymin*dp)-i-5, IntToStr(y));

i:=i+dp;

m:=m+1;

until i > w;

//построение координатной оси

Pen.Color:=clRed;

Line(xmin, 0, xmax, 0, 2); //координатная ось X

Line(0, ymin, 0, ymax, 2); //координатная ось Y

//подписи осей

TextOut(centerX+(xmax*dp)+10,centerY-15,'X');

TextOut(centerX-14,centerY-(ymax*dp)-14,'Y');

//построение спирали

if z=1 then

begin

n:=StrToInt(Edit1.Text);

p0:=StrToInt(Edit2.Text)*dp; //введённое значение полярного радиуса

//умножаем на шаг сетки, для того чтобы

//данный радиус строился в соответствии с

//координатной плоскосью, а не по пикселям

q:=StrToFloat(Edit3.Text);

a:=1;

while a < 360 * n do //расчитываем радиус, увеличивая угол

begin //от 0 до 360 градусов

fi:=a*(pi/180);//расчитываем угол fi

k:=(ln(q))/(2*pi);

p:=p0*exp(k*fi);

p1:=centerX+trunc(p*cos(fi));

p2:=centerY-trunc(p*sin(fi));

PaintBox1.Canvas.Pixels[p1,p2]:=clBlue;

a:=a+0.1; //шаг

end;

end;

end;

end;

//Цифровая маска для q

procedure TformMain.Edit3KeyPress(Sender: TObject; var Key: Char);

var

vrPos, vrLength, vrSelStart: byte;

const

I: byte = 1; //I+1 = количество знаков после запятой (в данном случае - 2 знака)

begin

with Sender as TEdit do

begin

vrLength:= Length(Text); //определяем длину текста

vrPos:= Pos(',', Text); //проверяем наличие запятой

vrSelStart:= SelStart; //определяем положение курсора

end;

case Key of

'0'..'9':

begin

//проверяем положение курсора и количество знаков после запятой

if (vrPos > 0) and (vrLength - vrPos > I) and (vrSelStart >= vrPos) then

Key := #0; //"погасить" клавишу

end;

',', '.':

begin

//если запятая уже есть, если запятую пытаются поставить перед

//числом или никаких цифр в поле ввода еще нет

if (vrPos > 0) or (vrSelStart = 0) or (vrLength = 0) then

Key := #0 //"погасить" клавишу

else

Key:= #44; //всегда заменять точку на запятую

end;

#8: ; //позволить удаление знаков клавишей 'Back Space'

else

Key:= #0; //"погасить" все остальные клавиши

end;

end;

//Цифровая маска для p0

procedure TformMain.Edit2KeyPress(Sender: TObject; var Key: Char);

var

vrP0, vrLength, vrSelStart: byte;

begin

with Sender as TEdit do

begin

vrLength:= Length(Text); //определяем длину текста

vrP0:= pos('',Text); //проверяем наличие символов

vrSelStart:= SelStart; //определяем положение курсора

end;

case Key of

'1'..'6':

begin

//

if (vrP0 > 6) then

Key := #0; //"погасить" клавишу

end;

#8: ; //позволить удаление знаков клавишей 'Back Space'

else

Key := #0; //"погасить" все остальные клавиши

end;

end;

//Цифровая маска для n

procedure TformMain.Edit1KeyPress(Sender: TObject; var Key: Char);

var

vrP0, vrLength, vrSelStart: byte;

begin

with Sender as TEdit do

begin

vrLength:= Length(Text); //определяем длину текста

vrP0:= pos('',Text); //проверяем наличие запятой

vrSelStart:= SelStart; //определяем положение курсора

end;

case Key of

'1'..'9':

begin

//

if (vrP0 > 9) then

Key := #0; //"погасить" клавишу

end;

#8: ; //позволить удаление знаков клавишей 'Back Space'

else

Key := #0; //"погасить" все остальные клавиши

end;

end;

//Показать спираль

procedure TformMain.ImageButton1Click(Sender: TObject);

begin

z:=1;

PaintBox1.Repaint;

end;

//Удалить спираль

procedure TformMain.ImageButton2Click(Sender: TObject);

begin

z:=0;

PaintBox1.Repaint;

end;

//Показать/Скрыть сетку

procedure TformMain.CheckBox1Click(Sender: TObject);

begin

PaintBox1.Repaint;

end;

//Выделение ползунка

procedure TformMain.TrackBar1Change(Sender: TObject);

begin

Trackbar1.SelStart:=Trackbar1.Min;

Trackbar1.SelEnd:=Trackbar1.Position;

PaintBox1.Repaint;

end;

//Вызов консольного приложения

procedure TformMain.N5Click(Sender: TObject);

begin

ShellExecute(formMain.Handle, nil, PChar('LSpir_cons.exe'), nil, nil, SW_ShowNormal);

end;

//'Аналитическое решение'

procedure TformMain.N4Click(Sender: TObject);

begin

formMath_1.ShowModal;

end;

//'О программе'

procedure TformMain.N9Click(Sender: TObject);

begin

formAbout.Show;

end;

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

procedure TformMain.ImageButton3Click(Sender: TObject);

begin

close;

end;

//Показать справку

procedure TformMain.N2Click(Sender: TObject);

begin

formHelp.Show;

end;

procedure TformMain.CheckBoxPlusClick(Sender: TObject);

begin

if CheckBoxPlus.Checked then

begin

TrackBar1.Max:=50;

TrackBar1.Min:=23;

TrackBar1.Position:=23;

CheckBoxMin.Checked:=False;

end;

end;

procedure TformMain.CheckBoxMinClick(Sender: TObject);

begin

if CheckBoxMin.Checked then

begin

TrackBar1.Max:=23;

TrackBar1.Min:=13;

TrackBar1.Position:=23;

CheckBoxPlus.Checked:=False;

end;

end;

end.

Форма заставки:

unit LSpir_zas;

interface

uses

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

Dialogs, ExtCtrls, jpeg;

type

TformVignette = class(TForm)

Image1: TImage;

private

{ Private declarations }

public

{ Public declarations }

end;

var

formVignette: TformVignette;

implementation

{$R *.dfm}

end.

Форма «О программе»:

unit LSpir_about;

interface

uses

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

Dialogs, ComCtrls, jpeg, ExtCtrls, StdCtrls;

type

TformAbout = class(TForm)

Image1: TImage;

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Bevel1: TBevel;

private

{ Private declarations }

public

{ Public declarations }

end;

var

formAbout: TformAbout;

implementation

{$R *.dfm}

end.

Форма «Аналитическое решение»(1):

unit LSpir_math;

interface

uses

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

Dialogs, ExtCtrls, ComCtrls, StdCtrls, ButtonComps, OleCtnrs;

type

TformMath_1 = class(TForm)

ImageButton1: TImageButton;

ImageButton3: TImageButton;

OleContainer1: TOleContainer;

OleContainer2: TOleContainer;

procedure ImageButton3Click(Sender: TObject);

procedure ImageButton1Click(Sender: TObject);

procedure FormPaint(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

formMath_1: TformMath_1;

implementation

uses LSpir_math_2;

{$R *.dfm}

procedure TformMath_1.ImageButton3Click(Sender: TObject);

begin

close;

end;

procedure TformMath_1.ImageButton1Click(Sender: TObject);

begin

formMath_1.Hide;

formMath_1.Close;

formMath_2.Show;

end;

procedure TformMath_1.FormPaint(Sender: TObject);

var

x,y: integer;

pic: TGraphic;

begin

pic:=TBitmap.Create;

pic.LoadFromFile('background_h.bmp');

x:=0; y:=0;

while y < Height do

begin

while x < Width do

begin

Canvas.Draw(x,y,pic);

x:=x+pic.Width;

end;

x:=0;

y:=y+pic.Height;

end;

pic.Free;

end;

end.

Форма «Аналитическое решение»(2):

unit LSpir_math_2;

interface

uses

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

Dialogs, ButtonComps, OleCtnrs, jpeg, ExtCtrls;

type

TformMath_2 = class(TForm)

ImageButton2: TImageButton;

OleContainer1: TOleContainer;

Image1: TImage;

ImageButton1: TImageButton;

procedure ImageButton3Click(Sender: TObject);

procedure ImageButton2Click(Sender: TObject);

procedure FormPaint(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

formMath_2: TformMath_2;

implementation

uses LSpir_math;

{$R *.dfm}

procedure TformMath_2.ImageButton3Click(Sender: TObject);

begin

close;

end;

procedure TformMath_2.ImageButton2Click(Sender: TObject);

begin

formMath_2.Hide;

formMath_2.Close;

formMath_1.Show;

end;

procedure TformMath_2.FormPaint(Sender: TObject);

var

x,y: integer;

pic: TGraphic;

begin

pic:=TBitmap.Create;

pic.LoadFromFile('background_h.bmp');

x:=0; y:=0;

while y < Height do

begin

while x < Width do

begin

Canvas.Draw(x,y,pic);

x:=x+pic.Width;

end;

x:=0;

y:=y+pic.Height;

end;

pic.Free;

end;

end.

Форма довідки:

unit LSpir_help;

interface

uses

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

Dialogs, ExtCtrls, StdCtrls, ButtonComps;

type

TformHelp = class(TForm)

Image1: TImage;

Image2: TImage;

ImageButton1: TImageButton;

procedure FormPaint(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure ImageButton1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

formHelp: TformHelp;

implementation

{$R *.dfm}

//Фоновый рисунок

procedure TformHelp.FormPaint(Sender: TObject);

var

x,y: integer;

pic: TGraphic;

begin

pic:=TBitmap.Create;

pic.LoadFromFile('background_h.bmp');

x:=0; y:=0;

while y < Height do

begin

while x < Width do

begin

Canvas.Draw(x,y,pic);

x:=x+pic.Width;

end;

x:=0;

y:=y+pic.Height;

end;

pic.Free;

end;

procedure TformHelp.FormShow(Sender: TObject);

begin

formHelp.Image1.Picture.LoadFromFile('Help_1.bmp');

formHelp.Image2.Picture.LoadFromFile('Help_2.bmp');

end;

procedure TformHelp.ImageButton1Click(Sender: TObject);

begin

formHelp.Close;

end;

end.

Код проекту:

program Project_LSpir;

uses

Forms,

LSpir in 'LSpir.pas' {formMain},

LSpir_zas in 'LSpir_zas.pas' {formVignette},

LSpir_math in 'LSpir_math.pas' {formMath_1},

LSpir_math_2 in 'LSpir_math_2.pas' {formMath_2},

LSpir_about in 'LSpir_about.pas' {formAbout},

LSpir_help in 'LSpir_help.pas' {formHelp};

{$R *.res}

begin

Application.Initialize;

formVignette:=TformVignette.Create(Application);

formVignette.Show;

formVignette.Update;

delay(5000);

Application.CreateForm(TformMain, formMain);

Application.CreateForm(TformMath_1, formMath_1);

Application.CreateForm(TformMath_2, formMath_2);

Application.CreateForm(TformAbout, formAbout);

Application.CreateForm(TformHelp, formHelp);

formVignette.Hide;

formVignette.Free;

Application.Run;

end.

Алгоритми процедур

Блок-схема алгоритму процедури побудови координатної площини та спіралі на ній:


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.