Массив – это упорядоченный набор данных одного типа, снабженных индексами.
Индексы предназначены для нахождения определенного элемента массива, т.е. положение каждого элемента в массиве определяется его индексом. В этом и заключается упорядоченность. Тип компонент называется базовым типом массива.
В VBA массив рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться на него, как на единое целое, так и на любую из его компонент. Переменная с индексом — идентификатор компоненты массива. Формат записи:
<имя массива> (<индекс>), где индекс может быть выражением порядкового типа.
Видим, что индексы принято указывать в круглых скобках после имени массива. По умолчанию нумерация элементов массива начинается с 0. Говорят, что 0 – базовый индекс.
Например, если А – массив из пяти чисел: 2, 3, 7, 9, 6, то А (0) = 2 – первый элемент массива, А (4) = 6 – последний.
Описание массива определяет имя, размер массива, базовый тип и производится в разделе переменных. В VBA имеются следующие описания массивов:
1. <имя массива> (<номер последнего элемента>) [As <тип>]
2. <имя массива> (<начальный индекс> To <конечный индекс>) [As <тип>]
Отметим, что второй позволяет изменить базовый индекс. Другим изменения базового индекса является использование оператора Option Base, который имеет следующий синтаксис:
Option Base <базовый индекс>
<базовый индекс> – единица или ноль.
Этот оператор применяется перед процедурой, аналогично оператору Option Explicit.
Например, для изменения базового индекса с 0 на 1 используется оператор Option Base 1.
Массив A, который был рассмотрен, требует одного индекса для указания любого элемента. Такой массив называется одномерным (или линейным) В одномерных массивах хранятся значения линейных таблиц. Примеры описания одномерных массивов:
1. Dim A (12) As Byte
2. Dim A (1 To 12) As Byte
3. Dim Bin (5) As Integer
4. Dim Str_mass (4) As String
5. Dim K (7)
6. Dim L (0 To 3)
Заполнение массива в программе производится поэлементно. Чаще всего для этого используется цикл с параметром, где в качестве параметра применяется индексная переменная. Возможно заполнение массива путем простого присвоения значения элементам:
Dim B (1 To 3) As Integer
B (1) = 2
B (2) = 18
B (3) = 6
Удобным определения одномерных массивов является функция Array, преобразующая список элементов, разделенных запятыми, в вектор из этих значений, и присваивающая их переменной типа Variant.
Dim A As Variant
A = Array (10, 20, 35, 70)
Иногда в процессе выполнения программы требуется изменять размер массива. В этом случае первоначально массив объявляют как динамический. Для этого при объявлении массива не указывают его размерность. Например,
Dim R () As Single
В программе следует вычислить необходимый размер массива и связать его с некоторой переменной, например, n; затем изменить размер динамического массива с оператора ReDim:
ReDim [Preserve] Имя (<номер последнего элемента>) [As <тип>]
ReDim [Preserve] Имя (<начальный индекс> To <конечный индекс>) [As <тип>]
Preserve – ключевое слово, используемое для сохранения данных в существующем массиве при изменении значения последней размерности.
Лабораторная работа № 8. Работа с массивами
Теоретические сведения
Массив – это упорядоченный набор данных одного типа, снабженных индексами.
Индексы предназначены для нахождения определенного элемента массива, т.е. положение каждого элемента в массиве определяется его индексом. В этом и заключается упорядоченность. Тип компонент называется базовым типом массива.
В VBA массив рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться на него, как на единое целое, так и на любую из его компонент. Переменная с индексом — идентификатор компоненты массива. Формат записи:
<имя массива> (<индекс>), где индекс может быть выражением порядкового типа.
Видим, что индексы принято указывать в круглых скобках после имени массива. По умолчанию нумерация элементов массива начинается с 0. Говорят, что 0 – базовый индекс.
Например, если А – массив из пяти чисел: 2, 3, 7, 9, 6, то А (0) = 2 – первый элемент массива, А (4) = 6 – последний.
Описание массива определяет имя, размер массива, базовый тип и производится в разделе переменных. В VBA имеются следующие описания массивов:
1. <имя массива> (<номер последнего элемента>) [As <тип>]
2. <имя массива> (<начальный индекс> To <конечный индекс>) [As <тип>]
Отметим, что второй позволяет изменить базовый индекс. Другим изменения базового индекса является использование оператора Option Base, который имеет следующий синтаксис:
Option Base <базовый индекс>
<базовый индекс> – единица или ноль.
Этот оператор применяется перед процедурой, аналогично оператору Option Explicit.
Например, для изменения базового индекса с 0 на 1 используется оператор Option Base 1.
Массив A, который был рассмотрен, требует одного индекса для указания любого элемента. Такой массив называется одномерным (или линейным) В одномерных массивах хранятся значения линейных таблиц. Примеры описания одномерных массивов:
1. Dim A (12) As Byte
2. Dim A (1 To 12) As Byte
3. Dim Bin (5) As Integer
4. Dim Str_mass (4) As String
5. Dim K (7)
6. Dim L (0 To 3)
Заполнение массива в программе производится поэлементно. Чаще всего для этого используется цикл с параметром, где в качестве параметра применяется индексная переменная. Возможно заполнение массива путем простого присвоения значения элементам:
Dim B (1 To 3) As Integer
B (1) = 2
B (2) = 18
B (3) = 6
Удобным определения одномерных массивов является функция Array, преобразующая список элементов, разделенных запятыми, в вектор из этих значений, и присваивающая их переменной типа Variant.
Dim A As Variant
A = Array (10, 20, 35, 70)
Иногда в процессе выполнения программы требуется изменять размер массива. В этом случае первоначально массив объявляют как динамический. Для этого при объявлении массива не указывают его размерность. Например,
Dim R () As Single
В программе следует вычислить необходимый размер массива и связать его с некоторой переменной, например, n; затем изменить размер динамического массива с оператора ReDim:
ReDim [Preserve] Имя (<номер последнего элемента>) [As <тип>]
ReDim [Preserve] Имя (<начальный индекс> To <конечный индекс>) [As <тип>]
Preserve – ключевое слово, используемое для сохранения данных в существующем массиве при изменении значения последней размерности.
begin
Range(1,20).Tabulate(x->sqrt(x)).Println(NewLine)
end.
Результат
(1,1)
(2,1.4142135623731)
(3,1.73205080756888)
(4,2)
(5,2.23606797749979)
(6,2.44948974278318)
(7,2.64575131106459)
(8,2.82842712474619)
(9,3)
(10,3.16227766016838)
(11,3.3166247903554)
(12,3.46410161513775)
(13,3.60555127546399)
(14,3.74165738677394)
(15,3.87298334620742)
(16,4)
(17,4.12310562561766)
(18,4.24264068711928)
(19,4.35889894354067)
(20,4.47213595499958)
Традиционное решение
var
i:integer;
begin
for i:=1 to 20 do Writeln(i:2,sqrt(i):16:12)
end.
Результат
1 1.000000000000
2 1.414213562373
3 1.732050807569
4 2.000000000000
5 2.236067977500
6 2.449489742783
7 2.645751311065
8 2.828427124746
9 3.000000000000
10 3.162277660168
11 3.316624790355
12 3.464101615138
13 3.605551275464
14 3.741657386774
15 3.872983346207
16 4.000000000000
17 4.123105625618
18 4.242640687119
19 4.358898943541
20 4.472135955000