8994
.pdfсообщение.
9.Дан массив из N вещественных чисел. Написать программу, в
которой решается задача: если очередной элемент массива четный, то прибавить к нему первый, если нечетный - прибавить последний. Первый и последний элементы не изменять.
10.Даны два одномерных массива одинаковой размерности.
Написать программу получения третьего массива такой же размерности,
каждый элемент которого равен сумме соответствующих элементов
данных массивов.
11.Дан массив из N вещественных чисел. Написать программу,
которая позволяет найти количество положительных и отрицательных
элементов в массиве и номер последнего отрицательного элемента.
12.Дан массив А из 10 целых чисел. Написать программу подсчета суммы элементов, расположенных между максимальным и минимальным элементами.
13.Написать программу замены вещественных чисел массива А,
состоящего из десяти элементов, следующим образом: числа, большие
единицы, уменьшить вдвое, а числа, меньшие единицы, увеличить вдвое.
14.Дан массив из N вещественных чисел. Написать программу замены всех элементов массива квадратами, если есть хотя бы один отрицательный элемент в массиве, иначе ничего не менять.
15.Дан массив из N вещественных чисел. Написать программу вычисления произведения и количества положительных элементов массива.
16.Дан массив из N вещественных чисел. Написать программу вычисления произведения отрицательных и положительных элементов массива.
17.Дан массив из N вещественных чисел. Написать программу определения числа отрицательных, положительных и нулевых элементов массива.
71
18. Дан массив из N вещественных чисел. Написать программу решения следующей задачи: если первый элемент массива положительный,
то каждый второй элемент массива заменить числом 55, иначе выдать сообщение: «все без перемен».
19.Дан массив из N вещественных чисел. Написать программу вычисления сколько раз число 11 встречается среди элементов массива, в
противном случае вывести сообщение: «таких элементов в массиве нет».
20.Дан массив из N вещественных чисел. Написать программу вычисления количества всех элементов, значения которых меньше среднего значения всех элементов массива.
Лабораторная работа 8. Двумерные массивы
Цель: овладеть навыками программирования на языке VBA с
использованием двумерных массивов
Теоретические сведения
Объявление двумерного массива фиксированного размера возможно аналогично объявлению одномерно, но при этом добавляются размерности дополнительных измерений через запятую.
Пример объявления двумерного массива:
Dim А (3, 3) As Integer
Dim А(1 То 5, 1 То 5) As Integer
Dim А(5, 1 То 5) As Integer
Два последних примера иллюстрирую задание нижней границы в двумерном массиве.
Ввод/вывод массивов
Ввод/вывод массива осуществляется поэлементно, а для этого нужно использовать два уровня вложения циклов (по строкам и столбцам).
Пример ввода элементов массива с клавиатуры в ячейки таблицы
Sub matrix()
Dim A(3, 3) As Double
Dim i As Byte
72
Dim j As Byte
Dim Index1 As Integer
Dim Index2 As Integer
For i = 1 To 3
A(1, i) = InputBox("Введите элементы первого столбца")
Worksheets("лист1").Cells(i, 1) = A(1, i)
Next
For i = 1 To 3
A(2, i) = InputBox("Введите элементы второго столбца")
Worksheets("лист1").Cells(i, 2) = A(2, i)
Next
For i = 1 To 3
A(3, i) = InputBox("Введите элементы третьего столбца") Worksheets("лист1").Cells(i, 3) = A(3, i)
Next
End Sub
Функции для работы с массивами
Для работы с массивами можно использовать ряд функций такие как:
Array(), LBound(), UBound(), Join(), Split().
Функция Array() автоматически создает массив типа Variant и нужного размера и заполняет его переданными значениями.
Пример:
Sub Пример_функции()
Dim a() As Variant
‘ввод элементов массива
a = Array(11, 25, 33, 35.62, 55)
‘вывод в диалоговом окне построчно элементов массива
MsgBox a(0) & vbNewLine & a(1) & vbNewLine _
& a(2) & vbNewLine & a(3) & vbNewLine & a(4)
73
End Sub
Функции LBound() и UBound() информируют о нижней или верхней границе массива соответственно, т.е. возвращают номер минимального или максимального элемента массива.
Join() ‒ объединяет в одну строковую переменную строки из массива, где в качестве разделителя по умолчанию используется пробел, но при необходимости этот символ можно заменить.
Split() ‒ выполняет обратное действие, а именно разъединяет строку символов на массив строк.
Пример:
Sub Пример_функции()
'инициализация переменных типа Variant
Dim ar, tr
‘ввод элементов масса
ar = Array("Первый элемент", "Второй элемент", "Третий элемент", "Четвертый элемент", "Последний элемент")
'отображение первого элемента массива
MsgBox ar(LBound(ar))
'отображение последнего элемента массива
MsgBox ar(UBound(ar))
'отображение элементов массива с разделителем "‒"
MsgBox Join(ar, "-")
'разбиение указанного текста массива
tr = Split("Первый элемент-Второй элемент-Третий элемент-
Четвертый элемент-Последний элемент", "-")
отображение третьего по порядку элемента массива
MsgBox tr(2)
End Sub
Пример использования двумерного массива
74
Дана двумерная матрица ar(3,3). Определить количество отрицательных и
положительных элементов массива.
Sub massiv()
Dim ar(3, 3) As Integer
p = 0
n = 0
‘ввод элементов массива
For i = 0 To 2
For j = 0 To 2
ar(i, j) = InputBox("Введите элемент массива")
Worksheets("Лист1").Cells(i + 1, j + 1) = ar(i, j)
Next
Next
‘анализ элементов массива
For i = 0 To 2
For j = 0 To 2
If ar(i, j) > 0 Then p = p + 1
Else
If ar(i, j) < 0 Then n = n + 1
End If
End If
Next
Next
‘вывод в ячейки таблицы соответствующей информации
Worksheets("Лист1").Cells(1, 5) = "Количество отрицательных
элементов ="
Worksheets(""Лист11").Cells(1, 9) = n
75
Worksheets(""Лист1").Cells(2, 5) = " Количество положительных
элементов ="
Worksheets(""Лист11").Cells(2, 9) = p
End Sub
В результате работы этой программы:
в область А1:С3 будут введены элементы массива;
в ячейке Е1 будет введена фраза «Количество отрицательных элементов =»;
в ячейку Е2 будет введена фраза «Количество положительных элементов =»;
в ячейке I1 будет отображаться число отрицательных элементов;
в ячейку I2 будет введена число положительных элементов.э
Практические задания
Написать программу на языке VBA в соответствии с вариантом задания.
1.Составить программу преобразования матрицы А(5,5), разделив каждый элемент матрицы на её минимальный элемент.
2.Составить программу, меняющую местами k-ю строку и j-й столбец квадратной матрицы А(4,4).
3.Составить программу вычисления элементов матрицы А по следующему правилу = 3 × / , где ‒ максимальный элемент исходной матрицы В размера 4 4.
4.Составить программу вычисления номера столбца матрицы размера
4 4, состоящей из нулей и единиц, содержащего максимальное количество
единиц.
5.Составить программу вычисления количества элементов каждой строки матрицы А размера 5 5, удовлетворяющей условию 0<aij<5. Результат вычислений записать в одномерный массив.
6.Составить программу записи элементов массива А размера 4 4 в
одномерный массив в порядке следования столбцов.
76
7.Составить программу вычисления количества четных элементов в каждой строке матрицы А размера 5 5. Результат вычислений записать в одномерный массив.
8.Составить программу, меняющую местами максимальный и минимальный элемент матрицы А размера 4 4.
9.Составить программу вычисления одномерного массива, каждый элемент которого равен минимальному элементу соответствующей строки
матрицы А размера 5 5.
10. Составить программу вычисления номера строки матрицы А размера
4 4, имеющий максимальную сумму элементов.
11. Составить программу вычисления сумм элементов матрицы А размера
5 5, лежащих ниже, выше и на главной диагонали. Результат вычислений записать в одномерный массив.
12.Составить программу формирования одномерного массива из количества отрицательных элементов каждого столбца матрицы А размера 5 5.
13.Составить программу, заменяющую отрицательные элементы матрицы А размера 4 4 их абсолютными значениями.
14.Составить программу формирования одномерного массива, каждый элемент которого равен квадрату максимального элемента, соответствующей строки матрицы А размера 4 4.
15.Составить программу определения суммы элементов, стоящих на главной и побочной диагоналях двумерной матрицы А размера 4 4.
16.Составить программу, формирующую одномерный массив из сумм квадратов элементов соответствующих строк матрицы А размера 4 4.
17.Составить программу, формирующую одномерный массив из модулей минимальных элементов соответствующих столбцов матрицы А размера 4 4.
18.Составить программу, формирующую одномерный массив из разностей максимального и минимального элементов каждой строки матрицы
Аразмера 5 5.
77
19.Составить программу, формирующую одномерный массив из кубов нечетных элементов соответствующих строк матрицы А размера 5 5.
20.Составить программу, формирующую одномерный массив, каждый элемент которого равен сумме четных положительных элементов соответствующего столбца двумерной матрицы А размера 5 5.
Лабораторные работы 9. Пользовательские формы Цель работы: отработка навыков построения пользовательских форм и
использование элементов управления.
Теоретические сведения
Объектно-ориентированное программирование на VBA, в частности, дает возможность разрабатывать графический интерфейс создаваемых приложений и это позволяют элементы управления. Приложение, написанное на VBA,
представляет собой совокупность объектов.
Объект – некая сущность, которая объединяет в единое целое данные и программный код. VBA располагает множеством встроенных объектов ‒ это рабочая книга, лист, ячейка, диапазон ячеек, пользовательская форма, кнопка и элементы управления тоже являются объектами. Их можно вставлять на листы рабочей книги или в пользовательские формы. Пользовательская форма ‒ это диалоговое окно, являющееся частью интерфейса приложения.
Обозначение встроенных объектов в дополнение к перечисленным выше:
приложение – Application; пользовательская форма – UserForm, кнопка –
CommandButton и т.д..
Любой объект обладает свойствами, методами и может откликаться на
события.
Свойство объект – это атрибут объекта с именем, которое задает некоторые его характеристики: имя, тип, значение, цвет, размер, положение на экране и др.
Для того чтобы задать или изменить характеристики объекта, надо просто изменить значение его свойства, т.е. присвоить ему определенные значения.
Синтаксис установки значения свойства:
78
Объект.Свойство = ЗначениеСвойства
где Объект – имя настраиваемого объекта;
Свойство – характеристика, которую нужно изменить;
Значение – новая установка свойства.
Примеры задания свойств объектам:
Range("А5").Value = 100 – при этом ячейка А5 будет содержать значение
100. Свойство Value ‒ позволяет задать значение.
Range("А4").Font.Size = 12 – это означает, что ячейка А4 будет содержать информацию размером шрифта 14 пунктов. Свойство Font.Size ‒
позволяет задать размера шрифта.
Range("А1:А10").Text = "Дисциплина Информационные технологии"
– в области А1:А10 будет размещена текстовая информации Дисциплина
Информационные технологии. Свойство Text позволяет ввести текст.
Form1.Caption = “Щелчок на форме уменьшает её размер” – в
заголовке формы появится название «Щелчок на форме уменьшает её размер».
Свойство Caption ‒ изменяет заголовок формы.
Особое значение среди всех свойств объектов имеют логические свойства
(принимают значения True или False). Логические свойства объектов выполняют роль переключателей: если свойство принимает значение True ‒
функция объекта включена, а если False ‒ функция объекта выключена.
Например, логическое свойство Visible ‒ отвечает за то, является объект видим или нет.
Метод это некоторое действия, которые можно выполнять над данным объектом или метод это команда, которую выполняет объект. В результате его действия что-нибудь изменяется в объекте (цвет, место расположения и т.д.).
Синтаксис
Объект.Метод [Параметр[…]]
где Метод – команда, которая используется для изменения объекта;
Параметр – аргумент, используемый методом.
79
Примеры: методов, которые можно применитять к объектам:
Range("А1:В5").Select – выбрать диапазон ячеек (А1:В5);
Range("А1:В5").Clear – очистить диапазон ячеек (А1:В5);
UserForm1.Hide – скрыть форму под номером 1;
UserForm2.Show – показать форму под номером 2;
Application.Quit – выйти из приложения.
Событие – это характеристика класса объекта, которая описывает внешнее воздействие, на которое реагирует объект данного класса в процессе работы приложения. Это может быть нажатие клавиши или щелчок мыши для которых создается программный код реакции объекта на событие.
Программирования на VBA ‒ это определение для каждого объекта набора стандартных событий и отклика на него. Например: кнопка (объект)
CommandButton, а стандартное событие для неё ‒ щелчок мышью Click.
Когда выполняется какое-либо действие (например, щелчок мышью), то далее происходит отклик на это действие (выполняется программный код процедуры), т.е. действие – это событие, а отклик на него – процедура.
Форма ‒ это основной объект VBA. На которой размещаются различные объекты (элементы управления). Свойства формы: Name (имя пользовательской формы), Caption (текст в строке заголовка формы),
Appearance (вид формы), BorderStyle (тип границы) и др. Методы формы:
Show (отображает форму на экране), Hide (закрывает форму), November –
(местоположение и размер формы), PrintForm (печать изображения формы),
Cls (очищает форму) и др.. События формы: Click, DvlClick (щелчок и двойной щелчок), MouseDown, MouseUp (нажатие и отпускание кнопки мыши), KeyDown, KeyUp (нажатие и отпускание клавиши).
Создание формы
Для создания формы нужно перейти в редактор VBA (Разработчик –
Visual Basic). Выполнить команду меню Insert UserForm. На экране появится пустая форма. Для активной формы откроется панель Properties
80