2.6. Разработка приложения Delphi, реализующего циклический алгоритм. Построение графика с использованием компонента Chart
Разработать приложение, позволяющее вычислять значение функции y(x)=-x cos(x/2) на интервале от хн до хк с шагом Dх. В главной форме должны находиться поля ввода значений хн, хк, Dх, таблица вывода значений аргумента и функции, график функции, кнопка «Решение», кнопка «График», кнопка «О программе», кнопка «Выход».
При нажатии кнопки «Решение» программа должна считать исходные данные, вычислить значение функции, поместить значения аргумента и функции в таблицу.
При нажатии кнопки «График» программа должна считать значения аргумента и функции из таблицы, вывести график функции.
Вставляем в пустую форму компонент Edit1 для ввода значения хн, компонент Edit2 для ввода значения хк, компонент Edit3 для ввода значения Dх, четыре кнопки Button1-Button4 для запуска соответствующих процедур, таблицу StringGrid1 для вывода значений аргумента и функции, компонент Chart1 для выводы графика функции.
Познакомимся с новым компонентом Chart. Основными свойствами и методами Chart являются:
– SeriesList – массив серий, которые выполняют построение каждого графика, номера серий начинаются с нуля;
– AddX, AddY, AddXY – методы добавления новых точек в график функции.
Компонент Chart автоматически масштабирует окно вывода графика. При нажатии на левую кнопку мыши в графической области изменяется масштаб графика, при нажатии на правую кнопку – смещается координата центра графической области.
Форма приложения с исходными данными и результатами расчета показана на рис. 2.5.
Рис. 2.5. Программа циклического алгоритма и вывода графика функции с использованием Chart
Формируем процедуры обработки нажатия кнопок и компилируем программу. Текст модуля приводим ниже:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs, Grids, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart,
Series;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
StringGrid1: TStringGrid;
Label4: TLabel;
Chart1: TChart;
Series1: TLineSeries;
procedure FormCreate(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var X, Xn, Xk, dX, Y : real;
// процедура формирования заголовка таблицы
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:=' X';
StringGrid1.Cells[1,0]:=' Y';
end;
// процедура закрытие приложения
procedure TForm1.Button4Click(Sender: TObject);
begin
Close
end;
// процедура обработки кнопки "О программе"
procedure TForm1.Button3Click(Sender: TObject);
begin
Application.MessageBox('Программу выполнил студент'+
'группы Л-11 Иванов Л.И.','О программе')
end;
// процедура обработки кнопки "Решение"
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
Xn:= StrToFloat(Edit1.Text); // Чтение Хнач
Xk:= StrToFloat(Edit2.Text); // Чтение Хкон
dX:= StrToFloat(Edit3.Text); // Чтение шага по Х
X:=Xn;
i:=1;
while X<=Xk do // цикл вывода значений X и Y в таблицу
begin
Y:=-X*cos(X/2);
StringGrid1.RowCount:=i+1;
StringGrid1.Cells[0,i]:=FloatToStrF(X,ffFixed,6,2);
StringGrid1.Cells[1,i]:=FloatToStrF(Y,ffFixed,6,3);
X:=X+dX;
i:=i+1;
end;
end;
// процедура обработки кнопки "График"
procedure TForm1.Button2Click(Sender: TObject);
var i, n : integer;
begin
n:=StringGrid1.RowCount-1;
//очистка графической области
Chart1.SeriesList[0].Clear;
//рисование графика
for i:=1 to n do
begin
Chart1.SeriesList[0].AddXY(StrToFloat(StringGrid1.Cells[0,i]),
StrToFloat(StringGrid1.Cells[1,i]),'',clRed);
end;
end;
end.
2.7. Простейшие приемы работы с одномерными массивами
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.