Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmir_na_Object_Pascal_lab_raboty_.doc
Скачиваний:
208
Добавлен:
11.03.2016
Размер:
14.48 Mб
Скачать

6.7.2. Подключение модуля

Для того чтобы подключить модуль к проекту, необходимо в меню Project выбрать опцию Add to Project… и выбрать файл, содержащий модуль. После этого в разделе Uses добавить имя подключаемого модуля – MyUnit. Теперь в проекте можно использовать функции, содержащиеся в модуле.

Интерфейс программы будет иметь вид как и в прошлой задаче(см. рис. 4.5).

Тексты модуля с процедурами (Листинг 6.2) и вызывающей программы (Листинг 6.3) приведены ниже.

Листинг 6.2

unit MyUnit;

interface

uses

SysUtils, Grids, StdCtrls, Dialogs;

type

TMatr = array[1..20, 1..20] of real;

{здесь прописываются только заголовки процедур и функций}

Procedure Vvod_Matr_iz_Tabl(StringGrid:TStringGrid;var n, m : integer;

var Matr:TMatr);

Procedure Vyvod_Matr(n, m : integer; Matr: TMatr; Memo : TMemo);

implementation

{ниже прописываются сами процедуры и функции}

//==================================================

Procedure Vvod_Matr_iz_Tabl(StringGrid:TStringGrid;var n,m:integer;

var Matr:TMatr);

//ввод матрицы из StringGrid

var

i, j : integer;

begin

with StringGrid do begin

n:=RowCount-1; //число строк

m:=ColCount-1; //число столбцов

for i:=1 to n do

for j:=1 to m do

Matr[i,j]:=StrToFloat(Cells[j,i]);

end;

end;

//===================================================

Procedure Vyvod_Matr(n, m : integer; Matr:TMatr; Memo:TMemo);

//вывод матрицы в Мемо

var

i, j : integer;

St : string;

begin

St:='Введенная матрица:'+#13#10;

for i:=1 to n do begin

for j:=1 to m do

St := St + FloatToStr(Matr[i, j])+#9;

St := St + #13#10;

end;

Memo.Lines.Add(St);

end;

//===================================================

end.

Этот модуль компилируется отдельно, а затем подключается в разделе uses основной программы (см. Листинг 6.3).

Листинг 6.3

unit Unit1;

interface

uses

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

Dialogs, Grids, StdCtrls, jpeg, ExtCtrls, Spin, MyUnit; //подключили модуль MyUnit

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

StringGrid1: TStringGrid;

Button2: TButton;

Memo1: TMemo;

Button1: TButton;

Label3: TLabel;

Image1: TImage;

SpinEdit1: TSpinEdit;

SpinEdit2: TSpinEdit;

Label4: TLabel;

Label5: TLabel;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);

procedure SpinEdit1Change(Sender: TObject);

procedure SpinEdit2Change(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

Type

TMatr = array[1..10,1..10] of real; // Объявление типа двухмерного

// массива размером 10 x 10

var

Form1: TForm1;

A : TMatr; // Глобальное объявление двухмерного массива

n, m : integer;

Implementation

{$R *.dfm}

{ Здесь уже не надо прописывать процедуры, т.к. они есть в подключ. модуле MyUnit }

//-------------------------------------------------------------

procedure TForm1.FormCreate(Sender: TObject);

//первоначальное формирование интерфейса программы

var i, j: integer;

begin

Memo1.Clear;

SpinEdit1.Text := '4';

SpinEdit2.Text := '4';

With StringGrid1 do begin

RowCount:=StrToInt(SpinEdit1.Text)+1;

ColCount:=StrToInt(SpinEdit2.Text)+1;

Cells[0,0] := ' A';

for i:=1 to RowCount do Cells[0,i] := ' i=' + IntToStr(i);

for j:=1 to ColCount do Cells[j,0] := ' j=' + IntToStr(j);

end;

end;

//---------------------------------------------------------------

procedure TForm1.SpinEdit1Change(Sender: TObject);

//изменение Числа строк в таблице

var i:integer;

begin

if SpinEdit1.Text='' then Exit;

//подготовка таблицы по строкам

With StringGrid1 do begin

RowCount:=StrToInt(SpinEdit1.Text)+1;

for i:=1 to RowCount do Cells[0,i] := ' i=' + IntToStr(i);

end;

end;

//--------------------------------------------------------

procedure TForm1.SpinEdit2Change(Sender: TObject);

//изменение Числа столбцов в таблице

var j : integer;

Begin

if SpinEdit2.Text='' then Exit;

//подготовка таблицы по столбцам

With StringGrid1 do begin

ColCount:=StrToInt(SpinEdit2.Text)+1;

for j:=1 to ColCount do StringGrid1.Cells[j,0] := ' j=' + IntToStr(j);

end;

end;

//--------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);

//выполнить

var

i, j, k, ke : integer;

p, pe : real;

s : string;

begin

n := StrToInt(SpinEdit1.Text); // Число строк в массиве

m := StrToInt(SpinEdit2.Text); // Число столбцов в массиве

{Проверка на заполненность таблицы}

for i:=1 to n do

for j:=1 to m do

if StringGrid1.Cells[j,i]='' then begin

ShowMessage('Надо заполнить все ячейки таблицы !!!');

Exit;

end;

{Ввод матрицы А из таблицы StringGrid1}

Vvod_Matr_iz_Tabl(StringGrid1, n, m, A); //вызов процедуры, текст которой

//находится в модуле MyUnit

{Расчет}

k := 0; ke:=0;

p:=0; pe := 1;

for i := 1 to n do

for j := 1 to m do

if A[i, j]>0 then begin k := k+1; p:=p+A[i,j]; end

else

if (A[i,j]<0) then begin ke:=ke+1; pe := pe * A[i,j]; end;

Memo1.Clear;

{Показаваем в Мемо1 введенную матрицу А}

Vyvod_Matr(n, m, A, Memo1); //вызов процедуры, текст которой находится в MyUnit

{показываем в Мемо1 результаты расчета}

if k=0 then Memo1.Lines.Add('Положительных элементов нет !')

else begin

Memo1.Lines.Add('Количество положительных элементов: ' +IntToStr(k));

Memo1.Lines.Add('Сумма положительных элементов: ' + FloatToStr(p));

end;

Memo1.Lines.Add('');

if ke=0 then Memo1.Lines.Add('Отрицательных элементов нет !')

else begin

Memo1.Lines.Add('Количество отрицательных элементов: ' +IntToStr(ke));

Memo1.Lines.Add('Произведение отрицательных элементов: '+ FloatToStr(pe));

end;

end;

//-------------------------------------------------------------------

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

{текст этой процедуры здесь не приводится, так как он полностью соответствует тексту примера 4.5}

end;

//---------------------------------------------------

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]