Лабораторная работа № 14.
Условные алгоритмы

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

6 часов

Цель работы

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

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

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

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

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

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

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

Пример 1.
Написать программу вычисления функции пользователя. 
Предусмотреть сбойную ситуацию (при y = 0) и в этом случае выдать сообщение об ошибке.

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

В среде VBA необходимо создать модуль (Insert - Module), в который записать программный код:

Function z (x, y)
If y = 0 Then
z = "Ошибка! На ноль делить нельзя!"
ElseIf x  >  0 And  y  >  1 Then
z  =  x  +  y
ElseIf x  < =  1  And  y  <>  0  Then
z =  x  /  y
End If
End Function

Вызвать мастер функций. Выбрать категорию "Определенные пользователем" и выбрать функцию z. Указать ячейки, в которых находятся исходные данные x и y.

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

Пример 2. Написать программу вычисляющую значение Z

Программный код
Sub Условия()
Dim x, y, Z As Double
x = Range("A2").Value
y = Range("B2").Value
If x > 0.1 And y > 0.1 Then
Z = (x - y) ^ x
    ElseIf x < 0.1 And y < 0.1 Then
    Z = Sin(x)
    ElseIf x = 0.1 And y = 0 Then
        If y = 0 Then
        MsgBox "Ошибка! Деление на ноль!"
        Else: Z = (x * x) / y
        End If
End If
Cells(2, 4).Value = Z
End Sub
   
Рассмотрим результат работы программы при разных значениях x и y (рис. 3, 4, 5).
Рисунок 3. Результат вычисления функции y= sin(x) при x<0.1 и y<0.1

Рисунок 4. Результат вычисления функции y= (x - y)x при x>0.1 и y>0.1
 
Рисунок 5. Результат вычисления функции y=x2/y при x=0.1 и y=0

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

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

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

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

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

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

  1. Какая конструкция у оператора повтора?
  2. Какие операторы разветвления Вы знаете?
  3. Чем заканчивается оператор IF, если в ветке «да» несколько операторов?
  4. Как выглядит полная форма оператора IF?
  5. Как выглядит оператор IF, если в ветке «нет» отсутствуют операторы?