Оператор цикла с предусловием While – Wend

Оператор цикла While – Wend используется для организации цикла с неизвестным заранее числом повторений тела цикла. Общий вид цикла While – Wendвыглядит следующим образом:

While Условие

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

Wend

Цикл While – Wend обеспечивает многократное выполнение блока операторов, пока условие принимает значение True (истина).

Задача 1. Вычислить и вывести значения функции Y при X,изменяющимся от –10 до 10 с шагом 2.

Оператор цикла с предусловием While – Wend - student2.ru .

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

Option Explicit

Sub PR9()

Dim X As Integer, Y As Double

X = –10

While X <= 10

If X <> 2 Then

Y = 1 / (X – 2) + X

MsgBox ("Y=" & Y)

Else

MsgBox ("Функция не определена")

End If

X = X + 2

Wend

End Sub

Задача 2. Задан натуральный ряд чисел. Вычислить сумму четных чисел данного ряда.

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

Option Explicit

Sub PR10()

Dim N As Integer, I As Integer, S As Double

N = Val(InputBox("Введите N"))

I = 2

S = 0

While I <= N

S = S + I

I = I + 2

Wend

MsgBox (S)

End Sub

Задача 3. Вкладчик положил на счет 1000 рублей. Через сколько дней вклад достигнет 20000 рублей, если начисляемый процент 0,6 % в день.

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

Option Explicit

Sub PR11()

Dim V As Double, Pr As Double, Kol As Integer

V = Val(InputBox("Введите начальный взнос"))

Kol = 0

While V <= 20000

Pr = V * 0.6 / 100

V = V + Pr

Kol = Kol + 1

Wend

MsgBox ("20000 руб. вклад достигнет за " & Kol & " дней")

End Sub

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

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

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

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

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

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

Loop Loop

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

1. Do2. Do

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

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

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

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

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

Задача 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 – Loop Until, то основная часть программы выглядит следующим образом:

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

While x<>0

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

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

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

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

Wend

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

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, в который числа заносятся вручную или при помощи счетчика случайных чисел.

 
  Оператор цикла с предусловием While – Wend - student2.ru

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 с помощью соответствующей кнопки на панели задач.

Наши рекомендации