Оператор цикла Do – Loop
В VBA для организации циклов с неизвестным заранее числом повторений используются и другие операторы циклов:
1. Do While Условие Блок операторов Loop 2. Do Until Условие Блок операторов Loop 3. Do Блок операторов Loop While Условие 4. Do Блок операторов Loop Until Условие
Оператор Do While – Loop обеспечивает многократное выполнение блока операторов до тех пор, пока условие истинно, а оператор Do Until – Loop – пока условие ложно. Операторы Do – Loop While и Do – Loop Until отличаются от первых двух операторов тем, что сначала выполняется блок операторов, а затем проверяется условие. Таким образом, в этих циклах блок операторов, составляющих тело цикла, выполнится по крайней мере один раз. Приведем пример использования цикла Do – Loop While при нахождении корня уравнения f(x) = 0 методом Ньютона. Для нахождения приближенного значения корня уравнения методом Ньютона необходимо задать начальное приближение х0, а затем определить последующие приближения к корню методом итерации по формуле
f(xn–1) xn = xn –1 – , где n = 1, 2,… f’(xn–1)
Процесс останавливается при выполнении неравенства |xn–xn–1| £ e, где e – точность определения корня. Уравнение x2 = 2, начальное приближение к корню – число 3, точность вычисления 0,00001. Ответ: х = 1,414207.
Программный код
Option Explicit Sub PR12() Const eps = 0.00001 Dim x0 As Double, x As Double x = 3 Do x0 = x x = x – (x ^ 2 – 2) / (2 * x) Loop While Abs(x – x0) > eps MsgBox ("корень уравнения=" & x) End Sub
Примером использования цикла Do – Loop Until может служить программа нахождения корня уравнения f(x) = 0 методом деления отрезка пополам. Вычислим корень уравнения x2 = 2 с точностью до e = 0,00001. За отрезок начальной локализации корня берется отрезок [0; 2]. Ответ: х = 1,414207.
Программный код
Option Explicit Sub PR13() Dim c As Double, f As Double Dim fa As Double, fb As Double, fc As Double Dim a As Double, b As Double, eps As Double, bh As Double a = 0: b = 2: eps = 0.00001 fa = a ^ 2 - 2 fb = b ^ 2 - 2 If fa * fb >= 0 Then MsgBox ("Функция не меняет знак на концах отрезка") Exit Sub ‘ выход из процедуры End If Do c = (a + b) / 2 fc = c ^ 2 - 2 fa = a ^ 2 - 2 f = fc * fa If f < 0 Then b = c Else a = c Loop Until b - a < eps bh = c MsgBox ("значение корня=" & bh) End Sub Массивы
Часто бывает необходимо работать с некоторым набором однотипных данных как с единым целым. В таких случаях используются массивы – структурированные боксы для хранения множеств элементов данных одинакового типа. Массивы могут быть одномерными и многомерными.
Одномерные массивы
Одномерный массив – это набор однотипных элементов, расположенных друг за другом в одной строке или столбце.
Пример 1 –34 8 2 6 или -5
Каждый элемент массива обозначается при помощи имени массива и индекса, заключенного в круглые скобки. Индекс может быть: · константой Пример P(1), C(5) · переменной целого типа Пример A(i), B(j) · арифметическим выражением (значение арифметического выражения должно быть целым) Пример A(i*2), Q(i^j)
Объявление массива
Как и обычные переменные, массивы должны быть объявлены. Для описания массива используется оператор Dim.
Dim Имя массива (Размерность массива) As Тип элементов
Пример Dim A (100) As Integer Dim B (50) As Byte Dim С (40) As Double
При таком описании массива его элементы индексируются (т.е. нумеруются), начиная с нуля. Если оператор описания будет выглядеть следующим образом: Dim A (1 To 100) As Integer, то элементы массива индексируются с единицы.
Ввод массива
Перед обработкой массива его необходимо заполнить (ввести). Массив будем считывать с рабочего листа Excel, в который числа заносятся вручную или при помощи счетчика случайных чисел.
1 способ. На рабочем листе введем числа в ячейки электронной таблицы (рис. 4), откроем окно программного кода и запишем в него программу, которая считывает данный массив чисел. Рис. 4. Исходный массив Программный код
Option Explicit Sub PR14() Dim A(20) As Integer Dim i As Integer For i = 1 To 6 A(i) = Cells(1, i) ‘ массив заполняется Next i ‘ числами с рабочего листа Excel End Sub
2 способ. Массив можно заполнить при помощи счетчика случайных чисел. Для этого в программе после объявления переменных следует написать следующее:
Randomize For i = 1 To 10 Cells(1, i) = Int(Rnd * 100 – 50) A(i) = Cells(1, i) ‘ заполнение массива Next i
Функция Rnd возвращает значение от 0 до 1. Перед вызовом функции Rnd используется инструкция Randomize без аргумента для инициализации генератора случайных чисел значением, возвращаемым системным таймером. Cells(1, i) означает ячейку электронной таблицы, находящуюся в первой строке и столбце с номером i. Вообще оператор Cells(i, j) служит для вывода информации в ячейку электронной таблицы или считывания информации из ячейки электронной таблицы Excel. В скобках через запятую указываются номер строки – i и номер столбца – j ячейки электронной таблицы.
Пример Cells(1, 2) = x ‘в ячейку B1 записывается информация из переменной х х = Cells(1, 2) ‘из ячейки В1 считывают информацию в переменную х
Вывод массива
Для распечатки полученного массива на рабочий лист Excel используется следующая конструкция:
For i = 1 To n Cells(k, i) = A(i) ‘ вывод массива в ячейки электронной таблицы Next i ‘ k – номер строки для заполнения ячеек.
Вместо переменной k можно использовать конкретное значение, например 3, тогда массив распечатается в третьей строке рабочего листа. После заполнения ячеек их содержимое можно посмотреть, свернув окно программного кода при помощи кнопки “Свернуть” или переключившись в окно Excel с помощью соответствующей кнопки на панели задач. В VBA удобно пользоваться различными рабочими листами в одной программе. Для установки нужного рабочего листа используется следующая команда:
Популярное: Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... Почему стероиды повышают давление?: Основных причин три... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (765)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |