Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Массив — это поименованная область памяти, доступ к отдельным частям которой осуществляется по общему имени и индексу соответствующей части. Все части (элементы) массива имеют один и тот же тип, в качестве которого может выступать любой из стандартных или нестандартных типов, описанных к моменту объявления массива. В частности, элементы массива также могут являться массивами. Такие структуры называются многомерными.
Описание массива производится в разделе описания типов данных (после ключевого слова Туре) и выглядит следующим образом:
<Название массива> = Array [<Нижний индекс>..<Верхний индекс>]
of <Тип элементов>;
Например:
Program DeclareArrayTypes1;
Туре {Начало раздела описания типов данных}
MyArray = Array [5..150] of Integer;
{Описание типа данных — массива с именем MyArray, состоящего
из 146-ти элементов, пронумерованных от 5-ти до 150-ти, каждый
из которых имеет тип Integer}
Begin
…
End.
С момента такого описания тип MyArray может использоваться наравне с остальными типами данных, известными компилятору, например, для описания двухмерного массива:
Program DeclareArrayTypes2;
Туре {Начало раздела описания типов данных}
MyArray = Array [5..150] of Integer;
{Описание типа данных — массива с именем MyArray, состоящего
из 146-ти элементов, пронумерованных от 5-ти до 150-ти, каждый
из которых имеет тип Integer}
MyArray2D = Array [1..10] of MyArray;
{Описание типа данных — массива с именем MyArray2D, состоящего
из 10-ти элементов, пронумерованных от 1 до 10-ти, каждый из
которых представляет собой массив типа MyArray}
Begin
...
End.
Многомерный массив можно также описать без использования вспомогательных типов, просто указав в квадратных скобках через запятую пределы изменения индексов для каждого измерения массива:
Туре
MyArray2D = Array [1..10, 5..150] of Integer;
{Описание двухмерного массива}
Описание переменной, представляющей собой массив, происходит по обычным правилам описания переменных:
Туре
MyArray2D = Array [1..10, 5..150] of Integer; {Описание двухмерного
массива}
Var
Array2D: MyArray2D; {Описание переменной-массива}
Для обращения к элементу массива-переменной, ее индекс (индексы в случае многомерных массивов) указываются в квадратных скобках после имени переменной:
Program UsingArrays;
Type
MyArray2D = Array [1..10, 5..150] of Integer; {Описание двухмерного
массива}.
Var
Array2D: MyArray2D; {Описание переменной-массива}
Begin
Array2D [1, 6]:= 18; {Присвоение значение элементу массива с
индексами 1, 6}
End.
Обратите внимание, что максимально возможный размер массивов в Delphi увеличен по сравнению с Pascal, и может достигать 2 гигабайт вместо 64 килобайт.
Заметим, что для массивов одного и того же типа, как и для записей, определена операция присвоения, выполняемая копированием значений элементов одного массива в другой. Также доступна операция присвоения для отдельных элементов массивов. Сравнение массивов в целом невозможно и вызывает ошибку компиляции. Однако это доступно динамическим массивам.
Переменную-массив можно описать и без предварительного создания соответствующего типа данных, прямо в разделе описания переменных:
Var
MyArray2D: Array [1..10, 5..150] of Integer;
{Описание переменной — двухмерного массива
целочисленных элементов}
Необходимо отметить, что при внешне эквивалентном описании два массива не будут считаться принадлежащими к одному типу данных, если это не указано явно:
Туре
ArrType = Array [1..10] of Integer;
{Описание типа данных — массива целочисленных элементов}
Var
Al = Array [1..10] of Integer;
{Описание переменной-массива целочисленных элементов}
А2 = Array [1..10] of Integer;
{Описание переменной-массива целочисленных элементов,
полностью идентичной А1 }
A3: АrrТуре; {Описание переменной-массива целочисленных
элементов}
А4: АrrТуре;
Begin
A3:= А4; {Операция допустима, так как обе переменные имеют один
и тот же тип — АrrТуре}
А1:= А2; {Операция не допустима, так как обе переменные имеют не
один и тот же тип данных, а лишь похожие по структуре
типы}
В рассмотренном примере все четыре используемые переменные являются одномерными массивами целочисленных элементов, проиндексированных от 1 до 10, однако переменные A3 и А4 совместимы между собой, так как при их описании явно указан один и тот же тип, а переменные А1 и А2 не совместимы ни между собой, ни с переменными A3 и А4. Соответственно при попытке компиляции такого фрагмента программы будет выдана ошибка "Incompatible types” - "Несовместимость типов”.
Однако если бы переменные А1 и А2 были описаны в одной строке, то их типы считались бы идентичными:
Var
Al, A2 = Array [1..10] of Integer; {Описание двух переменных-массивов
целочисленных элементов}
Begin
{Операция допустима}
Al:= А2;
End.
Дата публикования: 2014-11-02; Прочитано: 431 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!