Операторцикла Do – Loop

 

В VBA для организации циклов с неизвестным заранее числом повторений тела цикла используется и оператор цикла Do – Loop.

Существует четыре формы записи этого оператора. Их можно разбить на две группы: циклы с предусловием и циклы с постусловием.

 

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

1. Do While Условие 2. DoUntil Условие

Блок операторов Блок операторов

LoopLoop

II. Циклы с постусловием.

1. Do 2. Do

Блок операторов Блок операторов

Loop While Условие Loop Until Условие

 

Оператор DoWhile – Loop обеспечивает многократное выполнение блока операторов до тех пор, пока условие истинно, а оператор DoUntil – Loop – пока условие ложно.

Операторы Do – LoopWhile и Do – LoopUntil отличаются от первых двух операторов тем, что сначала выполняется блок операторов, а затем проверяется условие. Таким образом, в этих циклах блок операторов, составляющих тело цикла, выполнится по крайней мере один раз.

Приведем примеры использования цикла Do – LoopWhile.

 

Задача 1. Составить программу, позволяющую вводить с клавиатуры целые числа до тех пор, пока не будет введено число, кратное 6, и вычислить количество введенных чисел (вместе с последним).

 

Программныйкод

 

Option Explicit

Sub PR12()

Dim x As Integer, k As Integer

k = 0

Do

x = Val(Inputbox(“Введитечисло”))

k = k+1

Loop While x mod 6<>0

MsgBox ("количество=" &k)

End Sub

 

Если использовать оператор Do – LoopUntil, то основная часть программы выглядит следующим образом:

 

k = 0

Do

x = Val(Inputbox(“Введитечисло”))

k = k+1

Loop Until x mod 6=0

MsgBox ("количество=" &k)

 

Задача 2. Составить программу, вычисляющую сумму членов последовательности –1, 3, 7, … до тех пор, пока она (сумма) не превысит заданное число Х.

Задачу можно решить, используя различные формы записи цикла Do – Loop.

 

Программныйкод

1.

Option Explicit

Sub PR13()

Dim x As Integer, sum As Integer, a As Integer

x = Val(Inputbox(“Введите число”))

sum = 0

a = -1

Do

sum = sum + a

a = a + 4

Loop While sum<=x ‘ или Loop Until sum>x

MsgBox ("Суммаравна" &sum)

End Sub

 

2.

x = Val(Inputbox(“Введитечисло”))

sum = 0

a = -1

Do While sum<=x ‘ или Loop Until sum>x

sum = sum + a

a = a + 4

Loop

MsgBox ("Суммаравна" &sum)

 

Задача 3. Вычислить произведение и сумму цифр произвольного числа.

 

Option Explicit

Sub PR14()

Dim x As Integer, sum As Integer, pr As Long, c As Integer

x = Val(Inputbox(“Введите число”))

sum = 0

pr = 1

Whilex<>0

c = xmod 10 ‘ вычисляем последнюю цифру в числе

sum = sum + c ‘ вычисляем сумму цифр

pr = pr * c ‘ вычисляем произведение цифр

x = x \ 10 ‘ отбрасываем последнюю цифру числа

Wend

MsgBox ("Сумма = " &sum& ", произведение = " &pr)

EndSub

МАССИВЫ

Часто бывает необходимо работать с некоторым набором однотипных данных как с единым целым. В таких случаях используются массивы – структурированные боксы для хранения множеств элементов данных одинакового типа.

Массивы могут быть одномерными и многомерными.

Одномерные массивы

 

Одномерный массив – это набор однотипных элементов, расположенных друг за другом в одной строке или столбце.

 

Пример

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) AsDouble

 

При таком описании массива его элементы индексируются (т.е. нумеруются), начиная с нуля.

Если оператор описания будет выглядеть следующим образом:

Dim A (1 To 100) As Integer,

то элементы массива индексируются с единицы.

 

Ввод массива

Перед обработкой массива его необходимо заполнить (ввести).

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

 

 
 

1 способ. На рабочем листе введем числа в ячейки электронной таблицы (рис. 4), откроем окно программного кода и запишем в него программу, которая считывает данный массив чисел.

Рис. 4. Исходный массив

Программный код

 

OptionExplicit

Sub PR14()

Dim A(20) As Integer

Dim i As Integer

For i = 1 To 6

A(i) = Cells(1, i) ‘ массив заполняется

Next i ‘ числами с рабочего листа Excel

EndSub

 

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 используется следующая конструкция:

 

Fori = 1 Ton

Cells(k, i) = A(i) ‘ вывод массива в ячейки электронной таблицы

Next i ‘ k – номер строки для заполнения ячеек.

 

Вместо переменной k можно использовать конкретное значение, например 3, тогда массив распечатается в третьей строке рабочего листа.

После заполнения ячеек их содержимое можно посмотреть, свернув окно программного кода при помощи кнопки “Свернуть” или переключившись в окно Excel с помощью соответствующей кнопки на панели задач.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: