Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

УПП1КУРС / 1 семестр / инфа / лекции / Лекции VBA 3

.doc
Скачиваний:
408
Добавлен:
18.09.2019
Размер:
286.21 Кб
Скачать

Циклический алгоритм. Простой цикл.

Повторение предыдущего материала по теме "Ветвление"

Пример

Даны три числа. Большее из них вывести на экран.

Вариант 1

Вариант 2

Sub pp1()

Dim a As Integer, b As Integer, c As Integer

a = InputBox("a=")

b = InputBox("b=")

c = InputBox("c=")

If a > b Then

If a > c Then

MsgBox ("Наибольшее число a=" & a)

End If

Else

If b > c Then

MsgBox ("Наибольшее число b=" & b)

Else

MsgBox ("Наибольшее число c=" & c)

End If

End If

End Sub

If a> b and a> c then

MsgBox ("Наибольшее число a=" & a)

Else

If b > a and b > c then

MsgBox ("Наибольшее число b=" & b)

Else

MsgBox ("Наибольшее число c=" & c)

End IF

End IF

ЦИКЛ

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

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

Процессы вычислительной структуры можно разделить на две группы:

1) счетные циклы или циклы с заданным количеством повторений (простой цикл)

– количество повторений известно; Цикл повторяется, пока переменная (параметр) цикла принимает значения в заданном диапазоне с определенным шагом.

2) Циклы с неявно заданным числом повторений

- это такие циклы, число повторений которых заранее не известно. Выход из них происходит при достижении определенного условия, а на каком шаге это произойдет заранее сказать невозможно.

В зависимости от того, когда состоится проверка условия на прекращение многократного выполнения действий, различают два вида циклов:

a) с предусловием (цикл – пока)

Условие проверяется на входе. Затем цикл либо выполняется, либо происходит выход из цикла.

б) цикл с постусловием (цикл-до)

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

Основными элементами циклического алгоритма являются:

настройка цикла

тело цикла

Настройка цикла – это присваивание первоначальных значений переменным, участвующим в работе цикла.

Тело цикла – последовательность действий, выполняемых многократно.

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

настройка цикла должна предшествовать телу цикла и исполняться только один раз;

в теле цикла необходимо обновлять данные;

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

Циклы с явно заданным числом повторений

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

В Visual Basic для реализации простых циклов можно использовать операторы

For …Next или Do … Loop.

При организации простых циклов чаще используют оператор For … Next.

Оператор Do … Loop и его разновидности более удобен для реализации циклов с неявно заданным числом повторений

Оператор For …Next

Расчет количества шагов выполняется по формуле

где a,b – нижняя и верхняя границы изменения аргумента;

h – шаг изменения аргумента.

Пример 1.

, шаг 0,1.

Синтаксис оператора For:

For переменная = выражение1 To выражение2 [Step выражение3]

операторы

операторы

.........

Next [переменная]

Здесь:

переменная – параметр цикла.

выражение1 - начальное значение параметра цикла.

выражение2 - конечное значение параметра цикла.

выражение3 - шаг изменения параметра цикла (при шаге равном 1 его можно не задавать)

Переменная (параметр цикла) должна иметь числовой тип.

Пример записи:

For j = a+b To 2*s Step k*10

Если шаг не указан, он считается равным 1, то есть переменная на каждом выполнении цикла увеличивается на 1. Для уменьшения ее на 1 нужно явно указать Step -1.

Порядок работы оператора For:

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

2. Затем вычисляется выражение2 и сравнивается с параметром цикла.

Если значение параметра цикла больше (или меньше при отрицательном значении шага) выражения2, то оператор For завершает свою работу, так ничего и не сделав.

В противном случае выполняются операторы, стоящие между строками For и Next.

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

4. Полученное значение параметра цикла снова сравнивается с выражением2. Если условие выхода из цикла достигнуто, цикл работу прекращает. В противном случае действия повторяются, начиная с пункта 3).

Пример 2

Вывести ряд чисел 1; 4; 7; 10; 13; 16; 19 на рабочий лист.

Должно получиться

Option Explicit

Sub pp1()

Dim k As Integer, i As Integer

k = 1 'номер первой строки для вывода числа

For i = 1 To 19 Step 3

Sheets("Лист1").Cells(k, 1) = i

k = k + 1 'смена номера строки

Next i

End Sub

Пример 3

Какое значение I будет выведено на экран после выполнения программы?

Sub pp1()

Dim i As Integer

For i = 1 To 10

Next i

MsgBox (i)

End Sub

Ответ: 11, т.к. в конце 10 цикла параметр I принимает значение 11, затем на входе в цикл это значение параметра сравнивается со значением выражения 2 и после этого происходит выход из цикла.

Пример 4

Вывести 10 фамилий через InputBox на лист2 номер по порядку и фамилии

A

B

1

2

п/п

ФИО

3

начало

объявление данных

управление циклом

ввод ФИО через InputBox

вывод данных на лист

конец цикла

конец программы

Sub prog1()

Dim ФИО As String, i As Byte

For i = 1 To 10

ФИО = InputBox("Введите ФИО")

Sheets("Лист2").Cells(i + 2, 1) = i

Sheets("Лист2").Cells(i + 2, 2) = ФИО

Next i

End Sub

Пример 5

Рассчитать сумму целых чисел от 1 до 100

Sub pp1()

Dim Сумма As Integer, i As Integer

Сумма = 0

For i = 1 To 100

Сумма = Сумма + i

Next i

MsgBox ("Сумма=" & Сумма)

End Sub

Пример 6

Пример 7

Какое значение примет переменная S после выполнения фрагмента блок-схемы

Какое значение примет переменная Z после выполнения фрагмента блок-схемы

S=-4

Пример 8

Какое значение примет переменная i после выполнения фрагмента программы

i = 0

For a = 1 To 40 Step 0.25

i = i + 1

Next a

Ответ: i = 157

Пример 9

Какое значение примет переменная b после выполнения фрагмента программы

i = 0

For a = 1 To 19

i = i + 1

Next a

b = i / (a - 1)

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

a = 20

i=19

Ответ: b=1

Пример 10

у = а2  b + c  x; 1 x  5, hx = 0,25

Рассчитать сумму у, вывести все значения x,y и сумму на рабочий лист.

A

B

C

D

E

F

1

Вычисление у

2

a=

b=

c=

x=

y=

S=

3

объявление данных

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

ввод данных через InputBox

вывод данных на лист

управление циклом (начальное, конечное значения, шаг цикла)

расчет у

вывод x,y, на лист

формирование строки для вывода на следующем шаге цикла

расчет суммы

вывод суммы

конец программы

Option Explicit

Sub prog2()

Dim a, b, c, x, y, s, i

s = 0

i = 3

a = InputBox("a=")

b = InputBox("b=")

c = InputBox("c=")

Sheets("Лист1").Cells(3, 1) = a

Sheets("Лист1").Cells(3, 2) = b

Sheets("Лист1").Cells(3, 3) = c

For x = 1 To 5 Step 0.5

y = a * a * b + c * x

Sheets("Лист1").Cells(i, 4) = x

Sheets("Лист1").Cells(i, 5) = y

i = i + 1

s = s + y

Next x

Sheets("Лист1").Cells(i, 6) = s

End Sub

9

Соседние файлы в папке лекции