Массивы

Top  Previous  Next

Декларация типа array of TE  (TE[] в синтаксисе C#) определяет одномерный динамический массив с элементами типа TE, нумеруемыми от нуля.

 

Тип TE может быть либо предопределенным типом, либо типом, определяемым пользователем (объявленным типом).

 

Текущие границы индексации доступны через предопределенные функции low и high, а текущая размерность через функцию length (Функции и процедуры для массивов).

Изменение размерности динамического массива выполняется с помощью процедуры setLength.

 

Литерал типа "массив" задается перечнем значений через запятую, заключенную в фигурные скобки, например

 {1, 2, 5, 8}

Пустой массив задается литералом {}.

 

Примеры массивов:

A1: array of boolean := {false,true,false}; -- Ada

bool[] A1 =  {false,true,false}; // C#

A2: array of integer; -- Ada

int[] A2; // C#

A3: array of double := {1.5,2.89,3E12}; -- Ada

double[] A3 = {1.5,2.89,3E12}; // C#

A7: array of string := {"ABC","abc"}; -- Ada

string[] A7 = {"ABC","abc"}; // C#

 

type TAD is array of double; -- Ada

type TAD is double[]; // C#

type TInt is integer; -- Ada

type TInt is int; // C#

type TAV is vector[3]; -- Ada, C#

type T2 is -- Ada

record

   C1: double;

   C2: integer;

   C3: array of double;

end record;

type T2 is -- C#

struct {

  double C1;

  int C2;

  double[] C3;

 };

 

type TAT2 is array of T2; -- Ada

type TAT2 is T2[]; -- C#

 

A4: array of TInt := {0,1,2}; -- Ada

TInt[] A4 = {0,1,2}; -- C#

A5: array of TAD := {{1,2},{3,4,5}}; -- Ada

TAD[] A5 := {{1,2},{3,4,5}}; -- C#

A6: array of TAV := {zeros(3),ones(3)};  -- Ada

TAV[] A6 = {zeros(3),ones(3)};  -- C#

AR2: array of T2 := {{C1=>1,C2=>0,C3=>{1,2}},{C1=>1.3,C2=>8},C3=>{4,5,6}}; -- Ada

T2[] AR2 = {{C1=1,C2=0,C3={1,2}},{C1=1.3,C2=8},C3={4,5,6}}; -- C#

int[] A7 = {};

 

В итеративном литерале-массиве минимальное значение диапазона в заголовке итерации не может быть меньше 0.

При указании минимального значения, большего 0, пропущенные элементы заполняются значениями по умолчанию.

 

A: TAD := {for I in 2..4 : i**2}; -- A={0,0,4,9,16} Ada

TAD A = {for I in 2..4 : i**2}; // A={0,0,4,9,16} C#

 

Для индексации элемента массива используются квадратные скобки, как для векторов и матриц:

 

A3:=A5[0]; -- Ada

A5[1]:={7,8,9,3}; -- Ada

V:=A6[1]+ones(3); -- Ada

A4[2]:=5; -- Ada

AR2[1]:={C1=>3.62,C2=>2,C3=>{1.2,4}}; -- Ada

A3 = A5[0]; -- C#

A5[1] = {7,8,9,3}; -- C#

V = A6[1]+ones(3); -- C#

A4[2] = 5; -- C#

AR2[1] = {C1=3.62,C2=2,C3={1.2,4}}; -- C#

 

При присваивании массивов значения копируются.

После выполнения последовательности операторов:

 

int [] A = {1,2,3};

int [] B = {};

B = A;

B[1] = 7;

 

получим A == {1,2,3} и B == {1,7,3}.

 

Для массивов определены отношения равенства и неравенства. Два массива с одинаковыми типами элементов равны, если их границы индексации одинаковы и соответствующие элементы равны.

 

Внешние переменные типа «массив» могут быть входами, выходами, контактами. Тип «массив» могут иметь компоненты записей и коннекторов.