
- •Тема 2.3.15: Организация библиотек подпрограмм. План.
- •Основные свойства компонентов Chart и dbChart (самостоятельная работа).
- •Пример программы построения диаграмм (самостоятельная работа).
- •Пример проекта с собственной библиотекой (самостоятельная работа).
- •1. Основные свойства компонентов Chart и dbChart.
- •2. Пример программы построения диаграмм.
- •3. Пример проекта с собственной библиотекой.
- •2. Создать вектор х, состоящий из сумм элементов строк.
3. Пример проекта с собственной библиотекой.
Задача:
1. Вычислить элементы матрицы по формуле
ai,j = sin i +cos j, где i =1,2, …,4; j =1,2, …,5...
2. Создать вектор х, состоящий из сумм элементов строк.
3. Вычислить скаляр – номер наименьшего элемента вектора х.
Эти вычисления организовать с помощью подпрограмм, которые разместить в собственной библиотеке.
У
правление
работой проекта организовать с помощью
меню команд.
Форма и результаты работы проекта программы приведен на рис. 1.
Объяснения. Меню команд создано с помощью компонента MainMenu. Перечень команд меню проекта приведен на рис. 2.
Текст главного модуля
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls, Menus, TeEngine, TeeFunci, Series, TeeProcs, Chart, bibl;
type
TForm1 = class(TForm)
Label1: TLabel; Label2: TLabel; Label3: TLabel;
StringGrid2: TStringGrid; StringGrid1: TStringGrid;
Edit1: TEdit;
MainMenu1: TMainMenu;
N1: TMenuItem;
………
N8: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N8Click(Sender: TObject);
Chart1: TChart;
TeeFunction1: TAddTeeFunction;
Series1: TBarSeries;
……………………………….
implementation
{$R *.DFM}
const n=5; m=4;
var a:matr; х:vect; { глобальные параметры }
// Подпрограмма начальной установки невидимости команд меню
procedure TForm1.FormCreate(Sender: TObject);
begin
n3.visible:=false;
n4.visible:=false;
end;
// Подпрограмма команды меню ” Подпрограммы | Расчет матрицы”
procedure TForm1.N2Click(Sender: TObject);
var i,j:integer; s:string;
begin
{вызов подпрограммы вычисления элементов матрицы}
elem(n,m,a);
{заголовки строк и столбиков}
for i:=1 to n do StringGrid1.Cells[0, i]:=IntToStr(i)+'-и строка';
for j:=1 to m do StringGrid1.Cells[j,0]:=IntToStr(j)+'-и столбик';
{вывод матрицы на форму}
for i:=1 to n do
for j:=1 to m do
begin
str(a[i,j]:8:3,s);
StringGrid1.Cells[j,i]:=s;
end;
{установка видимости команд меню для вектора и скаляра}
n3.visible:=true;
n4.visible:=false;
end;
//Подпрограмма команды меню ”Подпрограммы |Вычисление вектора”
procedure TForm1.N3Click(Sender: TObject);
var i,j:integer; s:string;
begin
{вызов подпрограммы для вектора}
sum(n,m,a,х);
{ вывод вектора сумм в StringGrid}
for i:=1 to n do
begin
StringGrid2.Cells[0,і-1]:=IntToStr(i)+'-и элемент';
str(х[i]:5:1,s);
StringGrid2.Cells[1,i-1]:=s;
end;
{установка невидимости команды меню для скаляра}
n4.visible:=true;
end;
//Подпрограмма команды меню ”Подпрограммы|Минимальный элемент”
procedure TForm1.N4Click(Sender: TObject);
var i:integer; nom:integer;
s:string;
begin
{вызов функции вычисления скаляра G}
nom:=nom_min(x,n);
{ вывод вектора на форму}
edit1.text:=IntToStr(nom);
end;
// Подпрограмма команды меню ” Проект | Очистить форму”
procedure TForm1.N6Click(Sender: TObject);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
StringGrid1.Cells[j,i]:='';
for i:=1 to n do StringGrid2.Cells[1,i-1]:='';
edit1.text:='';
{установка невидимости команд меню для вектора и скаляра}
n3.visible:=false;
n4.visible:=false;
end;
// Подпрограмма команды меню “Проект | Выход”
procedure TForm1.N7Click(Sender: TObject);
begin
close
end;
// Подпрограмма команды меню “График”
procedure TForm1.N8Click(Sender: TObject);
var i:integer; gr:array [1..n] of TPoint;
begin
{ построение графика}
for i:=1 to n do
Series1.Addxy(i,x[i],'',clTeeColor);
end;
end.
Текст библиотеки
unit bibl;
interface
Type matr=array[1..10,1..10] of real;
vect=array[1..10] of real;
procedure elem(n,m:integer; var c:matr);
procedure sum(n,m:integer; c:matr; var v:vect);
function nom_min(v:vect; k:integer):integer;
implementation
// подпрограмма вычисления элементов матрицы
procedure elem(n,m:integer;var с:matr);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
с[i,j]:=sin(i)+cos(j);
end;
// Подпрограмма вычисления вектора сумм элементов строк
procedure sum (n,m:integer;с:matr; var c:vect);
var i,j:integer;
begin
for i:=1 to n do
begin
c[i]:=0;
for j:=1 to m do v[i]:=v[i]+ c[i,j];
end;
end;
// подпрограмма-функция вычисления наименьшего элемента вектора
function nom_min(v:vect; k:integer):integer;
var i:integer; min:real; nmin:integer;
begin min:=v[1]; nmin:=1;
for i:=2 to k do
if v[i]<min then
begin min:=v[i];nmin:=i; end;
nom_min:=nmin;
end;
end.
Вопросы для самоконтроля:
1. Какой метод отвечает за изменение масштаба диаграммы?
2. Какое свойство отвечает за количество точек в серии?
3. Каким образом можно убрать легенду?
4. Как можно изменить двухмерное представление диаграммы на трехмерное?
5. Каким образом можно выполнить построение графика?
6. Как происходит подключение библиотеки к основной программе?
7. Каким образом в программе организован поиск минимального элемента вектора?