Описание языка PascalABC.NET | страница 28
Print(a[i])
end;
var a: Arr := (1,3,5,7,9,2,4,6,8);
begin
Squares(a);
PrintArray(a);
end.
Для доступа к нижней и верхней границам размерности одномерного массива используются функции Low и High.
Динамические массивы
Тип динамического массива конструируется следующим образом:
arrayofтип элементов (одномерный массив)
array [,] ofтип элементов (двумерный массив)
и т.д.
Переменная типа динамический массив представляет собой ссылку. Поэтому динамический массив нуждается в инициализации (выделении памяти под элементы).
Для выделения памяти под динамический массив используется два способа. Первый способ использует операцию new в стиле вызова конструктора класса:
var
a: array of integer;
b: array [,] of real;
begin
a := new integer[5];
b := new real[4,3];
end.
Данный способ хорош тем, что позволяет совместить описание массива и выделение под него памяти:
var
a: array of integer := new integer[5];
b: array [,] of real := new real[4,3];
Описание типа можно при этом опускать - тип автовыводится:
var
a := new integer[5];
b := new real[4,3];
Второй способ выделения памяти под динамический массив использует стандартную процедуру SetLength:
SetLength(a,10);
SetLength(b,5,3);
Элементы массива при этом заполняются значениями по умолчанию.
Процедура SetLength обладает тем преимуществом, что при ее повторном вызове старое содержимое массива сохраняется.
Можно инициализировать динамический массив при выделении под него память операцией new:
a := new integer[3](1,2,3);
b := new real[4,3] ((1,2,3),(4,5,6),(7,8,9),(0,1,2));
Инициализацию динамического массива в момент опеисания можно проводить в сокращенной форме:
var
a: arrayof integer := (1,2,3);
b: array [,] of real := ((1,2,3),(4,5,6),(7,8,9),(0,1,2));
c: arrayofarrayof integer := ((1,2,3),(4,5),(6,7,8));
При этом происходит выделение памяти под указанное справа количество элементов.
Инициализация одномерного массива проще всего осуществляется стандартными функциями Seq..., которые выделяют память нужного размера и заполняют массив указанными значениями:
var a := Arr(1,3,5,7,8); // array of integer
var s := Arr('Иванов','Петров','Сидоров'); // array of string
var b := ArrFill(777,5); // b = [777,777,777,777,777]
var r := ArrRandom(10); // заполнение 10 случайными целыми в диапазоне от 0 до 99