- •Содержание
- •4. Программирование на vba…………………… ………………………...13
- •1. Цель и задачи курса
- •2. Общие рекомендации к выполнению и требования к оформлению контрольной работы
- •3. Темы заданий для выполнения контрольной работы
- •4. Программирование на vba for ms Excel
- •4.1. Создание программы
- •4.6. Типы данных в vba
- •4.7. Переменные в vba
- •4.8. Константы в vba
- •4.9. Операции и функции языка vba
- •4.14. Понятие алгоритма
- •4.15. Изображение алгоритма в виде блок-схемы
- •4.16. Ввод и вывод данных с использованием рабочего листа
- •4.17. Ввод и вывод данных с использованием встроенных функций
- •InputBox(сообщение [,заголовок[,значение]])
- •4.18. Условный оператор
- •4.19. Примеры программ
- •4.20. Операторы циклической структуры
- •4.20.1. Оператор цикла с предусловием
- •20.2. Оператор цикла с постусловием
- •4.20.3. Безусловный цикл
- •4.21. Решение задач с использованием циклов
- •4.22. Обработка массивов
- •4.22.1. Ввод-вывод элементов массива
- •4.22.2. Основные алгоритмы обработки массивов
- •4.23. Примеры программ
4.22. Обработка массивов
Массив – структурированный тип данных, состоящий из фиксированного числа элементов. Переменную, представляющую собой просто список данных, называют одномерным массивом или вектором. Для доступа к данным, хранящимся в одномерном массиве, указывают имя массива и порядковый номер (индекс) элемента.
Объявление одномерного массива в VBA имеет следующий синтаксис:
Dim имя (размерность) AS тип
имя - любое имя для массива, удовлетворяющее правилам VBA для имен переменных.
Размерность массива записывают так:
(нач.знач. To кон.знач) или (кон. значене)
нач.знач. и кон.знач - границы допустимых индексов массива.
нач.знач. - определяет нижний предел допустимых индексов.
кон.знач. - верхний предел.
Параметр кон.знач. является обязательным, часть нач.знач. To может отсутствовать. В этом случае элементы массива нумеруются с нуля.
Определение нач.знач. делает программный код более понятным, а также позволяет выявлять ошибки программирования. Кроме того, это дает возможность определения иного начального индекса, отличного от 0.
Размерность массива и тип его элементов определяют объем памяти, который необходим для хранения массива. Следовательно, размерность должна быть определена целыми положительными константными выражениями.
Тип - любой допустимый тип VBA. Если Тип не указан, то все элементы массива имеют тип Variant.
Dim A (1 To 10) As Integer, B (0 To 9) As Single, C (9)
Const N=20
Dim M(1 to N)
Для доступа к элементу массива необходимо указать имя массива, а затем в круглых скобках, значение индекса. Синтаксис обращения к элементу массива имеет следующий вид: имя (индекс). Например, A(1), В(0), C(8)
Индексом массива может быть любая целочисленная переменная или выражение, имеющее результатом целое число в диапазоне объявленных измерений массива.
Например,
Dim K As Integer
K=2, C(K)=A(K+1)+B(2*K)
Все манипуляции с массивами в осуществляются поэлементно. Организовывается цикл, в котором происходит последовательное обращение к 1-му, 2-му и т.д. элементам. При работе с массивами удобно хранить данные в ячейках рабочих листов Excel, а ввод и вывод элементов массива осуществлять при помощи свойства Cells.
4.22.1. Ввод-вывод элементов массива
Алгоритм ввода массива:
Рис. 34.
Фрагмент программы:
Sub inp()
Dim i As Integer,
Dim n As Integer
Dim X(1 To 10) As Single
n = InputBox("n=", ,10)
For i = 1 To n
X(i) = Cells(i, 1)
Next
End Sub
Алгоритм вывода массива
Рис. 35.
Фрагмент программы.
For i = 1 To n
Cells(i, 2) = X(i)
Next
4.22.2. Основные алгоритмы обработки массивов
Сумма элементов массива. |
. |
Рис. 36 Произведение элементов массива.
Рис. 37. |
S = 0 For i = 1 To n S = S + X(i) Next MsgBox "S=" & S
P = 1 For i = 1 To n P = P * X(i) Next MsgBox "P=" & P |
Поиск максимального элемента и его номера. |
|
Рис. 38. |
Max = X(1) Nom = 1 For i = 2 To n If X(i) > Max Then Max = X(i) Nom = i End If Next MsgBox "Max=" & Max & Chr(13) & "Nom=" & Nom |
Удаление m-го элемента из массива.
Рис. 39 |
m = InputBox("n=") For i = m To n - 1 X(i) = X(i + 1) Next For i = 1 To n - 1 Cells(i, 2) = X(i) Next |
Упорядочение элементов массива. Сортировка методом пузырька (рис. 40).
Sub sort()
Dim i As Integer, j As Integer, n As Integer
Dim Y(1 To 10) As Single
n = InputBox("n=", , 10)
For i = 1 To n
Y(i) = Cells(i, 1)
Next
For j = 1 To n - 1 For i = 1 To n - j If Y(i) > Y(i + 1) Then b = Y(i + 1) Y(i + 1) = Y(i) Y(i) = b End If Next i Next j For i = 1 To n Cells(i, 2) = Y(i) Next
|
Рис. 40. |
