Массив
Общая информация
Массив представляет собой структуру данных, которая хранит некоторый набор значений. Элементы массива могут быть как одинакового, так и различного типа. Идентификация элементов массива выполняется по индексу.
Размер массива
Любой массив в каждый момент времени имеет определенный размер. Размер массива можно изменять динамически, например, добавив или удалив элемент массива.
Изменяемые и неизменяемые массивы
Массивы могут быть неизменяемыми и изменяемыми:
- в неизменяемом массиве нельзя изменить ни значение элемента массива, ни размер самого массива. Неизменяемый массив будет называться фиксированным массивом;
- в изменяемом массиве возможно как изменение любого элемента массива, так и изменение параметров самого массива. Изменяемый массив будет называться массивом или обычным массивом.
Соответственно, тип для неизменяемого (фиксированного) массива называется ЧитаемыйМассив<ТипЭлемента>
, а тип для обычного массива — Массив<ТипЭлемента>
.
Создание массива
Создание массива выполняется стандартным способом:
пер ПустойМассив = новый Массив<Число>()
пер МассивСДанными = [1, 2, 3]
пер МассивКопия = новый Массив<Число>(МассивСДанными)
пер ДляРаботы = новый Массив<Число>()
ДляРаботы.Добавить(1)
ДляРаботы.Добавить(2)
пер Коэффициенты: Массив<Число>
Коэффициенты = [1, 2 , 3]
Так как все созданные выше массивы являются изменяемыми, то любой из созданных массивов можно заполнить необходимыми данными с помощью встроенного языка. При создании массива копированием в новый массив переносятся все элементы массива-источника.
Создание фиксированного массива выполняется аналогично изменяемому.
пер НеизмМассивСДанными: ЧитаемыйМассив<Число> = [1, 2, 3]
пер МатКонст = [3.141592654, 2.718281828]
пер НеизмКонст = новый ЧитаемыйМассив<Число>(МатКонст)
Элементами массива могут быть значения произвольных типов. В следующем примере приводится несколько вариантов создания массивов с различным наполнением.
пер Матрица = <Массив<Число>>[<Число>[], <Число>[]]
пер Матрица2: Массив<Массив<Число>>
Матрица2.Добавить(новый Массив<Число>())
Матрица2.Добавить(новый Массив<Число>())
Во всех приведенных примерах создавались переменные, которые хранили ссылки на массивы значений. Однако язык предоставляет возможность использовать массив, не объявляя для этого отдельную переменную. Для этого можно использовать литерал [элемент0, ..., элементN]
, где каждый элемент — это выражение на встроенном языке.
метод МойМетод()
для Расширение из ["*.epf", "*.erf"]
пер Строка = "Текущее расширение: " + Расширение
// какое-то полезное действие
;
РаботаСМассивом([3.141592654, 2.718281828])
;
метод РаботаСМассивом(СЧемРаботаем: ЧитаемыйМассив<Число>)
для Элемент из СЧемРаботаем
пер Строка = "Текущий элемент: " + Элемент
// какое-то полезное действие
;
;
Использование массива
Для обращения к элементу массива используется индекс. Индекс массива является целым числом, значение которого может находиться в диапазоне от 0 до 231–1. Массив из N элементов индексируется от 0 до N–1, где 0 — это индекс первого элемента в массиве. Обращение по индексу за границей массива приведет к исключению. Если в качестве индекса указано дробное число, то обращение по такому индексу также приведет к ошибке.
Для обращения к элементам массива можно использовать один из следующих способов:
- С помощью операции доступа по индексу
[]
. В этом случае индекс требуемого элемента массива нужно указать внутри квадратных скобок[]
. Обращение к 5-му элементу массиваКоэффициенты
будет выглядеть следующим образом:Коэффициенты[4]
. - Функциональный способ. В этом случае индекс нужного элемента массива нужно указать в качестве параметра метода
Получить()
соответствующего массива. Обращение к 5-му элементу массиваКоэффициенты
будет выглядеть следующим образом:Коэффициенты.Получить(4)
.
пер Данные: Массив<Число> = [1, 2, 3]
пер ДоступПоИндексу = Данные[0]
пер ФункциональныйСпособ = Данные.Получить(1)