Слайд 2Понятие массива
Массив – это набор элементов одинакового типа, имеющих общее имя. Доступ
к конкретному элементу массива осуществляется через указание в скобках после имени его индекса.
Массив характеризуется размером и размерностью.
Размер – это количество элементов в массиве, размерность – количество индексов, необходимых для указания местоположения элемента в массиве.
Таким образом, массив представляет собой совокупность однотипных индексированных переменных.
Слайд 3Типы массивов
Язык VBA поддерживает два типа массивов – статические и динамические.
Статическими
называют такие массивы, размер которых был указан непосредственно при их объявлении. В этом случае размер массива остается фиксированным на протяжении всего выполнения программы.
Динамические массивы имеют переменное количество элементов, т.е. динамические массивы могут увеличиваться или сокращаться, в зависимости от того, какое количество элементов требуется в данный момент.
Слайд 4Объявление массивов
Статические массивы.
Прежде чем использовать массив, нужно обязательно объявить его с
помощью оператора Dim и указать тип хранящихся в массиве значений. Все значения в массиве принадлежат к одному типу данных.
Синтаксис оператора объявления массива следующий:
Dim имяМассива(размер1, размер2, …) As типДанных
где указанные в скобках величины размер1, размер2 задают размеры массива – количество индексов и максимально допустимое значение для каждого конкретного индекса. При этом индексирование элементов массива по умолчанию начинается с нуля.
Dim имяМассива(нижняя граница To верхняя граница, …) As типДанных
При объявлении массива можно указать не только верхнюю границу индекса, но и его нижнюю границу, т. е. явно задать диапазон изменения конкретного индекса массива, причем нижняя граница может быть любым целым числом, не обязательно неотрицательным
Слайд 5Примеры объявления статических массивов
Dim A(9) As Integer
определяет одномерный массив с именем А
из 10 элементов, являющихся переменными целого типа
Dim B(4,9) As Variant
определяет двумерный массив 5×10 из 50 элементов, являющихся переменными типа Variant.
Dim B(1 To 3, 1 To 3) As Single
Dim Z(1 To 11) As Integer
Слайд 6В качестве стандартного значения нижней границы массива (индекса) может использоваться не только
ноль. Чтобы изменить это стандартное значение, нужно воспользоваться оператором
Option Base.
Если поместить в начало модуля оператор Option Base 1, то индексирование элементов массивов по умолчанию будет начинаться не с нуля, а с единицы.
Например, в следующем операторе объявляется одномерный массив Z, состоящий из 11 элементов.
Option Base 1
Dim Z(11) As Integer
Слайд 7Объявление массивов
Динамические массивы.
Синтаксис объявления и определения размеров динамического массива:
1. Объявляется массив
с использованием оператора Dim, но без указания размерности. Признаком массива являются скобки после его имени
Dim имяМассива() As типДанных
2. Перед использованием массива в программе описывается данный массив с указанием размерности при помощи оператора ReDim.
ReDim имяМассива(размер1, размер2, ...)
где указанные в скобках величины размер1, размер2 задают размеры массива – количество индексов и максимально допустимое значение для каждого конкретного индекса.
При этом индексирование элементов массива по умолчанию начинается с нуля, если не используется оператор Option Base 1.
Слайд 8Ввод элементов одномерного массива
Вводить элементы массива можно разными способами.
С помощью оператора
присваивания, если массив небольшого размера.
Option Base 1
Dim Z(4) As Integer
Z(1) = 2 : Z(2) = 7 : Z(3) = 3 : Z(4) = 9
В цикле, если элементы массива задаются формулой или используется генератор случайных чисел.
Пример заполнения статического массива А(12), элементы которого вычисляются по формуле.
Dim A(12) As Single, i As Integer
For i = 1 To 12
A(i) = i ^ 2
Next i
Пример заполнения динамического массива Z(), элементы которого задаются генератором случайных чисел.
Dim A(12) As Integer, i As Integer
For i = 1 To 12
A(i) = Int(RND*100-50)
Next i
Слайд 9
Заполнение массива при помощи функции InputBox()
Dim A(12) As Single, i As
Integer
For i = 1 To 12
A(i) = InputBox ("Введите " & Str(i) & " элемент массива",_ "Ввод данных")
Next I
Заполнение массива данными с рабочего листа
Dim A(8) As Single, i As Integer
For i = 1 To 8
A(i) = Cells(1, i).Value
Next I
Dim A(8) As Single, i As Integer
For i = 1 To 8
A(i) = Cells(i+3, 1).Value
Next I
Слайд 10Вывод одномерного массива
Вывод массива на рабочий лист
For i = 1 To
N
Cells(1, i).Value = Z(i)
Next i
Вывод массива в список ListBox
Dim A(8) As Single, i As Integer
'Ввод массива
For i = 1 To 8
A(i) = Cells(1, i).Value
Next i
ListBox1.List = A ' Вывод массива
Другой способ
For i = 1 To 8
A(i) = Cells(1, i).Value 'Ввод массива
ListBox1.AddItem A(i) 'Вывод массива
Next i
Слайд 12Типовые алгоритмы
Нахождение суммы, произведения, среднего значения
Нахождение суммы, произведения, среднего значения, количества при
выполнении условия
Поиск (максимального, минимального и т.д.)
Преобразование (сортировка, вставка, удаление и т.д.)
Слайд 13Типовые алгоритмы
Пример 1. Определить сумму, произведение, среднее значение в массиве A(8)
Слайд 14Типовые алгоритмы
Пример 2. Определить среднее значение положительных элементов в массиве Z(N)
Слайд 15Пример 3. Определить максимальное значение и его номер в массиве R(M)
Слайд 16Пример 4. Выполнить сортировку по убыванию в массиве Z(N)
Слайд 17Пример 4. Выполнить сортировку по убыванию в массиве Z(N)
Слайд 18Пример 5. Имеются итоги выполнения месячного задания по товарообороту двенадцатью магазинами фирмы:
Определить:
значение
и номер магазина с минимальным выполнением задания
Количество магазинов с выполнением задания ниже среднего
Слайд 19Пример 6. Выполнить преобразование в массиве Z(N), вычислить количество и выбрать только
нечетные элементы