Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2012 02 26 Основы программирования в Delphi.docx
Скачиваний:
4
Добавлен:
16.08.2019
Размер:
204.56 Кб
Скачать
  1. Массивы

Массивы относятся к структурированным типам данных.

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

Одномерные массивы

В одномерном массиве каждый элемент однозначно идентифицируется его порядковым номером в структуре. Такое понятие как «вектор» в программе представляют одномерным массивом.

Следующий пример показывает как объявить в программе одномерный массив с пятью элементами целого типа:

var

MyArray : array[0..4] of integer;

Для придания значений элементам массива надо использовать операцию «индекс» ([]):

MyArray[0] := -200;

MyArray[1] := -100;

MyArray[2] := 0;

MyArray[3] := 100;

MyArray[4] := 200;

Далее в программе можно обращаться к элементу одномерного массива по его индексу:

X := MyArray[3] + MyArray[4]; { результат Х = 300 }

Многомерные массивы

Массивы могут быть многомерными.

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

var

M2Array : array[0..2, 0..4] of Integer;

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

X := M2Array[1][1] + M2Array[2][1];

X := M2Array[1, 1] + M2Array[2, 1];

Порядок размещения элементов двумерного массива показан на рис 1.5. Здесь индекс по вертикали – первый, а по горизонтали – второй.

[0]

[1]

[2]

[3]

[4]

[0]

1

2

3

4

5

[1]

6

7

8

9

10

[2]

11

12

13

14

15

Рис.1.5. Размещение элементов двумерного массива в памяти

При включенной опции компилятора «Range checking» осуществляется автоматический контроль принадлежности индексов диапазонам, указанным при объявлении массива. Например, при компиляции следующего фрагмента кода

var

MyArray : array[0..4] of Integer;

X : Integer;

begin

X := MyArray[3] + MyArray[5]; { Ошибка! 5 вне диапазона. }

end;

будет выдано сообщение об ошибке :

Constant expression violates subrange bounds.

Диапазон индексов элементов массива, который указывается при его объявлении, может быть любым по усмотрению программиста. Так, нижняя граница не обязательно должна быть нулевой. Например, такое объявление одномерного массива допустимо:

var

MyArray : array[10..20] of Integer;

Теперь для доступа к элементам массива мы должны использовать индексы с 10 (первый элемент) по 20 (последний элемент).

Можно объявить массив констант и одновременной инициализировать его:

const

myArray:array[0..4] of Integer = (-200,-100, 0, 100, 200 );

При объявлении массива можно использовать имена ограниченных типов данных (отрезки, перечисления) при условии что эти типы уже где–то объявлены. Например:

type

WorkDays = (Monday,Tuesday,Wednesday,Thurthday,Friday);

WorkHours = 9..18;

WorkTime = array[WorkDays,WorkHours] of integer;

Здесь объявление типа массива WorkTime равносильно следующему

WorkTime = array[0..4,9..18] of integer;

Для доступа к элементам массива можно использовать значения перечисляемых типов, например

var

Days : WorkTime;

// Далее. . .

Days[Monday,10] := 56;

Days[Friday,17] := 100;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]