Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Размер оперативной памяти определяется при объявлении двумерного массива и не изменяется во время работы с ним.




ДВУМЕРНЫЕ МАССИВЫ

Результат деятельности некоторой фирмы, торгующей автомобилями, может быть представлен в виде следующей таблицы.

 

Марка Январь Февраль Март ... Ноябрь Декабрь
ВАЗ 2106            
ВАЗ 2107            
ВАЗ 2108            
ВАЗ 2109            
ВАЗ 2110            
ВАЗ 2111            

 


Приведенная выше таблица может быть представлена как совокупность одномерных массивов:

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;

 

      Направление увеличения второго индекса
   
           
Направление увеличения первого индекса 1 a11 a12 a13  
  a21 a22 a23  

 


 

Естественное изображение двумерного массива отличается от его изображения в оперативной памяти, ведь оперативная память линейная.

 

1-я строка 2-я строка  
             

 

В памяти компьютера элементы идут один за одним так, что при переходе от младших адресов к старшим наиболее быстрее изменяется правый индекс массива.

 


 

Пример:

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.

= = = = = =
1-я строка 2-я строка
             

 

Размер оперативной памяти определяется при объявлении двумерного массива и не изменяется во время работы с ним.


 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...