Лабораторная работа № 13.
Линейные алгоритмы

Время выполнения

4 часа

Цель работы

Научиться использовать язык программирования Visual Basic for Applications (VBA) для разработки модулей в Excel на основе линейных алгоритмов.

Задачи лабораторной работы

После выполнения данной работы студент должен знать и уметь:
  • знать все операторы, используемые в программах;
  • уметь применять любые из изученных операторов для написания своих модулей;
  • уметь объяснить написанную программу.

Перечень обеспечивающих средств

Для обеспечения выполнения работы необходимо иметь компьютер со следующим математическим обеспечением: операционная система Windows XP, электронные таблицы Excel с приложением в виде языка Visual Basic for Applications.

Общие теоретические сведения

VBA – это язык объектно-ориентированного программирования.
Основными парадигмами являются объект, свойство, метод, событие, класс и семейство объектов.
Объект – это инкапсуляция данных вместе с кодом, предназначенным для их обработки.
Семейство – объект, содержащий несколько других объектов того же типа:
Worksheets (“Лист 1”) – рабочий лист с имени Лист1, 
Worksheets (1) – первый лист рабочей книги.
Классы – это проект, на основе которого будет создан объект, т.е. класс определяет имя объекта, его свойства и действия, над ним выполняемые. А каждый объект, свою очередь, является экземпляром класса. 
Методы – это действия, выполняемые над объектом.
Объект.метод – синтаксис метода

Пример.
Application.Quit – закрыть объект Application.
Worksheets (“Лист1”).Chartobjects.Delete – удалит все диаграммы с листа “Лист1”.
Свойства – это атрибут объекта, определяющий его характеристики: размер, цвет, положение на экране или состояние (доступность, видимость).
Для изменения характеристик меняют его свойства:
Объект.Свойство=Значение свойства

Пример.
Worksheets.Visible = False 
Есть свойства, возвращающие объект:
ActiveCell возвращает активную ячейку активного листа активной рабочей книги.
ActiveWindow – активное окно. 
Свойства ActiveCell, ActiveWindow. ActiveCell и Application. ActiveWindow. ActiveCell возвращают одну и ту же активную ячейку. 
События – это действия, распознаваемые объектом.
Суть программирования на VBA и заключается в том, чтобы на событие получить отклик.

Пример 1. Написать программу, которая вычисляет периметр треугольника.
Запись программы в виде блок-схемы (рис. 1) и визуальное представление формы для ввода данных (рис. 2) и результата (рис. 3):
Рисунок 1. Блок-схема решения задачи

 Рисунок 2. Ввод исходных данных в процессе выполнения программы

Рисунок 3. Вывод результата в процессе выполнения программы

Программный код
Option Explicit
Sub ПериметрТреугольника()
Dim ВтораяСторона, ТретьяСторона, Периметр As Single
ВтораяСторона = 3.5
ТретьяСторона = InputBox("Введите значение третьей стороны треугольника", "Третья сторона")
Периметр = Cells(1, 4) + ВтораяСторона + ТретьяСторона
MsgBox "Периметр треугольника  =  " &  Периметр
End Sub

Пример 2. Вычислите значение квадратного корня из суммы трех переменных.
Запись программы в виде блок-схемы (рис. 4) и визуальное представление формы для ввода данных (рис. 5) и результата (рис. 6):
 Рисунок 4. Блок-схема решения задачи
а)
 
б)
 
в)
Рисунок 5. Ввод исходных данных в процессе выполнения программы 

Рисунок 6. Вывод результата в процессе выполнения программы

Программный код
Option Explicit
Sub КореньКвадратныйИзСуммыТрехПеременных()
Dim ПерваяПеременная, ВтораяПеременная, ТретьяПеременная, Сумма As Single
Dim Корень As Double
ПерваяПеременная = InputBox("Введите значение первой переменной", "Первая Переменная")
ВтораяПеременная = InputBox("Введите значение второй переменной", "Вторая Переменная")
ТретьяПеременная = InputBox("Введите значение третьей переменной", "Третья Переменная")
Сумма = ТретьяПеременная + ВтораяПеременная + ПерваяПеременная
Корень = Sqr(Сумма)
MsgBox "Корень из суммы трех переменных  =  " & Корень
End Sub

Пример 3. Вычислить Y, задав значения переменным:

Программный код
Sub Main()
Dim x, b, a, res As Single
x = -3
b = 2
a = 0,5
res = (Sqr(5 * x ^ 4 + 2 * Sin(b) ^ 2)) / Cos(Abs(a ^ 3 - 3 * Tan(b)))
MsgBox "res=" & CStr(res)
End Sub
Private Sub CommandButton1_Click()
Dim x, b, a, res As Single
x = Cells(3, 1)
b = Cells(3, 2)
a = Cells(3, 3)
res = (Sqr(5 * x ^ 4 + 2 * Sin(b) ^ 2)) / Cos(Abs(a ^ 3 - 3 * Tan(b)))
Cells(5, 2) = res
End Sub

Визуальное представление решения задачи представлено на рис. 7.
Рисунок 7. Визуальное представление решения задачи

Пример 4. Вычислить f, задав значения переменным:

Программный код
Sub Main()
Dim x, y, t, res As Single
x = -3
y = 2
t = 0.5
res = (x / (4.8 * x ^ 3 - y) ^ 3) + 1 / 4 * (t - 3 / x)
MsgBox "res=" & CStr(res)
End Sub
Private Sub CommandButton2_Click()
Dim x, y, t, res As Single
x = Cells(3, 9)
y = Cells(3, 10)
t = Cells(3, 11)
res = (x / (4.8 * x ^ 3 - y) ^ 3) + 1 / 4 * (t - 3 / x)
Cells(5, 10) = res
End Sub

Визуальное представление решения задачи представлено на рис. 8.
 Рисунок 8. Визуальное представление решения задачи

Видеоурок по выполнению заданий лабораторной работы

Варианты заданий

Технология выполнения работы
  1. Разработать алгоритм для написания программы в виде блок-схемы.
  2. Написать программу.
  3. Протестировать ее с разными исходными данными.

Содержание отчета

  1. Цель работы, условие задачи
  2. Алгоритм в виде блок-схемы.
  3. Исходный текст программы.
  4. Вводимые данные и результаты.
  5. Фрагменты экрана с диалоговыми окнами Excel.
  6. В программе значение одной из переменных должно быть записано в ячейке электронной таблицы.
  7. Значение другой переменной задается в программе или вводится с помощью окна-диалога.
  8. Все типы переменных и констант, которые используются в программе, должны быть объявлены и отражать смысловое значение переменных или констант.
  9. Результат работы программы должен иметь наглядный вид.
  10. Для запуска макроса создать кнопку с соответствующей надписью.

Вопросы для защиты работы

  1. Какие встроенные типы данных вы знаете?
  2. Как описываются переменные?
  3. Как объявляют константы?
  4. Какие операции языка VBA вы знаете?
  5. Какие операторы языка VBA вы знаете?
  6. Перечислите операторы управления
  7. Укажите операторы, используемые для ввода данных с рабочего листа.
  8. Как заменить Arcsin в VBA?
  9. Укажите формулу, которая заменит Arcctg в VBA.