Название: методические указания к выполнению лабораторных работ по программированию для студентов направления 5528 «Информатика и вычислительная техника» и 5205 «Лингвистика»(Власенко О. Ф.,Беляева И. В. )

Жанр: Информационные системы и технологии

Просмотров: 3255


Индексы массива

В качестве индекса массива можно использовать любой порядковый тип, кроме типа Longint. Напомним, что порядковый тип – это тип, все значения которого можно перечислить. К таким типам относятся все целые типы(integer, shortint, longint, byte, word), все логические (boolean, wordbool, longbool, bytebool), символьный тип (char),   перечисляемые типы и типы- диапазоны.Примеры использования в качестве индексов порядковых типов:Var {примеры объявления массивов}A: Array [Byte] of integer; {массив A, состоящий из 256 элементов,нижняя граница индекса 0, верхняя 255}B: Array [Char] of real; {массив B, состоящий из 256 элементов,нижняя граница индекса #0(символ с кодом 0),верхняя граница индекса #255(символ с кодом 255)}i:Byte; {переменная, используемая как индекс массива A}c:Char; {переменная, используемая как индекс массива B}Begin {примеры  обращения к элементам массива}A[45]:=0;             {В элемент массива A, имеющий индекс 45, записали 0 } B[‘t’]:=2.4;  {В элемент массива B, имеющий индекс ‘t’, записали 2.4}i:=200;   {i присвоили значение 200 }c:=’#’;   {c присволили значение ‘#’ }A[i]:=23400; {В элемент массива A, имеющий индекс i=200,записали 23400}B[c]:=123.456; {В элемент массива B, имеющий индекс c=’#’,записали 123.456}End.Обычно в качестве индекса используют диапазон значений какого-либо перечисляемого типа.Например:Var {примеры объявления массивов}C: Array [-10..5] of integer; {массив C, состоящий из 16 элементов,нижняя граница индекса -10, верхняя 5}D: Array [‘A’..’Z’] of char; {массив D, состоящий из 26 элементов,нижняя граница индекса ’A’,верхняя граница индекса ‘Z’}j: -10..5; {переменная, используемая как индекс массива C}c1: ‘A’..’Z’; {переменная, используемая как индекс массива D}k: integer; {эту переменную можно использовать в качестве индекса массива C, т.к. –10..5 – это  диапазон значений целого типа}c2: char; {эту переменную можно использовать в качестве индекса массива D, т.к.’A’..’Z’ – это  диапазон значений символьного типа}begin {примеры обращения к элементам массивов}C[-4]:=3; D[‘F’]:=’\%’;j:=4;           C[j]:=-10;c1:=’R’;       D[c1]:=’q’;

k:=-3;               C[k]:=80; c2:=’G’;      D[c2]:=’Й’; end.Чаще же всего используют диапазон значений целого типа, причем нижний индекс обычно берут равным 1.Например:VarE: Array [1..10] of integer; {массив E, состоящий из 10 элементов,нижняя граница индекса 1, верхняя 10}Представление массива в памятиЭлементы массива размещаются в памяти в последовательных ячейках. Массив занимает количество байт, равное произведению количества элементов массива на размер одного элемента:SizeOfArray = NumElement * SizeOfElementгде     SizeOfArray – размер массиваNumElement – количество элементов в массивеSizeOfElement – размер одного элементаАдрес первого (по порядку) элемента массива является адресом массива (будем обозначатьего AdrArray). Адрес i-го элемента массива (его будем обозначать AdrI) можно вычислить по формуле:AdrI = AdrArray + (i – нижняя_граница_индекса) * SizeOfElementДля примера рассмотрим массив B, определенный выше. Нижняя граница индекса этогомассива = 5. Первый (по порядку) элемент массива - B[5]. Пусть его адрес = 100. Размер каждого элемента 6 байт, поскольку тип элементов - Real.Вычислим адреса остальных элементов массиваAdr6 = 100 + (6-5)*6 = 100 + 1*6 = 106Adr7 = 100 + (7-5)*6 = 100 + 2*6 = 112Adr8 = 100 + (8-5)*6 = 100 + 3*6 = 118Графически покажем взаимное расположение элементов этого массива:

Адрес элемента100106112118 Элемент

B[5]

B[6]

B[7]

B[8]

 

 
Замечание: Один массив может занимать в памяти не более 65520 байт. Нельзя, например,определить такой массив C:Var  C: array[1..50000]  of integer;- каждый элемент этого массива занимает в памяти 2 байта, элементов 50000, значит весь массив занимает 100000 байт > 65520 байт.Пользовательский тип - массивВ программе можно определить тип массива, для того чтобы потом его использовать для определения переменных типа массива.Пример:TypeArr = array[1..20]  of integer; {определили тип массива целых чисел содержащего 20 элементов}

VarA,B: Arr; {A и B – массивы целых чисел, содержащие по 20элементов}Дальше с массивами A и B можно работать как с обычными массивами:A[3]:=2;   B[4]:=A[3];   и т.д.Кроме типа массива в программе можно определить и специальный тип для индексов. Этот тип должен быть интервальным.Пример: TypeIndexEl = 1 .. 20; {тип индекса элемента}Arr = array[IndexEl] of integer; {тип массива целых чисел содержащего 20 элементов}VarA,B: Arr; {A и B – массивы целых чисел, содержащие по 20элементов}i,j: IndexEl; {переменные, используемые для указания индекса элемента }Одномерные и n - мерные массивыВсе массивы, которые приведены выше, называются одномерными – у элементов одномерных массивов в квадратных скобках указывается только один индекс (у таких массивов только одно измерение).Кроме одномерных массивов могут быть и двумерные, и трехмерные, и прочие n-мерные массивы. «Мерность» массивов определяется количеством индексов, указываемых в квадратных скобках, для того чтобы определить элемент массива.Пример:

A[7]

– A      – одномерный массив

S[2,-3]

– S

– двумерный массив

W[1,0,0]

– W

– трехмерный массив

Z[-1,3,4,3,0]

 

– Z       – пятимерный массив

На   практике   чаще   всего   используются  одномерные   массивы,   реже   двумерные,   и значительно реже массивы больших размерностей.Двумерные массивыОдномерный массив можно представить в виде строки. Например, массив целых чисел можно представить строкой целых чисел, например такой: 3 2 4 1 3.Двумерный массив можно представить в виде прямоугольной таблицы, например такой:2 3 4 50 4 8 37 1 5 3Чтобы определить такой массив, в программе надо написать:VarA: array[1..3,1..4]  of integer;Здесь в массиве A первый интервал индексов - 1..3 – обозначает индекс номера строки, а второй интервал индексов – 1..4 – обозначает индекс номера столбца.Для обращения к элементу двумерного массива необходимо в квадратных скобках сначала указать номер строки, а затем номер столбца.Например: