Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум по информатике Часть2 Delphi.pdf
Скачиваний:
149
Добавлен:
27.03.2016
Размер:
10.35 Mб
Скачать

Часть II. Delphi

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Label5: TLabel; Label6: TLabel; Button4: TButton;

procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); private

{Private declarations } public

{Publicdeclarations } end;

Как видим, в класс включены компоненты (данные) и методы их обработки (процедуры). В секции private (закрытые) объявляются элементы класса, которые должны быть недоступны в других модулях. В секции public(открытые) помещаются элементы, доступные в других модулях.

Практика

Задача 7a

Составить программу для транспонирования квадратной матрицы порядка N и определения следа матрицы.

Транспонированной матрицей к исходной является такая матрица, у которой элементы строк исходной матрицы расставлены в столбцы, а элементы столбцов исходной в строки.

Следом матрицы называется сумма главных диагональных элементов. Компоненты

 

Имя

Свойства

Значение

Назначение

 

 

компонента

компонента

 

 

 

 

Form1

Caption

Матрица

Заголовок

 

 

 

 

 

 

 

 

 

 

 

 

 

Часть II. Delphi

 

 

 

 

 

главной формы

 

 

Label1

Caption

Программа

Справочная

 

 

 

 

предназначена

информация

для

 

 

 

 

для

 

пользователя

 

 

 

 

 

преобразования

программы

 

 

 

 

 

квадратной

 

 

 

 

 

 

матрицы

 

 

 

 

 

 

 

(количество

 

 

 

 

 

 

строк

равно

 

 

 

 

 

 

количеству

 

 

 

 

 

 

столбцов)

 

 

 

 

 

Label2

Caption

Размерность

Подсказка

 

 

 

 

 

матрицы

 

пользователю

 

 

 

Edit1

Text

…..

 

Поле

для

 

 

 

 

 

 

ввода

 

 

 

 

 

 

 

размерности

 

 

 

 

 

 

 

матрицы

 

 

 

Form1.StringGrid1

ColCount

5

 

Количество

 

 

 

 

 

 

столбцов

по

 

 

 

 

 

 

умолчанию

 

 

 

 

FixedCol

1

 

Количество

 

 

 

 

 

 

фиксированных

 

 

 

 

 

 

слева столбцов

 

 

 

FixedRow

1

 

Количество

 

 

 

 

 

 

фиксированных

 

 

 

 

 

 

сверху строк

 

 

 

 

Options:

 

 

Опции:

 

 

 

 

goFixedVertLine

True

 

Разметка

 

 

 

 

 

 

 

зафиксированны

 

 

 

 

 

 

х вертикальных

 

 

 

 

 

 

линий

 

 

 

 

goFixedHorzLine

True

 

 

 

 

 

 

 

 

 

Разметка

 

 

 

 

 

 

 

зафиксированны

 

 

 

 

 

 

х

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Часть II. Delphi

 

 

goVertLine

True

горизонтальных

 

 

 

 

 

линий

 

 

 

 

 

 

 

Разметка

 

 

 

 

 

 

вертикальных

 

 

 

 

goHorzLine

True

линий

внутри

 

 

 

 

 

таблицы

 

 

 

 

 

 

 

Разметка

 

 

 

 

goTabs

True

горизонтальных

 

 

 

 

 

линий

внутри

 

 

 

 

 

таблицы

 

 

 

 

 

 

 

Разрешает

 

 

 

 

 

 

использование

 

 

 

 

 

клавиши Tab для

 

 

 

goAlwaysShowEdit

True

перемещения

в

 

 

 

or

 

другую ячейку

 

 

 

 

 

Признак

 

 

 

 

 

 

нахождения

 

 

 

 

 

 

компонента

в

 

 

 

 

 

режиме

 

 

 

 

 

 

 

редактирования

 

 

Form1.Button1

Caption

Транспонир

Кнопка

 

для

 

 

 

 

ованная

выполнения

 

 

 

 

 

матрица

транспонировани

 

 

 

 

 

я и вывода

в

 

 

 

 

 

новое окно

 

 

 

Form1.Button2

Caption

След

Кнопка

 

для

 

 

 

 

матрицы

вычисления

 

 

 

 

 

 

следа матрицы и

 

 

 

 

 

вывода в

новое

 

 

 

 

 

окно

 

 

 

 

Form1.Button3

Caption

Выход

Кнопка

 

для

 

 

 

 

 

завершения

 

 

 

 

 

 

работы

 

 

 

 

 

 

 

программы

 

 

 

Form2

Caption

Транспонир

Заголовок

 

 

 

 

 

ованная

формы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Часть II. Delphi

 

 

 

матрица

 

 

 

 

Form2.StringGrid1

ColCount

5

Количество

 

 

 

 

 

столбцов

по

 

 

 

 

 

умолчанию

 

 

 

FixedCol

1

Количество

 

 

 

 

 

фиксированных

 

 

 

 

 

слева столбцов

 

 

 

FixedRow

1

Количество

 

 

 

 

 

фиксированных

 

 

 

 

 

сверху строк

 

 

 

Options:

 

Опции:

 

 

 

 

goFixedVertLine

True

Разметка

 

 

 

 

 

зафиксированны

 

 

 

 

 

х вертикальных

 

 

 

 

 

линий

 

 

 

 

goFixedHorzLine

True

 

 

 

 

 

 

 

Разметка

 

 

 

 

 

зафиксированны

 

 

 

 

 

х

 

 

 

 

goVertLine

True

горизонтальных

 

 

 

 

 

линий

 

 

 

 

 

 

Разметка

 

 

 

 

 

вертикальных

 

 

 

goHorzLine

True

линий

внутри

 

 

 

 

 

таблицы

 

 

 

 

 

 

Разметка

 

 

 

goTabs

True

горизонтальных

 

 

 

 

 

линий

внутри

 

 

 

 

 

таблицы

 

 

 

 

 

 

Разрешает

 

 

 

 

 

использование

 

 

 

 

 

клавиши Tab для

 

 

 

goAlwaysShowEdit

True

перемещения в

 

 

 

or

 

другую ячейку

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Часть II. Delphi

 

 

 

Признак

 

 

 

 

нахождения

 

 

 

 

компонента

в

 

 

 

режиме

 

 

 

 

редактирования

Form2.Button1

Caption

Выход

Кнопка

для

 

 

 

закрытия

окна

 

 

 

“Транспонирова

 

 

 

нная матрица”

Form3

Caption

След

Заголовок

 

 

матрицы

формы

 

Label1

Caption

Сумма

Справочная

 

 

главных

информация

для

 

 

диагональных

пользователя

 

 

элементов

программы

 

 

 

матрицы

 

 

 

 

называется

 

 

 

 

следом

 

 

 

 

матрицы

 

 

Label2

Caption

 

Поле

для

 

 

 

вывода,

 

 

 

 

рассчитанного

 

 

 

программой

 

 

 

 

значения следа

 

 

 

матрицы

 

Form3.Button1

Caption

Выход

Кнопка

для

 

 

 

закрытия

окна

 

 

 

“След матрицы”

Переменные и массивы

 

Обозначе

 

Содержание

 

Тип

 

 

ние

 

 

 

 

 

 

в

 

 

 

 

 

 

программе

 

 

 

 

 

 

N

Порядок квадратной матрицы

Целый

 

 

M

Квадратная

матрица

Вещественный,

 

 

 

действительных чисел

 

расширенный

 

 

I

Текущий

номер

строки

Целый

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Часть II. Delphi

 

матрицы или столбца в StringGrid

 

J

Текущий номер

столбца

Целый

 

матрицы или строки в StringGrid

 

Sled

След матрицы

 

Вещественный,

 

 

 

расширенный

Проекты форм

Для решения данной задачи рекомендуется создать три окна.

Часть II. Delphi

Текстмодуля

unit Unit1; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids,Unit2,Unit3;

// подключаются модули, связанные со второй и третьейформами type

Часть II. Delphi

TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Edit1: TEdit;

StringGrid1: TStringGrid; Button1: TButton; Button2: TButton; Button3: TButton;

procedure Button1Click(Sender: TObject); procedure Edit1Exit(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject);

private

{Private declarations } public

{Public declarations }

M :array [1..100,1..100] of Extended; //квадратнаяматрица

N:Integer;// порядокматрицы

Sled: Extended; //следматрицы end;

var

Form1: TForm1; implementation {$R *.dfm}

//процедура читает из таблицы на главной форме квадратную матрицу

//транспонирует матрицу и выводит в таблицу StringGrid

//навторуюформу

procedure TForm1.Button1Click(Sender: TObject);

Var i:Integer; //номерстрокиматрицы/номерстолбцаStringGrid j:Integer; // номерстолбцаматрицы/номерстрокиStringGrid

begin

//чтение значений квадратной матрицы из компонента StringGrid

//главнойформы

For i:=1 to StringGrid1.RowCount-1 do For j:=1 to StringGrid1.ColCount-1 do

begin M[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);

end;

Часть II. Delphi

//открывается вторая форма

Form2.Show;

//количеству строк и столбцов компонента StringGrid на второй форме

//присваивается значение порядок: матрицы +1 Form2.StringGrid1.RowCount:=N+1; Form2.StringGrid1.ColCount:=N+1;

//подписываются заголовок таблицы, и номера строк

For i:=1 to Form2.StringGrid1.RowCount do

Form2.StringGrid1.Cells[i,0]:= IntToStr(i);

For j:=1 to Form2.StringGrid1.ColCount do

Form2.StringGrid1.Cells[0,j]:= IntToStr(j);

{вывод в компонент StringGrid на второй форме транспонированной матрицы}

{Транспонированная матрица не создается. Транспонирование осуществляется путем вывода столбца исходной матрицы в строку компонента StringGrid. ВStringGridномерстолбцаi, номерстроки j.}

For i:=1 to Form2.StringGrid1.ColCount-1 do

For j:=1 to Form2.StringGrid1.RowCount-1 do Form2.StringGrid1.Cells[i,j]:=FloatToStr(M[i,j]);

end;

{Процедура подготовки таблицы на форме для ввода квадратной матрицы, которая выполняется при выходе из поля ввода размерности матрицы.}

procedure TForm1.Edit1Exit(Sender: TObject); Vari,j:Integer;//номера строки столбца квадратной матрицы begin

// порядок матрицы получает свое значение из поля ввода

N:=StrToInt(Edit1.Text);

// свойство количество строк компонента StringGrid // получает значение: порядок +1 StringGrid1.RowCount:=N+1;

// свойство количество столбцов компонента StringGrid // получает значение порядок: +1 StringGrid1.ColCount:=N+1;

//подпись столбцов таблицы

For i:=1 to StringGrid1.RowCount do StringGrid1.Cells[i,0]:= IntToStr(i); //подписьстроктаблицы

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

Часть II. Delphi

//добавление в свойства таблицы признака

//допустимости редактирования содержимого ячеек таблицы

StringGrid1.Options:= StringGrid1.Options +[goEditing]; end;

procedure TForm1.Button3Click(Sender: TObject); begin

Form1.Close

end;

//процедура вычисляет след матрицы и выводит результат

//натретьюформу

procedure TForm1.Button2Click(Sender: TObject);

Var i: Integer; begin

Sled:=0;

Form3.Show;

For i:=1 to Form1.StringGrid1.ColCount-1 do Sled:= Sled + M[i,i];

Form3.Label2.Caption:=' Следматрицыравен ' + FloatToStr(Sled) end;

end.

{ Модуль, связанный со второй формой} unit Unit2;

interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids;

type

TForm2 = class(TForm) StringGrid1: TStringGrid; Button1: TButton;

procedure Button1Click(Sender: TObject); private

{Private declarations } public

{Public declarations }

end; var

Часть II. Delphi

Form2: TForm2; implementation {$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject); begin

Form2.Close

end;

end.

{ Модуль, связанный с третьей формой.} unit Unit3;

interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type

TForm3 = class(TForm) Label1: TLabel;

Label2: TLabel;

Button1: TButton;

procedure Button1Click(Sender: TObject); private

{Private declarations } public

{Public declarations }

M :array [1..100,1..100] of Extended; N:Integer;

Sled: Extended; end;

var

Form3: TForm3; implementation {$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject); begin

Form3.Close

end;

end.

Часть II. Delphi

Тестовый пример