Циклы в Visual Basic
В настоящем занятии слушатель знакомится с основными циклическими конструкциями языка циклом с известным числом повторений For…Next и условным циклом Do…Loop.
1. Цикл For…Next в Visual Basic
Часто в программах требуется многократное выполнение одного или нескольких операторов. Для этого предназначены циклические конструкции или просто циклы. Когда программисту известно, какое число повторений данной группы операторов необходимо выполнить, можно воспользоваться циклической конструкцией For…Next.
Цикл For…Next является самой старой и самой простой циклической конструкцией Basic. Фрагмент блок-схемы, который реализует оператор For…Next, можно представить следующим образом:
Cинтаксис оператора For…Next следующий:
For Cчетчик=Начальное значение To Конечное значение [Step шаг]
Операторы блока S
Next [счетчик]
Операторы блока S называется телом цикла. Строка, начинающаяся с ключевого слова For, – заголовком цикла, строка с ключевым словом Next – концом цикла.
В начале выполнения цикла значение Счетчик устанавливается в Начальное значение. При каждом “проходе” цикла переменная Счетчик увеличивается на величину шага. Если она достигает Конечное значение, то цикл завершается и выполняются следующие за ним операторы.
Сделаем небольшой пример, чтобы на практике понять, как “работает” оператор For…Next.
На форму поместим одну командную кнопку cmdFor, а значение свойства Caption для нее зададим “ For…Next”.
Составим код для командной кнопки cmdFor, включив в него цикл. В теле цикла поместим строку Print “Visual Basic ”. Начальное значение счетчика зададим равное единице, конечное значение - 10, шаг 1.
Private Sub cmdFor_Click()
Dim I As Integer
CLS
For I = 1 To 10 Step 1
Print “Visual Basic ”
Next I
End Sub
Сделайте этот код на компьютере и запустите проект на выполнение. Вы увидите, что на форме 10 раз распечаталась фраза “ Visual Basic”.
Изменим теперь строку кода, соответствующую заголовку цикла, следующим образом: не будем указывать шаг.
For I = 1 To 10
Если теперь запустить проект и щелкнуть на командной кнопке, результат не изменится. Если в цикле не указывать шаг, то подразумевается, что он равен единице.
Произведем следующие изменения в коде. Шаг сделаем 2. Заголовок цикла станет такой:
For I = 1 To 10 Step 2
В результате работы измененной программы фраза Visual Basic распечатается на форме 5 раз.
Составьте три варианта цикла, чтобы фраза Visual Basic распечатывалась на форме 10 раз. Меняйте каждый раз начальное и конечное значения счетчика цикла и шаг. Проверьте их на компьютере.
Немного модифицируем наш проект следующим образом: не будем в коде задавать начальное и конечное значения счетчика цикла и его шаг, а будем запрашивать все эти значения с помощью функции InputBox.
Private Sub cmdFor_Click()
Dim I As integer
Dim BeginZn As Single
Dim FinishZn As Single
Dim StepZn As Single
Cls
i = 0
BeginZn = 0
FinishZn = 0
StepZn = 0
BeginZn=InputBox(“Число”,“Начальное значение счетчика”)
FinishZn=InputBox(“Число”, “Конечное значение счетчика”)
StepZn = InputBox (“Число”, “Значение шага”)
For I = BeginZn To FinishZn Step StepZn
Print “Visual Basic”
Next I
End Sub
2. Вычисление степени числа два
Попробуем сделать небольшой проект, в котором для введенного пользователем натурального показателя степени n вычислялось бы значение . Использовать при вычислении можно только действие умножение.
Начнем новый проект. На форму frmTwoPower поместим текстовое окно, в которое пользователь будет вводить значение показателя степени иметку суказанием для пользователя, что ему нужно сделать. Кроме этого пусть на форме будут две командные кнопки: cmdExit для выхода из проекта и cmdPower для вычисления степени.
Форма после описанных действий может выглядеть, например, так:
Для вычислений организуем цикл For…Next. Будем умножать на 2 накопленное произведение (n-1) раз:
For i = 1 To n - 1
TwoPower = 2 * TwoPower
Next i
TwoPower – это накопленное произведение, которое после завершения цикла и будет являться искомым значением, i – переменная цикла.
Очевидно, для вычислений нам понадобятся переменные. Объявим в разделе General формы следующие переменные:
Dim TwoPower As Long
Dim n As Integer
Dim i As Integer
Начальное значение переменной TwoPower (до цикла) примем равным 2. Распечатывать результат расчетов можно, например, с помощью метода Print на форме. Вот как может выглядеть форма после того, как были произведены соответствующие расчеты и распечатан результат:
Распечатку результата расчета сделаем в отдельной процедуре Printer(), а в процедуре для cmdPower будем ее вызывать.
Допишите процедуру для расчетов:
Private Sub cmdPower_Click()
Call Printer
End Sub
Допишите процедуру, печатающую на форме результат расчетов.
Private Sub Printer()
End Sub
Опробуйте работу проекта на компьютере.