Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 9. П.9.2. Прог. на VBA.docx
Скачиваний:
24
Добавлен:
09.02.2015
Размер:
4.63 Mб
Скачать

9.2. Программирование на vba

9.2.1. Компьютер как исполнитель алгоритмов. Программа как изображение алгоритма в терминах команд, управляющих работой компьютера

Для решения задачи с помощью компьютера, сначала разрабатывают алгоритм ее решения, отлаживают его, а потом, уже отлаженный алгоритм изображают в терминах команд, понятных ЭВМ. В качестве примера приведем алгоритм ввода-вывода двухмерного массива, где слева приведен алгоритм, а справа процедура, реализующая данный алгоритм на языке VBA, понятный ЭВМ.

Известно, что ЭВМ работает с двоичным кодом (в виде набора единиц и нулей), а команды на VBA в диалоговом окне набираются в виде команд (операторов) и символов на данном языке. Возникает необходимость преобразования языка высокого уровня (VBA) на язык, понятный ЭВМ – машинный код. Эту операцию производит транслятор. Исходный модуль преобразуется вобъектный модуль. А исполняемая эту операцию программа называетсятранслятором.

Рис. 9.25. Ввод-вывод двухмерного массива

9.2.2. Программирование линейных алгоритмов

Необходимо сложить два целых числа: a=1, b=2.

Алгоритм решения задачи (рис.9.26.).

Пуск

a=1, b=2, c

c=a+b

c

останов

Рис. 9.26. Алгоритм сложения двух целых чисел

Знак операции сложения (+) используется для выполнения операции простого сложения. Оба операнда должны быть численными выражениями или строками, которые VBA может преобразовать в число.

Текст процедуры показан на (рис.9.27).

Sub Slogenie()

Dim a, b, c As Integer

a = 5

b = 3

c = a + b

MsgBox c

End Sub

Рис. 2.27. Текс процедуры сложения двух целых чисел

Sub Slogenie () – Начало работы и название процедуры сложения двух целых чисел

Dim – оператор, объявляет переменные a, b, c

As Integer - тип данных, «целое число»

a=5, b=3 – присваивание значений переменным a и b

c = a+b - операция сложения, результат – c

MsgBox – вывод c на диалоговом окне

End Sub - окончание вычисления заданной процедуры

Остальные арифметические операции выполняются аналогично.

9.2.3. Программирование циклических алгоритмов

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

Процесс выполнения всех операторов, заключенных в структуру цикла, один раз называется итерацией (iteration) цикла. Некоторые структуры цикла организуются так, что они всегда выполняются заданное количество раз. Структуры цикла, всегда выполняющиеся заданное количество раз, называются циклами с фиксированным числом итераций (fixed iteration). Другие типы структур цикла повторяются переменное число раз в зависимости от некоторого набора условий. Поскольку количество раз повторений этих гибких структур цикла является неопределенным, такие циклы называются неопределенными циклами (indefinite loops).

Существует два основных способа создания неопределенного цикла. Можно построить цикл так, что VBA будет тестировать некоторое условие (детерминант цикла) перед выполнением цикла: если условие для повторения цикла не равно True, VBA пропускает все операторы в цикле. Можно также построить цикл таким образом, что VBA будет тестировать условие детерминанта цикла после выполнения операторов в цикле.

Для цикла, в котором детерминант проверяется перед выполнением операторов внутри цикла, VBA определяет следующую последовательность действий:

1. В верхней части цикла тестируется условие детерминанта.

2. Если условия для выполнения цикла удовлетворяются, выполняются операторы внутри цикла.

3. После выполнения последнего оператора внутри цикла VBA возвращается к началу цикла и снова оценивает условие детерминанта цикла.

4. Если условия для выполнения цикла все еще удовлетворяются, VBA повторяет операторы внутри цикла и снова возвращается к началу цикла тестирования детерминанта.

5. Как только условия для выполнения цикла перестанут удовлетворяться, VBA останавливает выполнение цикла и начинает выполнение операторов после цикла.

Когда VBA тестирует выполнение детерминанта первый раз, VBA не выполняет операторы внутри цикла ни разу, при этом тело цикла пропускается (не выполняется).

Тело цикла – это блок операторов VBA, находящихся между началом и концом цикла.

Для цикла, в котором детерминант проверяется после выполнения операторов в теле цикла, VBA определяет следующую последовательность действий:

1. Выполняются все операторы в теле цикла.

2. При достижении конца тела цикла, VBA оценивает условие детерминанта цикла.

3. Если условия для выполнения цикла удовлетворяются, VBA возвращается к началу цикла и повторяет инструкции в теле цикла.

4. В конце цикла VBA снова тестирует условие детерминанта цикла.

5. Как только условия для выполнения цикла больше не удовлетворяются, VBA прекращает выполнение цикла и начинает выполнение операторов после цикла.

Использование цикла For ….Next

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