Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций КИТ 1 курс ГЭФ.doc
Скачиваний:
311
Добавлен:
22.02.2016
Размер:
3.02 Mб
Скачать
  1. Основы программирования на языке Visual Basic for Applications (vba). Операторы организации циклической структуры программы.

Оператор цикла с параметром (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

Циклы с предусловием и постусловием

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

Циклы с предусловием (DoWhile…Loop,While…Wend,DoUntil…Loop) представлены в таблице 13, а операторы циклов с постусловием (Do…LoopWhile,Do…LoopUntil) - в таблице 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).

Изображение в блок-схемах

Пример: организовать ввод последовательности целых чисел, пока их сумма не превысит целого числа 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 - Блок-схема программы prog4