Головна |
Масив - це пойменована область пам'яті, доступ до окремих частин якої здійснюється за загальним імені та індексу відповідної частини. Всі частини (елементи) масиву мають один і той же тип, в якості якого може виступати будь-який зі стандартних або нестандартних типів, описаних до моменту оголошення масиву. Зокрема, елементи масиву також можуть бути масивами. Такі структури називаються багатовимірними.
Опис масиву виробляється в розділі опису типів даних (після ключового слова Туре) і виглядає наступним чином:
Назва масиву = 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.
Вступ | Основні елементи програми і алфавіт мови | Основна частина програми | числові типи | Строкові типи даних | опис констант | Опис нестандартних типів даних | Інтервальні типи даних | Перелічуваних типи даних | динамічні масиви |