Описание языка «PascalABC.NET».

Статические массивы.

Описание статического массива.

Статические массивы в отличие от динамических задают свой размер непосредственно в типе. Память под такие массивы выделяется сразу при описании.

Тип статического массива конструируется следующим образом:

Array [тип индекса1, ..., тип индексаN] of базовый тип.

Тип индекса должен быть порядковым. Обычно тип индекса является диапазонным и представляется в виде a..b, где a и b - константные выражения целого, символьного или перечислимого типа. Например:

Type. MyEnum = (w1,w2,w3,w4,w5); Arr = array [1..10] of integer; Var. A1,a2: Arr; B: array ['a'..'z',w2..w4] of string; C: array [1..3] of array [1..4] of real;

Инициализация статического массива.

При описании можно также задавать инициализацию массива значениями:

Var. A: Arr := (1,2,3,4,5,6,7,8,9,0); Cc: array [1..3,1..4] of real := ((1,2,3,4), (5,6,7,8), (9,0,1,2));

Присваивание статического массива.

Статические массивы одного типа можно присваивать друг другу, при этом будет производиться копирование содержимого одного массива в другой:

A1 := a2;

Вывод статического массива.

Процедура write выводит статический массив, заключая элементы в квадратные скобки и разделяя их запятыми:

Var a: Arr := (1,2,3,4,5,6,7,8,9,0); Var m := array [1..3,1..3] of integer := ((1,2,3),(4,5,6),(7,8,9)); Writeln(a); // [1,2,3,4,5]. Writeln(m); // [[1,2,3],[4,5,6],[7,8,9]].

Передача статического массива в подпрограмму.

При передаче статического массива в подпрограмму по значению также производится копирование содержимого массива - фактического параметра в массив - формальный параметр:

Procedure p(a: Arr); // передавать статический массив по значению - плохо! ... P(a1);

Это крайне расточительно, поэтому статические массивы рекомендуется передавать по ссылке. Если массив не меняется внутри подпрограммы, то его следует передавать как ссылку на константу, если меняется - как ссылку на переменную:

Type Arr = array [2..10] of integer; Procedure Squares(var a: Arr); Begin. For var i:= Low(a) to High(a) do. A[i] := Sqr(a[i]); End; Procedure PrintArray(const a: Arr); Begin. For var i:= Low(a) to High(a) do. Print(a[i]). End; Var a: Arr := (1,3,5,7,9,2,4,6,8); Begin. Squares(a); PrintArray(a); End.

Для доступа к нижней и верхней границам размерности одномерного массива используются функции Low и High.