Название: методические указания к выполнению лабораторных работ по программированию для студентов направления 5528 «Информатика и вычислительная техника» и 5205 «Лингвистика»(Власенко О. Ф.,Беляева И. В. ) Жанр: Информационные системы и технологии Просмотров: 4858 |
Индексы массиваВ качестве индекса массива можно использовать любой порядковый тип, кроме типа 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 Элемент
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-мерные массивы. «Мерность» массивов определяется количеством индексов, указываемых в квадратных скобках, для того чтобы определить элемент массива.Пример:
На практике чаще всего используются одномерные массивы, реже двумерные, и значительно реже массивы больших размерностей.Двумерные массивыОдномерный массив можно представить в виде строки. Например, массив целых чисел можно представить строкой целых чисел, например такой: 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 – обозначает индекс номера столбца.Для обращения к элементу двумерного массива необходимо в квадратных скобках сначала указать номер строки, а затем номер столбца.Например: |
|