Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект лекций КИТ.pdf
Скачиваний:
52
Добавлен:
09.04.2015
Размер:
599.21 Кб
Скачать

ТЕМА 11

ЭЛЕМЕНТЫ ПРОГРАММИРОВАНИЯ VBA. ОСНОВНЫЕ ПОНЯТИЯ. МАКРОСЫ

Языки программирования. Макропрограммирование. Основы программирования на VBA (Visual Basic for Application). Макросы. Объекты,

свойства, методы

Смотреть МУ Макросы и основы программирования на VBA в

приложении MS OFFICE-EXCEL (мет. указ.).pdf

ТЕМА 12

ЭЛЕМЕНТЫ ПРОГРАММИРОВАНИЯ VBA. ПОЛЬЗОВАТЕЛЬСКИЕ ФУНКЦИИ

Пользовательские функции. Типы данных, выражения, операторы. Тестирование и отладка, документирование программного продукта

Смотреть МУ Макросы и основы программирования на VBA в

приложении MS OFFICE-EXCEL (мет. указ.).pdf

Цель работы: изучить типовые структуры алгоритмов и способы их реализации на языке Visual Basic for Application (VBA) на примерах.

Существует три типовые структуры алгоритмов – линейная,

разветвляющаяся, циклическая. Рассмотрим три задачи, которые необходимо решить с использованием интегрированной среды программирования VBA.

Задача 1. Необходимо вычислить медианы треугольника на основе трех сторон треугольника: a, b, c.

Задача линейной структуры (не содержит ветвлений и циклов). Составим схему алгоритма:

начало

Описание:

 

 

 

 

 

 

 

необходимо ввести значения трех сторон треугольника

 

 

 

 

ввод

 

a,b,c

 

 

 

 

 

 

 

 

 

вычисление медианы, проведенной к стороне a по

 

 

вычисление

ma

формуле:

 

 

 

 

 

 

 

 

0,5 умножить на корень из 2b2+2c2-a2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вычисление

медианы,

проведенной

к

стороне

a

по

вычисление

формуле:

 

 

 

 

 

 

mb

 

 

 

 

 

 

 

 

0,5 умножить на корень из 2a2+2c2-b2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вычисление

медианы,

проведенной

к

стороне

a

по

 

 

вычисление

формуле:

 

 

 

 

 

 

mc

 

 

 

 

 

 

0,5 умножить на корень из 2a2+2b2-c2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вывод

вывод результата вычислений в ячейку, в которой была

med

вызвана функция

 

 

 

 

 

 

 

 

 

 

 

 

конец

 

 

 

 

 

 

 

70

Для написания функции необходимо открыть среду VBA (в Excel клавиши Alt+F11 или Сервис/ Макрос/ Редактор Visual Basic), добавить в текущую книгу модуль (Insert/ Module) и ввести текст функции:

Function med(a, b, c) Dim ma As Single Dim mb As Single Dim mc As Single

ma = 0.5 * Sqr(2 * b * b + 2 * c * c - a * a) mb = 0.5 * Sqr(2 * a * a + 2 * c * c - b * b) mc = 0.5 * Sqr(2 * b * b + 2 * a * a - c * c)

med = "медиана к a " & ma & ", медиана к b " & mb & ", медиана к c " & mc End Function

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

=med(A1;B1;C1)

результат:

 

 

 

медиана к a 4,41588, медиана к b 3,24037, медиана к c

2

4

5

1,936492

Задача 2. Необходимо указать номер квадранта, в котором находится точка с введенными координатами x и y.

Задача разветвляющейся структуры.

Составим схему алгоритма:

начало

ввод x, y

x>0, нет y>0

да

“1

квадр”

x<0, нет y>0

да

“2

квадр”

Описание:

необходимо ввести значения двух координат точки

проверка значения x и y, если оба положительны – вывод результата: 1 квадрант

проверка значения x и y, если y положительный, а x отрицательный

вывод результата: 2 квадрант

71

проверка значения x и y, если оба отрицательны –

x<0, нет вывод результата: 3 квадрант y<0

да

“3

квадр”

x>0,

 

 

проверка значения x и y, если x положительный,

нет а y отрицательный

y<0

 

 

вывод результата: 4 квадрант

да

 

 

 

 

 

 

 

 

“4

 

 

 

квадр”

 

 

 

 

 

 

 

 

 

 

 

 

 

конец

 

 

 

Текст функции вводится в модуле (функции можно вводить в одном модуле или в разных модулях).

Function kv(x, y)

If x > 0 And y > 0 Then kv = "1 квадрант" If x < 0 And y > 0 Then kv = "2 квадрант" If x < 0 And y < 0 Then kv = "3 квадрант" If x > 0 And y < 0 Then kv = "4 квадрант" End Function

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

=kv(A1;B1)

результат:

1

2

1 квадрант

-3

4

2 квадрант

-5

-2

3 квадрант

2

-1

4 квадрант

Задача 3. Необходимо вычислить сумму натуральных чисел от начального до конечного значения.

Задача циклической структуры.

Составим схему алгоритма:

72

 

начало

 

Описание:

 

 

 

необходимо ввести два значения: первое натуральное

 

 

 

 

 

ввод

 

k, l

 

число и второе

 

 

 

 

задается начальное значение суммы

 

s=0

 

 

 

 

 

организовывается цикл для подсчета всех значений

 

 

 

 

 

 

 

 

 

I=k, l

 

 

между заданным диапазоном

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s=s+i

 

наращивание суммы на величину текущего значения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вывод

вывод результата вычислений в ячейку, в которой была

sum=s

вызвана функция

 

 

 

 

 

 

конец

 

Текст функции вводится в модуле (функции можно вводить в одном модуле или в разных модулях).

Function sum(k, l) Dim i As Integer Dim s As Single s = 0

For i = k To l s = s + i Next

sum = "сумма чисел -" & s End Function

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

=sum(A1;B1)

 

результат:

 

 

 

 

сумма чисел

5

 

10

-45

 

 

 

сумма чисел

1

 

3

-6

73