Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Макросы занятия.doc
Скачиваний:
11
Добавлен:
27.03.2015
Размер:
720.38 Кб
Скачать

Макросы занятие 3. Условия, ветвление решения.

Написание задач и функций на закрепление материала.

Оператор условия:

If <условие> then <действия если условие выполняется> [else <действия если условие не выполняется>] end If

является одним из наиболее популярных операторов для ветвления решения.

Квадратные скобки указывают необязательные инструкции.

Например, есть некая переменная х, имеющая числовое значение.

Требуется написать функцию, реализующую решение простейшей системы ограничений.

10, если х<0

F(x)= х2, если х>0 иx<11

1/x, если х>11

Результат может выглядеть так:

PublicFunctionфункция_ограничений(x!)

функция_ограничений=1/x

ifx<0thenфункция_ограничений=10

Ifx>0andx<11thenфункция_ограничений=x^2

End Function

Обратим ваше внимание на оформление «двойного» условия, которое трактуется как соблюдение первого ивторого одновременно с помощьюand.

Аналогично можно использовать условие выполнения одного из нескольких, тогда связующим оператором будет or(или).

F(x)= 1/x, если х<0 илиx>11

х2, в остальных случаях

PublicFunctionфункция_ограничений1(x!)

Ifx<0orx>11thenфункция_ограничений1=1/xelseфункция_ограничений1=x^2

EndFunction

Условный оператор Select Case. <переменная или объект>..[Case else]..End Select

Конструкция Select Case "принимает решение" на основе анализа значения одного выражения. При этом выражение указывается в строке Select Case. Является альтернативой оператору If. Выглядит компактнее и нагляднее при множестве анализируемых значений выражения :

Select Case Анализируемое_выражение

Case Значение№1 Группа операторов Case Значение№2 Группа операторов ... Case Значение№N Группа операторов Case Else Группа операторов

End Select

Конечно, анализируемое выражение должно возвращать значение типа, совместимого с типом значений в строка Case.

Пример:

В зависимости от числового значения переменной iTest, строковой переменной strResult присваиваются различные значения в виде текста.

Select Case iTest

Case 1 strResult = "iTest = 1" Case 2, 3, 4 strResult = "iTest = 2, 3 или 4" Case 5 To 9 strResult = "iTest находится в диапазоне от 5 до 9" Case iTest < 0 strResult = "iTest меньше 0" Case Is > 9 strResult = "iTest больше 9" Case Else strResult = "iTest равно 0"

End Select

Функции для практического использования.

Задача: написать функцию по расчету итогового долга при условии, что нарушение сроков возврата ведет к начислению пени по назначенным процентам.

Исходные данные: Долг, срок возврата, пеня % в день.

Выполнение.

Войти через меню “сервис-макросы-Редактор VBA” в редактор. Через меню VBAInsert” или русской редакции «Вставка» вставить “Module” (модуль) и в модуль вставить процедуру, как функцию. Подробнее начальные действия см. в методичке. VBA вставляет «заглушку» для дальнейших манипуляций программиста.

Public Function Пеня()

End Function

Подавляющее большинство функций имеют аргумент, но аргумент должен быть описан, т.е. должны быть объявлены не только имена переменных, но и тип данных.

PublicFunctionПеня(долг!, дата_возвратаasDate, пеня_день!)

End Function

Далее необходимо построить логику вычислений и реализовать в виде программного кода:

Пеня не может быть меньше долга и если срок возврата нарушен, то начисления процентов производятся на каждый день просрочки до текущего дня. Так может быть прочитан программный код на «человеческом» языке. Способ вызова прост. Достаточно обратиться к мастеру функций и в категории «Определенные пользователем» вызвать функцию пеня. В представленной функции используется оператор Date, возвращающий системную дату ПК.

Расчет проведен 24.04.03. Результат на рис.

Результат при тех же начальных условиях будет равен 16385.

Самостоятельно выполнить следующие задания.

  1. Подпрограмма - по координатам трех вершин некоторого треугольника найти его площадь и периметр.

  2. Функция - даны координаты ( как целые от 1 до 8 ) двух полей шахматной доски. Дать ответ о возможности перехода коня с одного поля на другое за один ход.

  3. Функция – к задаче определения прогрессивного налога из файла ex1.xls лист Фонд зп.