ПЕРЕЧЕНЬ ИСПОЛЬЗОВАННЫХ КОМПОНЕНТОВ




ВВЕДЕНИЕ

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

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

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

 

 

АЛГОРИТМ РЕШЕНИЯ ЗАДАЧИ

 

Для построения графика функции нужно:

1. Определить число точек графика – n.

2. Получить таблицу значений функции y=f(x) в диапазоне измерения х от xn до xk.

3. Значения функции заносятся в массив:

x i= xi-1 + ∆x

yi = f(xi)

4. Определить минимальное и максимальное значения аргумента х и функции у в диапазоне построения графика.

5. Пересчитать действительное значение х и у в экранное. Результаты сохраняются в массивах целых чисел.

6. Переместить перо в первую точку графика.

7. Задать цвет и стиль линии.

8. Последовательно соединить точки прямыми линиями с помощью метода
LineTo. Отрисовать систему координат, подписать оси.

 

 

ЭКРАННАЯ ФОРМА ПРОГРАММЫ

Рисунок 2.1 – форма на этапе проектирования

Используемые компоненты:

1 Form

2 Label

3 Edit

4 Button

5 Image

6 Memo

7 StringGrid

 

 

ТЕКСТ МОДУЛЯ ПРОГРАММЫ

unit Travina1;

 

interface

 

uses

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

Dialogs, ExtCtrls, StdCtrls, Grids, ExtDlgs, printers;

 

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Edit_n: TEdit;

Edit_Xn: TEdit;

Edit_Xk: TEdit;

Edit_a: TEdit;

Edit_b: TEdit;

StringGrid1: TStringGrid;

Button_calk: TButton;

Button_plot: TButton;

Button_clear: TButton;

Button_print: TButton;

Button_exit: TButton;

Memo_rez: TMemo;

Image1: TImage;

Button_save: TButton;

Label7: TLabel;

PrintDialog1: TPrintDialog;

SavePictureDialog1: TSavePictureDialog;

Image2: TImage;

procedure FormCreate(Sender: TObject);

procedure Button_exitClick(Sender: TObject);

procedure Button_calkClick(Sender: TObject);

procedure Button_plotClick(Sender: TObject);

procedure Button_clearClick(Sender: TObject);

procedure Button_printClick(Sender: TObject);

procedure Button_saveClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var// Раздел описания переменных

Form1: TForm1;//Форма

x,y:array[1..100] of extended;// Через одномерный массив задаём вещественное значение

xr,yr:array[1..100] of integer;// Через одномерный массив задаём целое значение

n: integer;// Задаём переменную целого типа

xn,xk,a,b,xe,ye: extended;// Задаём переменные вещественного типа

 

implementation

 

{$R *.dfm}

 

procedure TForm1.FormCreate(Sender: TObject);// Процедура заполнения формы

var// Раздел описания переменных

i:integer;// Задаём переменную целого типа

begin

Image1.Canvas.Brush.Color:=clWhite;

n:=50;

Xn:=-10; Xk:=10; a:=4; b:=-1;// Задаём элементы массива

with stringGrid1 do// Отображаем элементы данного массива

begin

RowCount:=n+1;// Отображаем число строк

cells[0,0]:=' №'; cells[1,0]:=' x'; cells[2,0]:=' y';// Заполняем таблицу

for i:=1 to n do// Условие от 1 до n

begin

cells[0,i]:=' '+IntToStr(i);// Преобразуем целое число в строку

end;

end;

with Image1, Canvas do// Обрабатываем записи полей и отрисовываем объект

begin

pen.color:=clRed;// Задаём цвет карандаша

pen.Width:=1;// Задаём ширину пера

Brush.Color:=clWhite;// Задаём цвет кисти

FillRect(ClientRect);// Отрисовываем

end;

end;

 

procedure TForm1.Button_exitClick(Sender:TObject);// Процедура выхода

begin

close;// Выход

end;

 

procedure TForm1.Button_calkClick(Sender:TObject);// Процедура вычисления

Var// Раздел описания переменных

i:integer;// Задаём переменную целого типа

dx:extended;// Задаём переменную вещественного типа

s:string;// Задаём переменную для строкового типа

begin

n:=StrToInt(Edit_n.Text);// Преобразуем строку в действительное число

Xn:=StrToFloat(Edit_Xn.Text);

Xk:=StrToFloat(Edit_Xk.Text);

a:=StrToFloat(Edit_a.Text);

b:=StrToFloat(Edit_b.Text);

If b=0 then b:=1;

dx:=(Xk-Xn)/(n-1);// Шаг аргумента

for i:=1 to n do// Условие от 1 до n

begin

x[i]:=Xn+(i-1)*dx;// Задаём X

y[i]:=a*x[i]*sin(x[i]/b);// Задаём график функции

end;

with StringGrid1 do// Отображаем элементы массива

begin

for i:=1 to n do// Условие от 1 до n

begin

cells[1,i]:=FloatToStrF(x[i],ffFixed,8,3);// Ограничиваем количество знаков X

cells[2,i]:=FloatToStrF(y[i],ffFixed,8,5);// Ограничиваем количество знаков Y

end;

end;

// Рисуем таблицу

s:='---------------------------------------';

Memo_rez.Lines.Add(s);//Отображаем

s:=' | № | x | y |';

Memo_rez.Lines.Add(s);//Отображаем

s:='---------------------------------------';

Memo_rez.Lines.Add(s);// Отображаем

for i:=1 to n do// Условие от 1 до n

begin

s:='';

s:=' | '+IntToStr(i)+' | '+FloatToStrF(x[i],ffFixed,6,2)+

' | '+FloatToStrF(y[i],ffFixed,6,2)+' | ';// Преобразум целое число в строку

Memo_rez.Lines.Add(s);// Отображаем

end;

end;

 

 

procedure TForm1.Button_plotClick(Sender:TObject);// Процедура графика функции

Var// Раздел описания переменных

i,v,c,l,x0,y0,xn,xk,yn,yk,x1,x2,x3,x4,y1,y2,y3,y4:integer;// Задаём переменную целого типа

MinX,MaxX,MinY,MaxY:extended;// Задаём переменную вещественного типа

yy,xx:variant;// Задаём переменную универсального типа

begin

MinX:=x[1]; MaxX:=x[1]; MinY:=y[1]; MaxY:=y[1];// Задаём максимальное и минимальное значение

for i:=1 to n do// Условие от 1 до n

begin

// Находим максимальные и минимальные значения функции

if x[i]<MinX then MinX:=x[i];

if x[i]>MaxX then MaxX:=x[i];

if y[i]<MinY then MinY:=y[i];

if y[i]>MaxY then MaxY:=y[i];

end;

v:=2; c:=10;

With Image1,Canvas do// Обрабатываем записи полей и отрисовываем объект

begin

xx:=Image1.width;// Ширина

yy:=Image1.height;// Высота

FillRect(ClientRect);// Отрисовываем

Pen.Color:=clRed;// Задаём цвет карандаша

for i:=1 to n do// Условие от 1 до n

begin

xr[i]:=c+Round((x[i]-minX)/(MaxX-MinX)*(xx-2*c));

yr[i]:=yy-c-Round((y[i]-minY)/(MaxY-MinY)*(yy-2*c));

end;

//Рисуем оси X и Y

MoveTo(xr[1],yr[1]);// Перемещаем перо в точку с данными координатами

for i:=1 to n do// Условие от 1 до n

LineTo(xr[i],yr[i]);// Рисуем линию

for i:=1 to n do// Условие от 1 до n

Rectangle(xr[i]-v,yr[i]-v,xr[i]+v,yr[i]+v);// Рисуем прямоугольник, который имеет xr[i]-v,yr[i]-v - координаты верхнего левого угла и xr[i]+v,yr[i]+v - координаты нижнего правого угла

begin

// Вычисляем значения

x1:=c+Round((MinX-MinX)/(MaxX-MinX)*(xx/2-2*c));

x2:=xx-c;

y1:=yy-c-round((0-MinY)/(MaxY-MinY)*(yy-2*c));

y2:=yy-c-round((0-MinY)/(MaxY-MinY)*(yy-2*c));

y3:=yy-c;

y4:=c;

x3:=yy/2+Round((minX-minX)/(MaxX-MinX)*(xx-2*c));

x4:=yy/2+Round((minX-minX)/(MaxX-MinX)*(xx-2*c));

Pen.Color:=clBlack;// Задаем цвет карандаша

MoveTo(x3,y3);// Перемещаем перо в точку

LineTo(x4,y4);// Рисуем линию

MoveTo(x1,Y1);// Пермещаем перо в точку

LineTo(x2,y2);// Рисуем линию

// Стрелочки по оси X

MoveTo(x2,y2);

LineTo(x2-7,y2+7);

MoveTo(x2,y2);

LineTo(x2-7,y2-7);

//Стрелочки по оси Y

MoveTo(x4,y4);

LineTo(x4+7,y4+7);

MoveTo(x4,y4);

LineTo(x4-7,y4+7);

//Засечки по оси X

MoveTo(x1,y1);

LineTo(x1,y1+7);LineTo(x1,y1-7);

MoveTo(x1+48,y1);

LineTo((x1+48),y1+7); LineTo((x1+48),y1-7);

MoveTo(x1+96,y1);

LineTo((x1+96),y1+7); LineTo((x1+96),y1-7);

MoveTo(x1+144,y1);

LineTo((x1+144),y1+7); LineTo((x1+144),y1-7);

MoveTo(x1+192,y1);

LineTo((x1+192),y1+7); LineTo((x1+192),y1-7);

MoveTo(x1+288,y1);

LineTo((x1+288),y1+7); LineTo((x1+288),y1-7);

MoveTo(x1+336,y1);

LineTo((x1+336),y1+7); LineTo((x1+336),y1-7);

MoveTo(x1+384,y1);

LineTo((x1+384),y1+7); LineTo((x1+384),y1-7);

MoveTo(x1+432,y1);

LineTo((x1+432),y1+7); LineTo((x1+432),y1-7);

//Засечки по оси Y

MoveTo(x4,y4+50);

LineTo(x4+7,y4+50);LineTo(x4-7,(y4+50));

MoveTo(x4,y4+100);

LineTo(x4+7,y4+100);LineTo(x4-7,(y4+100));

MoveTo(x4,y4+150);

LineTo(x4+7,y4+150);LineTo(x4-7,(y4+150));

MoveTo(x4,y4+250);

LineTo(x4+7,y4+250);LineTo(x4-7,(y4+250));

MoveTo(x4,y4+300);

LineTo(x4+7,y4+300);LineTo(x4-7,(y4+300));

MoveTo(x4,y4+350);

LineTo(x4+7,y4+350);LineTo(x4-7,(y4+350));

MoveTo(x4,y4+400);

LineTo(x4+7,y4+400);LineTo(x4-7,(y4+400));

MoveTo(x4,y4+450);

LineTo(x4+7,y4+450);LineTo(x4-7,(y4+450));

end;

//Подписывае оси X и Y

Font.Size:=11;

TextOut(x1+230,y1+10,'0');

TextOut(x1+220,y1-205,'Y');

TextOut(x1+470,y1-20,'X');

end;

end;

 

procedure TForm1.Button_clearClick(Sender:TObject);// Процедура очистки

Var// Раздел описания переменных

i:Integer;// Задаём переменную целого типа

begin

Image1.Canvas.FillRect(ClientRect);

With StringGrid1 do

for i:=1 to n do

begin

cells[1,i]:='';

cells[2,i]:='';

end;

Memo_rez.Clear;// Очистка меню

end;

 

procedure TForm1.Button_printClick(Sender: TObject);// Процедура печати

Var// Раздел описания переменных

f:TextFile;

i:Integer;

begin

If PrintDialog1.Execute then

begin

AssignPrn(f); Rewrite(f);

Printer.Canvas.Font:=Memo_rez.Font;// Отрисовываем

for i:=0 to Memo_rez.LineS.Count-1 do// Отображаем

Writeln(f,Memo_rez.Lines[i]);

CloseFile(f);

end;

end;

 

procedure TForm1.Button_saveClick(Sender:TObject);//Процедура сохранения

begin

if SavePictureDialog1.Execute then

Image1.Picture.SaveToFile(SavePictureDialog1.FileName);

end;

 

end.

 

 

ПЕРЕЧЕНЬ ИСПОЛЬЗОВАННЫХ КОМПОНЕНТОВ

1.Form

Назначение: На ней располагаются элементы программы (надписи, кнопки, поля ввода и т.д.)

Использованные свойства: Caption, Width, Height, Color.

2. Label

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

Использованные свойства: Caption, Width, Height, Font.

3. Memo

Назначение: Позволяет вводить многострочные текст с клавиатуры, загружать его из файла, редактировать и сохранять в файл текстового формата.

Использованные свойства:Lines, Width, Height, ScrollBars.

4. StringGrid

Назначение: Компоненты для отображения различных данных в табличной форме.

Использованные свойства: RowCount, ColCount, Width, Height, ScrollBars.

5. Image

Назначение: Дает отображение графического изображения и обеспечивает работу с изображением.

Использованные свойства: Picture, AuntSize, Center, Width, Height.

6. Edit

Назначение: Представляет собой однострочное текстовое поле, служащее для ввода данных пользователем.

Использованные свойства: Text, Name, AutoSize, Font, Width, Height, Color.

7. Button

Назначение: Компоненты Button-это простая командная кнопка, используется для реализации в программе команд с помощью обработчика событии OnClick этого компонента.

Использованные свойства: Caption, Name, Width, Height, Color.

8. SavePictureDialog

Назначение: Позволяет сохранять содержимое поля Image.

Использованные свойства: Filter, FileName.

9. PrintDialog

Назначение: Компоненты вызывают диалоговое окно печати. В нем пользователь может выбрать принтер и установить его свойства, указать число копий и последовательности их печати, печатать в файл или непосредственно на принтер, выбрать печатаемые страницы или печатать только выделенный фрагмент.

Использованные свойства: Execute.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: