Массивы |
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}.
Для массивов определены отношения равенства и неравенства. Два массива с одинаковыми типами элементов равны, если их границы индексации одинаковы и соответствующие элементы равны.
Внешние переменные типа «массив» могут быть входами, выходами, контактами. Тип «массив» могут иметь компоненты записей и коннекторов. |