Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Массивы и работа с ними




Под массивом понимается фиксированная совокупность

однотипных элементов, расположенных в

определенном порядке.

 

Местоположение элемента в массиве определяется его номером или, иначе, - индексом. Тем самым обеспечивается упорядоченность элементов и возможность быстрого доступа к ним.

 

Каждый массив обладает по крайней мере тремя характеристиками: мерностью, размерностью и размером

.

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

В зависимости от числа индексов (измерений) массивы бывают одномерными и многомерными.

Например,

 

а). последовательность чисел


2 34 -5 7 0 13 -22

есть одномерный массив, состоящий из 7 элементов целого типа (и только). Присутствие в нем элемента со значением, допустим, 3.14 недопустимо, т.к. это число с дробной частью, т.е. вещественного типа. Обозначить данный массив можно, например, так:


МАS(7) или А(7).

 

При этом число 13 в массиве будет иметь индекс 6 и выражаться MAS[6] или А[6].

 

I- ый элемент обозначается MAS[I] или А[I].

 

Аналогично, последовательность слов

МИР РАК РИМ СОК КОТ ТОК

также является одномерным массивом, состоящим из 6-ти, но уже 3–х символьных элементов.

 

б). двумерный массив в нашем представлении есть матрица, где местоположение элемента определяется двумя индексами, первый из которых обозначает строку, а второй – столбец. Поэтому элемент М[2,4] будет располагаться на пересечении 2-й строки и 4-го столбца. А сама матрица, состоящая, например, из 6 строк и 5 столбцов, будет иметь следующее обозначение:

 

М(6,5)

 

в). трехмерный массив представляется кубом. Для идентификации отдельного элемента в нем уже применяются 3 индекса: первый и второй отображают, соответственно, строку и столбец плоскости (матрицы) куба, а третий – саму эту плоскость (матрицу). Поэтому отображение

 

К(3,4,5)

 

задает куб из 5-ти матриц, каждая из которых насчитывает 3 строки и 4 столбца.

А указание

К[2,1,3]

 

выводит нас на элемент, находящийся на пересечении 2-ой строки и 1-го столбца 3-й матрицы куба.

Если увеличивать число индексов, то можно оперировать более сложными массивами и представлять n-мерные пространства.

 

Размерность массива учитывает количество измерений и задается максимальной (верхней) границей диапазона изменения его индексов. В частности, для одномерного массива размерность будет совпадать с количеством элементов в нем. А для двухмерного размерность будет отражать количество строк и, отдельно, количество столбцов в соответствующей ему матрице.

Например, говорят: массив В, размерностью 4 на 6, подразумевая, что он двумерный и содержит 4 строки 6 столбцов. Т.е. В(4,6).

 

Размер массива определяет общее количество его элементов. При этом в расчет берутся все измерения массива. Так, размер двумерного массива В(4,6) равен 24.

Напомним, что важнейшей особенностью массива является фиксированно е количество элементов в нем.

 

Чтобы использовать массивы в программе, их необходимо объявить.

Объявить массив – это означает сообщить компилятору:

- имя массива, которое определяет переменную с индексами;

- тип элементов массива;

- тип индексов элементов массива;

- размерность массива, равную количеству его индексных позиций;

- порядок позиционирования, т.е. нумерации элементов массива;

- количество элементов массива.

 

Полная форма объявления массива:

 

cписок тип

TYPE <имя типа > =ARRAY[ <типов индексов > ] OF < элементов >;

массива через запятую массива

 

VAR < имя массива >: < имя типа массива>;

 

Типы индексов указываются для каждого измерения и м.б. любыми простыми порядковыми, кроме LONGINT и его диапазона. На практике чаще всего используют интервальный или перечисляемый типы.

Тип элементов м.б. любым из допустимых, кроме FILE.

 

Сокращенная форма объявления:

 

имя cписок тип

VAR < массива >: ARRAY[ <типов индексов > ] OF < элементов >;

через запятую массива

 

 

Примеры объявления одномерных массивов:

 

a). полная запись:

 

TYPE

A=ARRAY[1..50] OF INTEGER;

B=ARRAY[10..20] OF REAL;

C=ARRAY[-5..15] OF BOOLEAN;

D=ARRAY[0..25] OF STRING[30];

E=ARRAY[-1..5] OF CHAR;

VAR MASA: A; => массив из 50 элементов целого типа

MASB: B; => массив из 11 элементов вещественного типа

MASС: С; => массив из 21 элемента булевского типа

MASD: D; => массив из 26 элементов строкового типа

MASE: E; => массив из 7 элементов символьного типа

 

Границы изменения индексов можно задать и так:

 

CONST I=-10000;

N=10000;

TYPE M= ARRAY[I..N] OF REAL;

 

б). сокращенная запись:

 

VAR MASA: ARRAY[1..50] OF INTEGER;

 

 

Примеры объявления многомерных массивов:

 

TYPE A1= ARRAY[1..20] OF INTEGER;

A2= ARRAY[1..10] OF A1;

VAR MSV: A2; => матрица, размерностью 10 на 20

 

Или:

 

TYPE A1= ARRAY[1..20] OF INTEGER;

VAR MSV: ARRAY[1..10] OF A1;

 

Или:

 

VAR MSV: ARRAY[1..10] OF ARRAY[1..20] OF INTEGER;

 

Или еще проще:

 

VAR MSV: ARRAY[1..10,1..20] OF INTEGER;

 

Следует учитывать, что, располагаясь в оперативной памяти, элементы массива образуют цепочку, в которой при последовательном переходе от элемента к элементу быстрее меняется самый правый (младший) индекс. Иными словами, в массиве T(2,3) элементы расположатся в следующем порядке:

 

Т[1,1] Т[1,2] Т[1,3] Т[2,1] Т[2,2] Т[2,3]

 

А в нашем представлении:

 

Т[1,1] Т[1,2] Т[1,3]

Т[2,1] Т[2,2] Т[2,3]

 

Для обращения к любому элементу объявленного массива предназначена переменная с индексом. По форме записи - это имя массива со списком из одного или нескольких индексов через запятую, заключенным в квадратные скобки.

Индекс может быть константой или выражением того же типа, что и тип индекса:

 

MASА[7] => обращение к 7–му (из 50-ти) элементу массива

MASA.

MSV[2,5] => обращение к элементу, лежащему на

пересечении 2-ой строки и 5-го столбца

матрицы MSV.

M1[i+1,j-2,k*3] => обращение к элементу трехмерного

массива M1, индексы которого вычисляются

согласно приведенным выражениям.

 

Замечания:

1. при обращении к элементам массива следует помнить, что количество индексных выражений /индексов/ должно равняться размерности массива.

2. значения индексов должны находиться в пределах их границ, заданных интервалом или перечислением.

3. значение вычисляемого индекса должно соответствовать типу индекса и не м.б. REAL.

Например, недопустимо:

 

Pole:=MSV[ 15, 25/(3+a), 4 ];

 

т.к.:

- первый индекс д.б. < = 10

- второй – дает в результате REAL

- третьего индекса вообще не должно быть

 

Можно описывать массивы с помощью компонент и индексов разных типов:

а).

TYPE DAY=(PND,VTR,SRD,CTV,PTN,SBT,VSK);

VAR DN: ARRAY[1..7] OF DAY;

 

Значениями элемента этого массива DN может быть один из 7 дней недели, задаваемых перечисляемым типом DAY, т.е допустимо:

 

DN[5]:=CTV;

 

б).

TYPE GR=(EIS_111,EIS_112,EIS_211,EIS_212,EIS_311,EIS_312);

ML_KURS=(1..3);

VAR STUD: ARRAY[GR, ML_KURS] OF INTEGER;

Тогда,

 

STUD[EIS_112,1]:=23; => число студентов в группе.

 

 




Поделиться с друзьями:


Дата добавления: 2014-01-15; Просмотров: 916; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.036 сек.