- •Часть 2
- •Лабораторная работа № 6. Программирование циклических вычислительных процессов. Итерационные циклы
- •Отладка модулей проекта
- •Отладка синтаксических ошибок
- •Отладка логических ошибок
- •Итерационные циклы
- •Текст модуля UnIterate
- •Пример создания приложения
- •Сохранение проекта
- •Размещение компонентов на Форме
- •6.4. Выполнение индивидуального задания
- •Лабораторная работа № 7. Программирование с использованием строк
- •Краткие теоретические сведения
- •7.1.1. Символьные типы
- •7.1.2. Строковые типы
- •7.1.3. Процедуры и функции для работы со строками
- •Применение компонентов ListBox и ComboBox для работы со строками
- •7.3. Пример создания приложения
- •7.3.1. Сохранение проекта
- •7.3.2. Размещение компонентов на Форме
- •7.3.3. Создание процедуры-обработчика события активизации Формы FormActivate.
- •7.3.4. Создание процедуры-обработчики события ComboBox1KeyPress
- •7.3.5. Создание процедуры-обработчики события нажатия клавиши «мыши» ComboBox1Click
- •7.3.6. Работа с приложением
- •7.4. Текст модуля UnStr
- •7.5. Выполнение индивидуального задания
- •С использованием записей
- •8.1. Краткие теоретические сведения
- •8.2. Пример создания приложения
- •8.2.1. Указания по созданию приложения
- •8.2.2. Размещение компонентов по Форме
- •8.2.3.Создание процедур обработки событий FormCreate и ButtonClick
- •8.2.4. Работа с приложением
- •8.2.5. Текст модуля UnZap
- •8.3. Выполнение индивидуального задания
- •Лабораторная работа № 9. Програмирование с использованием файлов
- •9.1. Краткие теоретические сведения
- •9.2. Пример создания приложения
- •9.2.1. Указания по созданию приложения
- •9.2.2.Размещение компонентов по Форме.
- •9.2.3.Создание процедур обработки событий
- •9.2.4. Текст модуля UnFile
- •9.2.5. Работа с приложением
- •9.3. Выполнение индивидуального задания
- •Лабораторная работа № 10. Программирование с использованием функций и процедур. Процедурные типы. Создание модулей
- •10.1. Краткие теоретические сведения
- •10.1.1. Объявление и описание функций и процедур
- •10.1.2. Различные варианты передачи параметров в функции и процедуры
- •10.1.3. Процедурные типы
- •Текст модуля UnFancProc
- •Текст модуля UnModul
- •Выполнение индивидуального задания
- •Лабораторная работа № 11. Программирование с использованием динамических структур данных
- •11.1. Краткие теоретические сведения
- •11.1.1. Указатели
- •11.2. Использование динамических переменных
- •Пример создания приложения
- •11.3.1. Сохранение проекта
- •Размещение компонентов на Форме
- •11.3.3. Создание процедуры обработки событий FormCreate
- •Текст модуля UnDinMas
- •11.5. Выполнение индивидуального задания
- •Лабораторная работа № 12. Программирование с использованием средств для построения и отображения графиков
- •12.1. Методика построения графиков с помощью компонента tChart
- •12.2. Пример написания программы
- •12.2.1. Настройка формы
- •12.2.2. Работа с компонентом tChart
- •12.2.3. Написание программы обработчика события создания формы
- •12.2.4. Написание программ обработчика событий нажатия на кнопки
- •12.3. Модуль программы построения и отображения графиков
- •12.4. Выполнение индивидуального задания
- •Приложение 1 п1. Свойства и методы компонентов п1.1. Общие свойства компонентов
- •2. Компоненты страницы standard
- •3. Компоненты страницы additional
- •4. Компоненты страницы dialogs
- •П2. Простые типы данных языка object pascal
- •П3. Процедуры и функции для работы со строками
- •Литература
12.2.3. Написание программы обработчика события создания формы
В procedure TForm1.Button1Click программы устанавливаются начальные пределы и шаг разметки координатных осей. Если Chart1.BottomAxis Automatic имеет значение False, то автоматическая установка параметров осей не работает.
12.2.4. Написание программ обработчика событий нажатия на кнопки
Процедура TForm1.Button1Click обрабатывает нажатие кнопки «Разместить оси». Процедура TForm1.Button2Click обрабатывает нажатие кнопки «Построить графики». Для добавления координат точек (X, Y) из таблицы значений в двумерный массив объекта Seriesk используется процедура Series1.AddXY(Const AXValue, AYValue: Double; Const AXLabel: String; AColor: TColor): Longint;, где AXValue, AYValue – координаты точки по осям X и Y; AXLabel может принимать значение ‘’; AColor задает цвет линий (если равен clTeeColor, то принимается цвет, определенный при проектировании формы).
После запуска программы и нажатия кнопки «Построение графиков» на экране отображаются графики указанных функций, как показано на рисунке. 12.3.
Рис. 12.3. Графики функций
12.3. Модуль программы построения и отображения графиков
Ниже приведен программный модуль построения и отображения графиков и диаграмм с использованием компонента TChart.
unit UnProgrGraph;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, TeeProcs, TeEngine, Chart, Series;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Button1: TButton;
Button2: TButton;
BitBtn1: TBitBtn;
Chart1: TChart;
Series1: TLineSeries;
Series2: TLineSeries;
Series3: TLineSeries;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
var
Form1: TForm1;
Xmin,Xmax,Ymin,Ymax,Hx,Hy,h:extended;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
{Установка начальных параметров координатных осей}
Xmin:=0.0;
Xmax:=2*pi;
Ymin:=-1;
Ymax:=2;
Hx:=pi/2;
Hy:=0.5;
h:=0.01;
{Вывод данных в окно однострочных редакторов}
Edit1.Text:=FloatToStr(Xmin);
Edit1.Text:=FloatToStr(Xmax);
Edit1.Text:=FloatToStr(Ymin);
Edit1.Text:=FloatToStr(Ymax);
Edit1.Text:=FloatToStr(Hx);
Edit1.Text:=FloatToStr(Hy);
Edit1.Text:=FloatToStr(h);
Chart1.BottomAxis.Automatic:=False; //Отключение автоматического
//определения параметров нижней оси
Chart1.BottomAxis.Minimum:=Xmin; // Установка левой границы нижней оси
Chart1.BottomAxis.Maximum:=Xmax; // Установка правой границы нижней
//оси
Chart1.LeftAxis.Automatic:= False; //Отключение автоматического
//определения параметров левой оси
Chart1.LeftAxis.Minimum:= Ymin; // Установка нижней границы левой оси
Chart1.LeftAxis.Maximum:= Ymax; // Установка верхней границы левой оси
Chart1.BottomAxis.Increment:=Hx; // Установка шага разбивки по нижней
//оси
Chart1.LeftAxis.Increment:= Hy; // Установка шага разбивки по левой оси
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
{Чтение данных из окон однострочных редакторов}
Xmin:=StrToFloat(Edit1.Text);
Xmax:=StrToFloat(Edit1.Text);
Xmin:=StrToFloat(Edit1.Text);
Xmax:=StrToFloat(Edit1.Text);
Hx:=StrToFloat(Edit1.Text);
Hy:=StrToFloat(Edit1.Text);
Chart1.BottomAxis.Minimum:=Xmin; // Установка левой границы нижней оси
Chart1.BottomAxis.Maximum:=Xmax; // Установка правой границы нижней оси
Chart1.LeftAxis.Minimum:= Ymin; // Установка нижней границы левой оси
Chart1.LeftAxis.Maximum:= Ymax; // Установка верхней границы левой оси
Chart1.BottomAxis.Increment:=Hx; // Установка шага разбивки по нижней
//оси
Chart1.LeftAxis.Increment:= Hy; // Установка шага разбивки по левой оси
end;
procedure TForm1.Button2Click(Sender: TObject);
var x,y1,y2:extended;
a,b,fx:extended;
k1,k2:extended;
begin
{Очистка графиков}
Series1.Clear;
Series2.Clear;
Series3.Clear;
Xmin:=StrToFloat(Edit1.Text);
Xmax:=StrToFloat(Edit2.Text);
h:=StrToFloat(Edit7.Text);
x:=Xmin;
{Варианты значений коэффициентов задаются преподавателем}
a:=1.25; b:=1.25;
k1:=0.01; k2:=0.001;
repeat
fx:=sin(x); // Расчет функции 1
if x<2.3 then y1:=(a+b)/(4+sqr(cos(x)))
else if (x>=2.3) and (x<5) then y1:=(a+b)/(x+1)
else y1:=k1*exp(x)+fx;
Series1.AddXY(x,y1,'',clTeeColor); // Вывод точки на график
y2:=cos(x); // Расчет функции cos(x)
Series2.AddXY(x,y2,'',clTeeColor); // Вывод точки на график
fx:=cos(x); // Расчет функции 2
if x<2.3 then y2:=(a+b)/(4+sqr(cos(x)));
if (x>=2.3) and (x<5) then y2:=(a+b)/(x+1);
if x>=5 then y2:=k2*exp(x)+fx;
Series3.AddXY(x,y2,'',clTeeColor); // Вывод точки на график
x:=x+h; // Увеличение x на величину h
until(x>Xmax);
end;
end.
