
- •Visual Basic for Applications (vba) - встроенный язык программирования приложений Microsoft Office, в частности, электронных таблиц Excel.
- •Vba является современным языком программирования, полностью оснащенным всеми необходимыми структурными операторами и типами данных.
- •1.3 Типы данных и переменные
- •1.4 Организация ввода-вывода
- •2.3 Оператор цикла с параметром (For…Next)
- •2.4 Циклы с предусловием и постусловием
- •3 Массивы
- •3) Динамический массив:
- •4 Процедуры и функции
- •5 Обработка строк
- •6 Форма и элементы управления
2.3 Оператор цикла с параметром (For…Next)
Оператор цикла For позволяет повторять группу операторов заданное число раз.
Синтаксис: For <счётчик_цикла> =<начало> To <конец> [Step <шаг>]
<тело цикла>
[Exit For]
. . .
Next [<счётчик_цикла>],
где <счётчик_цикла> — числовая переменная;
<начало> - начальное значение (выражение) переменной <счётчик_цикла>;
<конец> - заключительное значение (выражение) переменной <счётчик_цикла>;
<тело цикла> - это последовательность операторов, которая будет выполнена заданное число раз.
Порядок выполнения: переменной <счётчик_цикла> присваивается значение <начало> и проверяется условие: <начало> <конец>; если условие неверно, то <тело цикла> не выполняется и управление передается на оператор, следующий за Next. Если же условие выполняется, то выполняется <тело цикла>, затем значение <счётчик_цикла> изменяется на значение <шаг> (увеличится в случае положительного значения <шаг>, и уменьшается при отрицательном значении <шаг>). Данный процесс будет выполняться, пока значение <счётчик_цикла> не достигнет значения <конец> (если шаг положителен, цикл завершится, когда впервые выполнится условие: <счетчик_цикла> <конец>. Если шаг цикла отрицателен, условие его завершения: <счетчик_цикла> <конец> ). Досрочно завершить цикл For…Next можно и с помощью оператора Exit For. Такие операторы могут быть расположены в тех местах тела цикла, где требуется из него выйти, не дожидаясь выполнения условия завершения.
И
зображение
в блок-схемах:
Пример.
Вычислить n-ый
член последовательности, заданной
формулой
,
если
.
Public Sub prog3() Dim n As Byte Dim an As Integer,a1 As Integer, a2 As Integer n=CByte(InputBox("n ="))
a1 = 1: a2 = 1
For i = 3 To n
an = a1 + a2
a1 = a2: a2 = an
Next i MsgBox an End Sub |
Описание переменной типа Byte
Ввод значения переменной n (номера элемента последовательности) через окно ввода и преобразование введенного значения к типу Byte Присваивание начальных значений переменным а1 и а2 (двоеточием разделяются операторы, записанные на одной строке) Организация цикла For…Next, в котором счетчик i изменяется от 3 до n с шагом 1 Вычисление следующего члена последовательности как сумму двух предыдущих членов последовательности Изменение последнего и предпоследнего значений последовательности на данный момент Увеличение счетчика на 1 (конец тела цикла)
|
Р
исунок
8 - Блок-схема программы prog3
2.4 Циклы с предусловием и постусловием
Циклы данного вида используются, когда заранее неизвестно, сколько раз будет выполняться тело цикла.
Циклы с предусловием (Do While…Loop, While…Wend, Do Until…Loop) представлены в таблице 13, а операторы циклов с постусловием (Do…Loop While, Do…Loop Until) - в таблице 14.
Отличие циклов с предусловием от циклов с постусловием заключается в том, что тело цикла первых может не выполниться ни разу, в то время как тело цикла с постусловием всегда выполнится хотя бы один раз.
Таблица 13
Синтаксис |
Do While <условие> <тело цикла> [Exit Do] … Loop |
While <условие> <тело цикла> Wend
|
Do Unlil <условие> <тело цикла> [Exit Do] … Loop |
Порядок выполнения |
<Тело цикла> будет выполняться в том случае, когда <условие> имеет значение истина (TRUE) (цикл продолжается при истинном значении <условия>). Если <условие> ложно (FALSE), то выполняются операторы, стоящие за циклом. В первом случае есть возможность досрочного выхода из цикла (это реализовано через Exit Do) |
<Тело цикла> выполняется до тех пор, пока <условие> не примет значение истина (цикл продолжается при ложном значении <условия>). Есть возможность досрочного выхода из цикла (это реализовано через Exit Do) |
|
Изображение в блок-схемах |
|
|
Таблица 14
Синтаксис |
Do <тело цикла> [Exit Do] … Loop While <условие> |
Do <тело цикла> [Exit Do] … Loop Until <условие> |
Порядок выполнения |
<Тело цикла> будет выполняться в том случае, когда <условие> имеет значение истина (цикл продолжается при истинном значении <условия>). Если <условие> ложно, то выполняются операторы, стоящие за циклом. Предоставлена возможность досрочного выхода из цикла (это реализовано через Exit Do) |
<Тело цикла> выполняется до тех пор, пока <условие> не примет значение истина (цикл продолжается при ложном значении <условия>). Есть возможность досрочного выхода из цикла (это реализовано через Exit Do) |
Окончание таблицы 14
Изображение в блок-схемах |
|
|
Пример. Организовать ввод последовательности целых чисел, пока их сумма не превысит целого числа m. Вывести количество введенных чисел.
Public Sub prog4() Dim x As Integer, m As Integer Dim s As Integer Dim i As Integer m=InputBox("Введите число m") i = 1 s =InputBox("Введите 1 число") Do While s <= m
i = i + 1 x=InputBox("Введите " & i & "число") s = s + x
Loop MsgBox ("Количество чисел " & i) End Sub |
Ввод предельного числа Номер вводимого числа последовательности Ввод первого числа последовательности
Цикл с предусловием: тело цикла выполня- ется пока условие s<=m имеет значение Истина (TRUE) Тело цикла: увеличение номера на 1; ввод очередного (i-го) значения; добавление введенного значения к преды- дущему значению суммы Конец тела цикла Вывод значения переменной i
|
Рисунок 9. Лист 1 - Блок-схема программы prog4
Р
исунок
9. Лист 2 - Блок-схема программы prog4.
Продолжение