Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 2_3_15.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
287.23 Кб
Скачать

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. Каким образом в программе организован поиск минимального элемента вектора?