
- •Курск - 2003
- •Интегрированная среда Delphi
- •Цель лабораторной работы
- •Информационные материалы
- •Главное окно
- •Окно редактора кода
- •Окно дерева объектов
- •Окно браузера
- •Лабораторная работа №2 Основы визуального программирования
- •Лабораторная работа №3 Линейные вычислительные процессы
- •Лабораторная работа №4 Итерационные вычислительные процессы
- •Лабораторная работа №5 Циклические вычислительные процессы
- •Лабораторная работа №6 Обработка строковых данных
- •Лабораторная работа №7 Обработка одномерных массивов
- •Лабораторная работа №8 Обработка матриц
- •Лабораторная работа № 9 Программирование операций с матрицами
- •Лабораторная работа №10 Программирование файловых операций
- •Лабораторная работа №11 Графические средства Delphi
- •Библиография
Лабораторная работа №8 Обработка матриц
1.Цель лабораторной работы
Целью лабораторной работы является приобретение практических навыков программирования циклических вычислительных процессов обработки матриц.
2.Условия: даны две матрицы А и В. Получить новую матрицу С прибавлением к элементам каждого столбца первой матрицы минимального элемента соответствующего столбца второй матрицы.
3.Используемые компоненты и их свойства
№ |
Имя ком- понента |
Настраиваемые свойства |
Значения |
Комментарии |
1 |
2 |
3 |
4 |
5 |
1 |
Form1 (форма) |
BorderStyle
Caption Menu PopUpMenu |
{bi System Menu} {biMinimize} Matrix MainMenu1 PopupMenu1 |
системное меню кнопка минимизации заголовок формы главное меню локальное (по правой кнопке мыши) меню |
2 |
Label1 (метка) |
Caption |
Минимальные числа в порядке возрастания по столбцам |
надпись |
3 |
Label2 (метка) |
Caption |
Выберите размерность матрицы в пределах [2..6] |
надпись |
4 |
Label3 (метка) |
Caption |
N=2 |
надпись |
5 |
Button1 (кнопка) |
Caption OnClik (стр. Events) |
Выполнить Button1Click |
надпись событие (щелчок) |
6 |
Button2 (кнопка) |
Caption OnClik (стр. Events) |
Выход Button2Click |
надпись событие (щелчок) |
7 |
StaticText1 (метка для отображения текста) |
Caption |
Введите матрицу А Введите матрицу В Введите матрицу С |
надпись |
1 |
2 |
3 |
4 |
5 |
8 |
StringGrid1 (таблица строк)
|
FixeCols, FixedRows
ColCount
RowCount
Option
OnKeyPress |
1
3
3
goTabs
goEdeting
String- Grid1KeyPress |
число фиксированных столбцов, рядов
начальное значение числа столбцов начальное значение числа рядов (строк) перемещение по ячейкам таблицы по TAB (Shift+TAB) разрешено редактирование (щелчок мыши или F2, завершается по Enter или щелчке по другой ячейке) событие (нажатие АЦ клавиши) |
9 |
StringGrid2 (таблица строк) |
ColCount
RowCount
FixedCols, FixedRows
Options
OnKeyPress |
3
3
1
goTabs
goEditing
String- Grid1KeyPress |
начальное значение числа столбцов начальное значение числа строк количество фиксиро-ванных столбцов,рядов перемещение по ячейкам таблицы по TAB (Shift+TAB) разрешено редактирование событие (нажатие АЦ клавиши) |
10 |
StringGrid3 (таблица строк) |
ColCount RowCount FixedCols, FixedRows |
3 3 3 |
число столбцов число строк количество фиксиро-ванных столбцов, рядов
|
1 |
2 |
3 |
4 |
5 |
11 |
TrackBar1 (регулятор величины, W32) |
Max Min
Frequency
Position
Orientation
TickMark
OnChange (стр. Events) |
6 2
1
2
trHorizontal
tmBottomRight
TrackBar1Change |
Максимальное, минимальное значение диапазона частота нанесения меток (1-каждое значение) текущее положение ползунка ориентация компонента (горизонтальная) способ нанесения меток (внизу) событие (при изме- нении положения ползунка) |
12 |
MainMenu1 (главное меню) |
Описание свойств и пунктов меню см. лаб. раб. №3 |
||
13 |
PopUp- Menu1 (локальное меню) |
Описание свойств и пунктов меню см. лаб. раб. №3 |
Компонент класса TTrackBar предназначен для визуального управления числовой величиной. Он во многом схож со стандартным элементом TScrollBar и отличается от него в основном оформлением.
Свойство Frequency может иметь не только значения 1, но и 2, тогда каждое второе значение будет иметь метку и т.д. Ориентация может быть вертикальной (Orientation=trVertical). Метки (свойство TickMarks) могут быть внизу или справа (tmBottomRight) , вверху или слева (tmTopLeft), по обеим сторонам (tmBottom).
4.Форма задания
5. Текст программы.
unit UMain8;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, Menus, ComCtrls;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
StaticText1: TStaticText;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
About1: TMenuItem;
Label1: TLabel;
TrackBar1: TTrackBar;
Label2: TLabel;
Label3: TLabel;
PopupMenu1: TPopupMenu;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure About1Click(Sender: TObject);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
procedure TrackBar1Change(Sender: TObject);
procedure N10Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
size=4;
var
Form1: TForm1;
implementation
uses UAbout;
var
N : integer = 2;
S:array[2..6]of Integer = (97,129,161,193,225);
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
size=100;
var
A : array[1..size,1..size] of Integer;
B : array[1..size,1..size] of Integer;
k,i,j,min : Integer;
St : String;
begin
{Insert Matrixs}
for i:=1 to N do
for j:=1 to N do
begin
if Length(StringGrid1.Cells[i,j])<>0 then
A[i,j]:=StrToInt(StringGrid1.Cells[i,j]) else A[i,j]:=0;
if Length(StringGrid2.Cells[i,j])<>0 then
B[i,j]:=StrToInt(StringGrid2.Cells[i,j]) else B[i,j]:=0
end;
{Selected and Summa Matrixs}
for i:=1 to N do
begin
min:=1;
for k:=2 to N do
begin
if B[i,k]<B[i,min] then min:=k;
for j:=1 to N do
StringGrid3.Cells[i,j]:=IntToStr(A[i,j]+B[i,min]);
end;
st:=st+' , '+IntToStr(B[i,min]);
end;
label1.Caption:='Минимальные числа в порядке возврастания'+#13
+'по столбцам : '+St;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
ShowMessage('Даны две матрицы,получить новую прибавлением к'+
' элементам каждого столбца первой матрице минимльного'+
' элемента соответствующего элемента второй матрице .');
end;
procedure TForm1.About1Click(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
end;
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
#8,'0'..'9','-':;
else Key:=Chr(0);
end;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
var
i : Integer;
begin
N:=TrackBar1.Position;
Label3.Caption:=' N = '+IntToStr(N);
StringGrid1.ColCount:=N+1;
StringGrid1.RowCount:=N+1;
StringGrid1.Height:=S[N];
StringGrid1.Width:=S[N];
StringGrid2.ColCount:=N+1;
StringGrid2.RowCount:=N+1;
StringGrid2.Height:=S[N];
StringGrid2.Width:=S[N];
StringGrid3.ColCount:=N+1;
StringGrid3.RowCount:=N+1;
StringGrid3.Height:=S[N];
StringGrid3.Width:=S[N];
StringGrid1.Cells[0,0]:=' A:';
StringGrid2.Cells[0,0]:=' B:';
StringGrid3.Cells[0,0]:='C:';
for i:=1 to N+1 do
begin
StringGrid1.Cells[0,i]:=IntToStr(i);
StringGrid1.Cells[i,0]:=IntToStr(i);
StringGrid2.Cells[0,i]:=IntToStr(i);
StringGrid2.Cells[i,0]:=IntToStr(i);
StringGrid3.Cells[0,i]:=IntToStr(i);
StringGrid3.Cells[i,0]:=IntToStr(i);
end;
end;
procedure TForm1.N10Click(Sender: TObject);
var
i,j:integer;
begin
for i:=1 to 6 do
for j:=1 to 6 do
begin
StringGrid1.Cells[i,j]:='';
StringGrid2.Cells[i,j]:='';
StringGrid3.Cells[i,j]:='';
end;
end;
end.
6. Комментарии к тексту программы
Процедура Button2Click закрывает форму.
Процедура N6Click инициируется при выборе пункта меню, выводится на экран cообщение об условиях задания.
Процедура About1Click инициируется при выборе пункта меню, на форму Form1 выводится форма Form2, содержащая рекламную информацию.
Процедура N10Click инициируется при выборе пункта меню, очищает ячейки всех трех таблиц.
Процедура StringGrid1KeyPress реализует форматный ввод в ячейки таблицы. Игнорируются любые нажатия алфавитно-цифровых клавиш кроме цифр числа и знака.
Процедура TrackBar1Change инициируется при изменении положения бегунка. Выбранное значение отображается на метке (N= ) и приводит к изменению размеров компонент StringGrid1, StringGrid2, StringGrid3. Осуществляется это путем изменения числа столбцов и рядов, а также высоты и ширины таблицы строк. Затем заполняется фиксированная часть компонент и начальные значения ячеек таблицы.
Процедура Button1Click реализует действия, определенные заданием. Поиск минимального значения осуществляется стандартным образом.
7. Содержание отчета
задание;
описание свойств используемых компонентов и форм;
текст программы с комментариями;
результаты вычислений.
8. Тренировочные вопросы к защите:
В чем функциональное назначение компонента TrackBar?
Как определяется частота нанесения меток в компоненте TrackBar?
Какое свойство компонента TrackBar определяет способ нанесения меток?
Какой стиль нанесения меток определен, если свойство TickStyle=tsAuto?