
- •Раздел 10. Структурные типы
- •10.1. Массивы
- •10.1.1. Задание массивов
- •Voz [f] Godrozd [f].
- •Voz [Ivanov] Voz [Petrov]
- •10.1.2. Действия над элементами массивов
- •10.1.3. Действия над массивами
- •10.1.4. Типизованные константы типа массив
- •10.1.5. Уплотнение структурных данных в памяти
- •10.2. Строковые данные
- •10.2.1. Строковые константы
- •10.2.2. Строковые переменные
- •10.2.3. Встроенные функции, определенные над данными строковых типов переменной длины
- •Copy (St, Poz, n)
- •Concat (St1[, St2, ..., StN] )
- •Length (St)
- •UpperCase (St)
- •LowerCase (St)
- •SetLength (St, n)
- •10.2.4. Встроенные процедуры, определенные над данными строковых типов переменной длины
- •Delete (St, Poz, n)
- •Insert (St1, St2, Poz)
- •10.2.5. Строковые ресурсы
10.1.2. Действия над элементами массивов
Элементы массива называются индексированными переменными. Для обращения к конкретному элементу массива необходимо указывать имя массива и индексы элемента в квадратных скобках.
Элементы массива могут использоваться в выражениях аналогично простым переменным и вместе с простыми переменными. Например,
Sin (X [I + 5] ) * X [I] + Y.
Здесь Y – простая переменная, X [I + 5], X [I] – элементы массива X.
Инициализация массива – это присвоение всем элементам массива исходного значения.
Пример 10.7.
Инициализация двумерного массива.
Type
TMas = Array [1 .. 10, 1 .. 20] Of Integer;
Var
J, I: Integer;
Mas1, Mas2: TMas;
----------------------------------
{Инициализация: установка начального значения, равного 0}
For I := 1 To 10 Do
For J := 1 To 20 Do
Mas1[I, J] := 0;
Пример 10.8.
Простейший ввод-вывод элементов массива (объявления – в соответствии с примером 10.7).
----------------------------------
{Ввод исходных значений в массив}
For I := 1 To 10 Do
For J := 1 To 20 Do
Read (Mas1[I, J]);
{Вывод значений элементов массива}
For I := 1 To 10 Do
For J := 1 To 20 Do
Writeln (Mas1[I, J]);
Ввод-вывод всех элементов массива как одной полной переменной в Delphi не предусмотрен.
Пример 10.9.
Присвоение значения одного массива другому может быть выполнено так:
For I := 1 To 10 Do
For J := 1 To 20 Do
Mas2 [I, J] := Mas1 [I, J];
Массив Mas2 должен быть объявлен так же, как и массив Mas1 (оба массива должны быть одного и того же типа). Массив Mas1 к этому моменту должен быть определен (все его элементы должны иметь значения). Значения элементов Mas1 после присваивания не изменяются.
В двух следующих пунктах описан другой способ присвоения значения одного массива другому.
Для массивов в Delphi определены две встроенные функции — Low(М) и High(М), где М – имя массива. Функция Low возвращает нижнюю, а High — верхнюю границу индекса массива М. Данные функции могут использоваться, например, для управления количеством повторений цикла, что в общем случае делает программу более универсальной.
Пример 10.10.
Инициализация одномерного массива.
Type
TMass = Array [1 .. 10] Of Integer;
Var
I: Integer;
Ms1: TMass;
----------------------------------
{Первый вариант инициализации}
For I := 1 To 10 Do
Ms1[I] := 0;
{Второй вариант инициализации}
For I := Low(Ms1) To High(Ms1) Do
Ms1[I] := 0;
10.1.3. Действия над массивами
Полные переменные типа массив не могут использоваться в качестве операндов выражений.
Значения полных переменных могут быть использованы только в операторах присваивания, причем полной переменной может быть присвоено только значение полной переменной того же типа.
Например,
В := А;
Здесь А и В – массивы одного и того же типа.
К этому моменту массив А уже должен быть определен – всем его элементам должны быть присвоены значения.
Это же касается и подмассивов. Например, если А и В – двумерные массивы одного типа, то запись
B[I] := A[I];
означает, что I-ой строке массива В будет присвоено значение I-ой строки массива А.