«Обработка массивов данных» Delphi. Тема 4:4:
«Обработка массивов данных» План темы: l1l1. Понятие массива данных. l2l2. Описание массива в программе. l3l3. Размерность массивов. l4l4. Действия над массивами. l5l5. Действия над элементами массива. l6l6. Компонент StringGrid. l7l7. Примеры обработки массивов.
1. Понятие массива данных. l Массив - это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. l Массивы применяются для удобства обработки больших объёмов данных.
l Элементами массива могут быть данные любого типа. l Число элементов массива фиксируется при описании и в процессе выполнения программы не меняется. l Доступ к каждому отдельному элементу осуществляется путём индексирования (нумерации) элементов массива. 1. Понятие массива данных.
Массив можно представить себе как таблицу некоторых данных: i AiAi Номер элемента Значение элемента Массив из пяти вещественных чисел. 1. Понятие массива данных.
2. Описание массива в программе. TYPE = array[размер] of ; VAR : ; l Массив может быть описан и без предварительного описания типа в разделе Type: VAR < имя массива >: array[размер] of ;
TYPE Vector = array[1..25] of real; VAR М1: Vector; { тип Vector предварительно описан в разделе типов } M2: array[1..60] of integer; { прямое описание массива М2 } spisok: array[1..30] of string; 2. Описание массива в программе.
3. РАЗМЕРНОСТЬ МАССИВОВ l Если при описании массива задан один индекс, массив называется одномерным (линейным), если два индекса - двумерным (прямоугольным), если n индексов - n-мерным. l Одномерный массив в математике называется вектор, а двумерный - матрица.
3. РАЗМЕРНОСТЬ МАССИВОВ Линейный массив из 6-ти элементов: Прямоугольный массив 3 х 5:
ПРИМЕРЫ ОПИСАНИЯ ПРЯМОУГОЛЬНЫХ МАССИВОВ VAR Matr : array[1..6,1..8] of integer; { Matr – целочисленный двумерный массив размером 6 строк - 8 столбцов } l Для описания массива можно использовать предварительно определенные константы: CONST N = 4; M = 6; VAR Y : array[1..N,1..M] of real;
4. ДЕЙСТВИЯ НАД МАССИВАМИ. l Для работы с массивом как единым целым используется идентификатор массива без указания индекса в квадратных скобках. Массив может участвовать только в операциях отношения "равно", "не равно" и в операторе присваивания. Например: A : = B; If A = B then... l Массивы, участвующие в этих действиях, должны быть идентичны по структуре, т.е. иметь одинаковую размерность и одинаковые типы компонентов.
5. ДЕЙСТВИЯ НАД ЭЛЕМЕНТАМИ МАССИВОВ l После объявления массива каждый его элемент можно обработать как отдельную переменную, указав идентификатор (имя) массива и индекс элемента (порядковый номер) в квадратных скобках. l Например, запись Mas[2], Vector[10] позволяет обратиться ко второму элементу массива Mas и десятому элементу массива Vector. l При работе с двумерным массивом указываются два индекса. Например, запись Matr[3,4] делает доступным для обработки значение элемента, находящегося в третьей строке четвертого столбца массива Matr.
- Компонент StringGrid обеспечивает отображение данных в таблице. - В «Палитре компонентов» находится на странице Additional. 6. Компонент StringGrid.
Основное свойство компонента StringGrid - двумерный массив строковых данных Cells. Содержимое каждой ячейки таблицы - это элемент двумерного массива Cells Свойство Cells доступно только программно, т.е. его нет в «Инспекторе объектов».
Нумерация строк и столбцов в StringGrid начинается с 0. Первый индекс – номер столбца, второй – номер строки..Cells[0, 0].Cells[2, 3].Cells[?, ?]
Основные свойства компонента StringGrid:.ColCount - Количество столбцов в таблице..RowCount - Количество строк в таблице..FixedColor - Цвет зафиксированных строк и столбцов в таблице.. FixedCols - Количество зафиксированных столбцов.. FixedRows - Количество зафиксированных строк.. Options - Множество параметров, задающих различные режимы работы и способы отображения таблицы.
Основные параметры в свойстве Options:.goRangeSelekt - Если равно True, пользователь может выделять последовательно расположенные ячейки..goRowSizing - Если равно True, пользователь может изменять высоту строк..goColSizing - Если равно True, пользователь может изменять ширину столбцов..goEditing - Если равно True, пользователь может изменять текст в ячейках таблицы.
ПРИМЕР ОБРАБОТКИ ЛИНЕЙНОГО МАССИВА l Дан массив А из N вещественных чисел. Вычислить среднее арифметическое положительных элементов. CONST N = 12; VAR A : array[1..N] of real; S : real; i,k: integer;
ПРИМЕР ОБРАБОТКИ ЛИНЕЙНОГО МАССИВА BEGIN S : = 0; k:=0; For i : = 1 to N do Begin {…Ввод элемента массива A[ i ]} If A[ i ] > 0 then begin S : = S + A[ i ]; k:=k+1; end; S : = S / k;k; {…Вывод значения S} END.
ПРИМЕР ОБРАБОТКИ ПРЯМОУГОЛЬНОГО МАССИВА CONST n = 5; m = 4; VAR A : array[1..n, 1..m] of real; B : array[1..n] of real; i, j: integer; Дан массив А вещественных чисел из n строк и m столбцов. Вычислить сумму элементов в каждой строке.
ПРИМЕР ОБРАБОТКИ ПРЯМОУГОЛЬНОГО МАССИВА BEGIN For i : = 1 to n do begin B[ i ] : = 0; For j : = 1 to m do begin {…Ввод элемента матрицы A[ i, j ]} B[ i ] : = i ] + A[ i, j ]; end; end; {…Вывод массива B} END.