Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Delphi_Ч2.doc
Скачиваний:
15
Добавлен:
02.11.2018
Размер:
1.7 Mб
Скачать
      1. Использование компонента StringGrid для ввода-вывода матриц

Значок этого компонента находится на вкладке Additional панели инструментов Delphi. Компонент StringGrid представляет собой таблицу, ячейки которой содержат строки символов. При появлении на форме этот компонент первоначально имеет вид, показанный на рисунке 9.1.

Рисунок 9.1. Исходный вид компонента StringGrid

Фактически, компонент представляет собой матрицу, у которой строки и столбцы нумеруются с 0.

Получить доступ к конкретной ячейке таблицы StringGrid можно, используя свойство Cells[Col, Row], где Col - номер колонки, Row - номер строки. Это свойство возвращает текст, записанный в ячейке.

Некоторые свойства компонента представлены в таблице 9.1.

Таблица 9.1 - Свойства компонента StringGrid

Свойство

Что определяет

Name

Имя компонента

RowCount

Количество строк таблицы

ColCount

Количество колонок

FixedCols

Количество зафиксированных колонок таблицы в левой части таблицы. При горизонтальной прокрутке таблицы колонки остаются на месте.

Ячейки этих колонок имеют серый цвет.

FixedRows

Количество зафиксированных строк в верхней части таблицы.

DefaultRowHeight

Высота строк таблицы

DefaultColWidth

Ширина колонок

Options.GoEditing

True – редактирование разрешено, False – запрещено

Компонент идеально подходил бы для визуального представления матрицы, если бы мы определяли матрицу так, как StringGrid. Но так как мы нумеруем строки и столбцы с 1, а не с 0 и, кроме того, вначале задаем индекс строки, а затем столбца, то возникает небольшая путаница. Об этом нельзя забывать.

      1. Тотальная обработка данных в матрицах

Под тотальной обработкой здесь подразумевается выполнение одних и тех же операций для всех элементов матрицы.

Ниже перечислены некоторые задачи тотальной обработки матриц.

  • Заполнение матрицы случайными или другими числами.

  • Поиск суммы всех элементов матрицы.

  • Поиск максимального или минимального элемента в матрице.

  • Умножение матрицы на число.

  • Сложение двух матриц одинакового размера.

Тотальная обработка обычно организуется с помощью двух вложенных циклов for…todo, параметрами которых являются индексы матрицы. Если обработка матрицы производится по строкам, то заголовок внешнего цикла записывается для первого индекса, а если по столбцам, то первый индекс должен изменяться во внутреннем цикле.

Примером тотальной обработки матрицы может служить процедура обнуления элементов числовой матрицы.

procedure fillMatrixWithZero(var m:TMatrixInt10x10, nRow, nCol);

var i, j : integer;

begin

for i:=1 to nRow do

for j:=1 to nCol do

m[i,j]:=0;

end;

В эту процедуру передается адрес матрицы, а также количество строк (nRow) и количество столбцов (nCol)

Все задачи тотальной обработки имеют подобную структуру. Отличаются они только инструкциями внутри цикла.