- •Часть 3 Работа с массивами
- •Основные операции над одномерными массивами Лабораторная работа № 1
- •Общие сведения об одномерных массивах
- •Решение
- •Решение
- •Упражнения для самостоятельной работы к лабораторной работе № 1
- •Лабораторная работа № 2
- •Общие сведения о динамических массивах
- •Решение
- •Лабораторная работа № 3
- •Общие сведения о сортировке массивав
- •Решение
- •Решение
- •Упражнения для самостоятельной работы к лабораторным работам № 2, 3
- •Лабораторная работа № 4
- •Общие сведения о двумерных массивах
- •Решение
- •Упражнения для самостоятельной работы к лабораторной работе № 4
- •Литература Основная
- •Дополнительная
- •Встроенные диалоговые окна
Лабораторная работа № 2
Цель работы: Получить устойчивые навыки работы с одномерным динамическим массивом: декларация одномерного динамического массива, переопределение динамического массива, работа с динамическим массивом.
Общие сведения о динамических массивах
При работе с массивам мы не всегда заранее знаем размер массива, в таких случаях используются массивы, размер которых не задан первоначально, но их размер может изменяться в процессе выполнения программы. Такой массив называется динамическим.
Декларация динамического массива в VBA.
Dim Имя_Массива() As Тип
Переопределение массива в процессе выполнения программы. Для этого используется оператор Redim. Если переобозначение одного и того же массива происходит несколько раз то для сохранения данных используется оператор Preserve.
Redim Prserve Имя_Массива(n) [As Тип]
Обозначение в квадратных скобках может отсутствовать.
Задача 2.
Центрирование
массива. От
каждого из заданных m
чисел x1,
x2,…,xm
отнять их среднее
арифметическое:
;
,
i=1,2,…,m.
Решение
Этап 1. Математическая часть
Алгоритм записан на естественном языке
‘Подсчет количества элементов, ‘вводимого массива x()
‘Переопределение массивов x() и X1()
‘Ввод массива x() ‘Подсчет среднего арифметического
|
’Создание нового массива X1() ‘и вывод его
конец |
Этап 2. Ввод данных в таблицу Excel
В ячейки А1:A20 вводятся элементы массива a(i).
Этап 3. Определение переменных
Вводится: массив x() (исходный массив( Single)).
В
ыводятся
(результат): массив
X1()
(Отцентрированный
массив, (Single)),
k
(номер
максимального значения массива, Integer).
Промежуточные переменные: i – счетчик цикла с параметром (Integer), n – счетчик цикла с предусловием (Integer), m – количество элементов в массивах, считается в цикле с предусловием (Integer). Sr – среднее арифметическое элемен-тов массива (Single) (рис.4).
Этап 4. Написание процедуры
На рабочем листе Лист1 при помощи Элементов управления создать элемент Кнопка (СommandBatton1).
Переименовать Кнопку в режиме конструктора. Вызвать контекстное меню ПКМ Свойства закладку Alhpabetic Caption в Поле ввода ввести новое название кнопки Максимальное число и его номер.
Написать Процедуру-Событие для Кнопки «Центрирование массива»:
Private Sub CommandBatton1_Click()
'Описание переменных
Dim x() As Single
Dim X1() As Single
Dim sr As Single
Dim n As Integer
Dim m As Integer
Dim i As Integer
'Количество элементов вводимого массива x()
m = 0
n = 1
Do Until (IsNumeric(Cells(n, 1).Value) = False)
m = m + 1
n = n + 1
Loop
'Переопределение массивов x() и X1()
ReDim x(1 To m) As Single
ReDim X1(1 To m) As Single
'Ввод массива x()
'Подсчет среднего арифметического
sr = 0
For i = 1 To m
x(i) = Cells(i, 1).Value
sr = sr + x(i)
Next i
sr = sr / m
Range("c1").Value = "Среднее арифметическое равно -> " & sr
'Создание нового массива X1()
' и вывод его в столбец E
Range("E1:E100").Clear
For i = 1 To m
X1(i) = x(i) - sr
Cells(i, 5).Value = X1(i)
Next i
End Sub
Этап 5. Выполнение.
Перейти на рабочий лист (ViewMicrosoft Excel или Alt+F11). Выйти из режима Конструктора. В ячейках А1:А12 вводится массив x(). Нажать Кнопку «Центрирование массива». В диапазоне E1:E12 появится результат отцентрированный массив X1(). (Рис.4)
Этап 6. Переименование листа. Навести курсор на закладку Лист1, правой клавишей мыши (ПКМ) вызвать контекстное меню, выбрать пункт Переименовать, удалить старое название листа и с клавиатуры набрать новое Центрирование, нажать Enter.
