Размер оперативной памяти определяется при объявлении двумерного массива и не изменяется во время работы с ним.
Стр 1 из 2Следующая ⇒ ДВУМЕРНЫЕ МАССИВЫ Результат деятельности некоторой фирмы, торгующей автомобилями, может быть представлен в виде следующей таблицы.
Приведенная выше таблица может быть представлена как совокупность одномерных массивов: var vaz2106: array [1..12] of integer; vaz2107: array [1..12] of integer; vaz2108: array [1..12] of integer; vaz2109: array [1..12] of integer; vaz2110: array [1..12] of integer; vaz2111: array [1..12] of integer; Возможно и такое представление таблицы: var jan:array [6..11] of integer; feb:array [6..11] of integer; mar:array [6..11] of integer; ... dec:array [6..11] of integer;
Если вся таблица содержит однородную информацию, например, только целые числа, то такая таблица может быть представлена как двумерный массив.
var vaz:array [6..11] of array [1..12] of integer;
Принято более компактное описание:
var vaz: array [6..11, 1..12] of integer;
ОБЪЯВЛЕНИЕ ДВУМЕРНЫХ МАССИВОВ Конструкция объявления двумерного массива:
array [ тип_индекса1, тип_индекса2 ] of базовый_тип;
Объявить массив возможно в разделах объявления констант, типов, переменных
const имя: array [ тип_индекса1, тип_индекса2 ] of базовый_тип = ((список_элементов_1), …, (список_элементов_N));
type имя = array [ тип_индекса1, тип_индекса2 ] of базовый_тип;
var имя: array [ тип_индекса1, тип_индекса 2] of базовый_тип;
где имя – это имя массива-константы, имя типа массива, имя переменной массива и соответственно (идентификатор); array, of – зарезервированные слова, которые переводятся как «массив», «из»;
базовый_тип – тип элементов массива (кроме файлового типа); тип_индекса1, тип_индекса2 – любой порядковый тип, размерность которого не превышает 2 Гб для OP Delphi 6 (для Turbo Pascal – 64 Кбайт).
Тип_индекса1 характеризует порядковые номера элементов матрицы в строках, тип_индекса2 – в столбцах.
В случае использования в роли типа индекса ограниченного типа (интервального типа) конструкция описания двумерного массива выглядит:
array [ нижний_индекс1 .. верхний_индекс1, нижний_индекс1 .. верхний_индекс2 ] of базовый_тип;
Количество элементов массива равняется величине:
Примеры объявления двумерных массивов: const k=10; m=2; n=5;
{Объявление массива-константы из двух строк, трех столбцов – шесть целочисленных элементов}
f: array [1..2, 1..3] of byte = ((0,1,2), (3,4,5));
{Объявление типа массива из пяти строк, пяти столбцов – 25 целочисленных элементов}
type matrix = array [1..n, 1..n] of integer;
{Объявление переменных массивов} {массив из пяти строк, пяти столбцов – 25 целых элементов} var a:matrix; { Массив из 10 строк, двух столбцов – 20 действительных элементов}
b: array [1.. k, 1.. m] of real;
{Массив из четырех строк, трех столбцов – 12 символьных элементов}
c: array [1..4, 1..3] of char;
{Массив из 256 строк, двух столбцов – 512 целых элементов} d: array [byte, 1..2] of integer;
Напомним: объем сегмента памяти, где будут храниться данные Pascal-программы, представляет для Turbo Pascal 64 Кбайт, Object Pascal – 2 Гбайт. Поэтому есть ограничения на количество элементов массива. Размер памяти можно рассчитать: произведение количества элементов массива на размер одного элемента в байтах. Естественной формой изображения двумерного массива является таблица. Пример: на рисунке изображен массив, который объявлен как
var а: array [1..2, 1..3] of byte;
Естественное изображение двумерного массива отличается от его изображения в оперативной памяти, ведь оперативная память линейная.
В памяти компьютера элементы идут один за одним так, что при переходе от младших адресов к старшим наиболее быстрее изменяется правый индекс массива.
Пример: var а: array [1..2, 1..3] of byte; Begin //Инициализация двумерного массива a[1,1]:=1;a[2,1]:=2; a[2,3]:=3;a[1,2]:=4; a[2,2]:=5; a[1,3]:=6; End. В этом случае в памяти последовательно будут размещены значения 1, 4, 6, 2, 5, 3, а не 1, 2, 3, 4, 5, 6.
Размер оперативной памяти определяется при объявлении двумерного массива и не изменяется во время работы с ним.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|