Известно, что факториал натурального числа можно вычислить последовательным перемножением всех натуральных чисел, начиная с единицы до данного натурального числа:
N!=1 * 2 * 3 *…* (N - 1) * N
Сделайте небольшой проект с использованием цикла For…Next, в котором после задания пользователем значения натурального N будет рассчитываться значение N! Результат вычислений должен распечатываться на форме.
Условные циклы
Часто бывает так, что необходимо повторить операторы, выражающие совокупность действий, какое-то число раз, но сколько будет повторений заранее не известно. В жизни такого рода ситуации встречаются довольно часто. Например, вам необходимо дойти до двери комнаты, в которой вы находитесь, повторяя действие “сделай один шаг”. Сколько повторений вам придется сделать, заранее вы не знаете. Вы делаете повторения, пока не упретесь в дверь. В таких случаях количество повторений зависит от некоторого условия.
Условие выхода из цикла можно поставить в начале цикла, перед повторяющимися действиями. Такой цикл называется циклом с предусловием. Фрагмент блок-схемы, соответствующий этому типу цикла, выглядит следующим образом:
...
...
Условие 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. Не забудьте объявить переменные. Сделайте их локальными.