Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Занятие 8 “Циклы в 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
Опробуйте работу проекта на компьютере.
3. Вычисление факториала натурального числа
Известно, что факториал натурального числа можно вычислить последовательным перемножением всех натуральных чисел, начиная с единицы до данного натурального числа:
N!=1 * 2 * 3 *…* (N - 1) * N
Сделайте небольшой проект с использованием цикла For…Next, в котором после задания пользователем значения натурального N будет рассчитываться значение N! Результат вычислений должен распечатываться на форме.
4. Условные циклы
Часто бывает так, что необходимо повторить операторы, выражающие совокупность действий, какое-то число раз, но сколько будет повторений заранее не известно. В жизни такого рода ситуации встречаются довольно часто. Например, вам необходимо дойти до двери комнаты, в которой вы находитесь, повторяя действие “сделай один шаг”. Сколько повторений вам придется сделать, заранее вы не знаете. Вы делаете повторения, пока не упретесь в дверь. В таких случаях количество повторений зависит от некоторого условия.
Условие выхода из цикла можно поставить в начале цикла, перед повторяющимися действиями. Такой цикл называется циклом с предусловием. Фрагмент блок-схемы, соответствующий этому типу цикла, выглядит следующим образом:
. . .
. . .
Условие B это условие выхода из цикла, блок S блок повторяющихся действий тело цикла.
Условие выхода из цикла можно поставить в конце цикла, после повторяющихся операторов. Такой цикл называется циклом с послеусловием. Фрагмент блок-схемы, соответствующий этому типу цикла, выглядит следующим образом:
. . .
. . .
5. Оператор цикла DO…LOOP
С помощью оператора Do…Loop на языке Visual Basic можно реализовать цикл с предусловием и цикл с послеусловием.
Формат цикла с предусловием следующий:
Do [{While/Until} условие]
[Операторы блока S]
Loop
Формат цикла с послеусловием следующий:
Do
[Операторы блока S]
Loop [{While/Until} условие]
Цикл с предусловием никогда не выполняется в случае невыполнения условия. Цикл с послеусловием выполняется обязательно как минимум один раз, независимо от того, выполняется условие или нет.
Проверка условий выхода из цикла проводится с помощью ключевых слов While или Until. Эти слова придают одному и тому же условию противоположный смысл. Например, в цикле:
A = 1
Do
A = A + 1
Print “Visual Basic”
Loop While A < 11
условие выхода можно трактовать следующим образом: пока A меньше 11. Фраза Visual Basic будет печататься, пока значение переменной A меньше одиннадцати (т. е. десять раз). А в цикле:
A = 1
Do
A = A + 1
Print “Visual Basic”
Loop Until A > 10
условие выхода можно трактовать так: пока значение переменной A не стало больше десяти. И в том, и в другом случае фраза Visual Basic будет распечатываться 10 раз.
6. Усложнение проекта prjCycles
Давайте дополним проект prjCycles, который вы делали для иллюстрации “работы” цикла For…Next,таким образом, чтобы в этом проекте была представлена “работа” оператора Do…Loop для цикла с предусловием и для цикла с послеусловием. Дополним графический интерфейс пользователя еще двумя командными кнопками cmdAfter (значение свойства Caption “С послеусловием”) и cmdBefore(значение свойства Caption “С предусловием”) и меткой, комментирующей содержание этих командных кнопок.
Составьте код для cmdAfter. Пусть пользователь количество повторений печати на форме фразы Visual Basic задает с помощью функции InputBox и условие выхода из цикла формулируется с помощью слова While. Не забудьте объявить переменные. Сделайте их локальными.
Private Sub cmdAfter_Click( )
End Sub
Составьте код для cmdBefore. Пусть пользователь количество повторений печати на форме фразыVisual Basic задает с помощью функции InputBox и условие выхода из цикла формулируется с помощью слова While. Не забудьте объявить переменные. Сделайте их локальными.
Private Sub cmdBefore_Click( )
End Sub
Отладьте свой проект на компьютере и запишите на диск.
8. Арифметическая и геометрическая прогрессии
Известно, что арифметическая и геометрическая прогрессия это последовательность, каждый следующий элемент которой больше предыдущего.
Арифметическую прогрессию можно представить следующим образом:
Следующий элемент получается из предыдущего прибавлением одного и того же числа (d). Таким образом, для вычисления n -го элемента прогрессии необходимо знать две величины: a и d и его порядковый номер n.
Геометрическую прогрессию можно представить следующим образом:
Следующий элемент получается из предыдущего умножением на одно и то же число (d). Для вычисления n-го элемента прогрессии необходимо знать тоже две величины: a и d и его порядковый номер n.
9. Задания
а) Ответьте на вопросы
Как “работает” цикл, если конечное значение счетчика цикла меньше, чем начальное?
Что происходит с циклом, если значение шага будет отрицательным?
б) Сделайте проект, в котором вычисляется степень числа 2, описанный в пункте 2 занятия, с использованием цикла For…Next.
в) Сделайте проект , в котором вычисляется факториал натурального числа N!, описанный в пункте 3 занятия.
г) Выполните задание.
Придумайте два варианта цикла с предусловием с использованием цикла Do…Loop, чтобы фраза Visual Basic распечатывалась 10 раз и запишите эти циклы на языке Visual Basic:
д) Сделайте фрагмент кода, в котором с помощью цикла Do… Loop находились бы и распечатывались на форме все положительные члены арифметической прогрессии, если a = 18, d = -3. Составьте в тетради процедуру для вычисления соответствующих членов прогрессии. Проверьте ее на компьютере.
е) Сделайте фрагмент кода, в котором с помощью цикла Do…Loop находились бы и распечатывались на форме все члены геометрической прогрессии, меньшие 500, если a = 4, d = 2. Составьте в тетради процедуру для вычисления соответствующих членов прогрессии. Проверьте ее на компьютере.
На главную страницу
Сайт http://schools.keldysh.ru/vb/less/les8/lesson8.htm