Лабораторные по VBA / Лабораторная работа №4
.docxЛабораторная работа №4.
Реализация циклических алгоритмов
Цель : Важным элементом программы является оператор цикла. Он используется для выполнения в программе повторяющихся действий, целью работы является приобретение навыков написания программ на VBA с использованием циклических алгоритмов.
Цикл с использованием счетчика.
Цикл типа For - цикл с использованием счетчика. Он выполняет указанную последовательность команд заданное счетчиком число раз.
Синтаксис оператора цикла:
For «счетчик» = «начальное значение» То «конечное значение» [Step «шаг»]
« блок оператор»
Next [«счетчик»]
Шаг может быть как положительным, так и отрицательным.
При указании цикла For определяется переменная цикла, которая служит «счетчиком», а также ее «начальное значение» и «конечное значение». В качестве дополнительного параметра цикла можно указать приращение — величину («шаг»), которая прибавляется к счетчику или вычитается из него после завершения очередного шага цикла. Перед выполнением первого шага «счетчик» устанавливается в начальное состояние. После выполнения очередного шага к переменной прибавляется величина, указанная после ключевого слова Step (если она не указана, прибавляется единица). Затем «счетчик» сравнивается с конечным значением переменной цикла. Если он больше, чем «конечное значение», выполнение цикла прекращается и программа переходит к следующему за ключевым словом Next оператору.
Пример1
Написать программу вычисления суммы конечного числа элементов ряда, если:
Представить результат выполнения программы в следующем виде:
Где в ячейку А2 вводится значение аргумента х, а в ячейке В2 выводится результат.
Изобразим блок-схему:
-
Решение с помощью макроса
Создайте лист с названием «ЛР4». Введите текст следующего макроса, выполните его.
1.2 Решение с помощью функции:
Напишите функцию:
В ячейку А3 введите значение аргумента, выполните вставку функции в ячейку B3 «моя_сумма» из категории «определенные пользователем» .
Операторы цикла с условием.
В VBA для организации циклов с неизвестным заранее числом шагов используются операторы цикла с условием:
1. Оператор цикла While-Wend.
Синтаксис:
While «условиие»
«блок_операторов»
Wend
Цикл обеспечивает многократное выполнение «блока операторов», пока «условие» принимает значение True.
2. Операторы цикла Do-Loop
Синтаксис перечисленных операторов:
Do While «условиие»
«блок_операторов»
[Exit Do]
«блок_операторов»
Loop
Оператор do while-Loop обеспечивает многократное выполнение блока операторов до тех пор, пока «условиие» соблюдается( имеет значение True)
Do Until «условиие»
«блок_операторов»
[Exit Do]
«блок_операторов»
Loop
Оператор Do until-Loop обеспечивает многократное выполнение блока операторов до тех пор, пока «условиие» не соблюдается( имеет значение False).
Do
«блок_операторов»
[Exit Do]
«блок_операторов»
Loop While «условиие»
Do
«блок_операторов»
[Exit Do]
«блок_операторов»
Loop Until «условиие»
Операторы Do-Loop while и Do-Loop until отличаются от перечисленных выше двух операторов тем, что сначала блок операторов выполняется, по крайней мере, один раз, а потом проверяется «условиие». Оператор Exit Do обеспечивает досрочный выход из оператора цикла.
Пример 2
Написать макрос, который будет вычислять сумму вводимых пользователем с клавиатуры числа до тех пор, пока не будет введен ноль. С использованием цикла с условием, реализацию каждого цикла оформить в виде отдельного макроса.
Вывод осуществить в ячейки электронной таблицы следующим образом:
Запустить все макросы с одними и теми же исходными данными.
Решение:
Варианты задания для самостоятельной работы:
Вывод реализовать в ячейки того же листа «ЛР4», ниже результатов учебного примера
Задача 1:
Написать программу вычисления суммы (произведения) конечного числа элементов ряда с использованием цикла с параметром.
1 |
, х вводится пользователем с клавиатуры |
6 |
, a вводится пользователем с клавиатуры |
2 |
7 |
, а вводится пользователем с клавиатуры |
|
3 |
8 |
, х вводится пользователем с клавиатуры |
|
4 |
9 |
||
5 |
, х вводится пользователем с клавиатуры |
10 |
Задача 2:
К задаче своего варианта необходимо написать пять программ, используя циклы с предусловием и постусловием.
-
Вычислить произведение вводимых пользователем с клавиатуры чисел, если числа считываются до тех пор, пока не будет введена единица;
-
Вычислять и выводить в ячейки рабочего листа кубы вводимых пользователем с клавиатуры чисел до тех пор, пока не будет введено 3.
-
Вычислять и выводить в ячейки рабочего листа члены арифметической прогрессии до тех пор, пока очередной член прогрессии не окажется большим 50. Первый член арифметической прогрессии равен 2, разность равна 5;
-
Вычислять и выводить в ячейки рабочего листа члены геометрической прогрессии до тех пор, пока очередной член прогрессии не окажется большим 250. Первый член геометрической прогрессии равен 3, знаменатель равен 4;
-
Общий член последовательности задан формулой: . Вычислить сумму n первых членов последовательности, меньших 75.
-
Общий член последовательности задан формулой: . Вычислить сумму n первых членов последовательности, больших 1;
-
Общий член последовательности задан формулой: . Суммировать первые n членов последовательности, до тех пор, пока сумма не окажется большей 100. Вывести значение суммы и последнего n-го члена последовательности;
-
Общий член последовательности задан формулой: . Вычислять произведение первых n членов последовательности до тех пор, пока произведение не окажется большим 1000. Вывести значение произведения и последнего n-го члена последовательности;
-
Первый член арифметической прогрессии равен -50, разность равна 7. Вывести на в ячейки рабочего листа все члены данной арифметической прогрессии, меньшие нуля;
-
Первый член арифметической прогрессии равен 90, разность равна -8. Вычислить сумму всех положительных членов данной арифметической прогрессии.
Контрольные вопросы.
-
Какой алгоритм называется циклическим?
-
Какие виды операторов цикла используются в языке программирования VBA?
-
В каком случае удобно использовать цикл for?
-
В чем сходство и различие конструкций операторов цикла с условием?
-
Как все вида циклов изобразить с помощью блок-схемы?