Программа «Вычисление факториала»




Операторы цикла в VBA.

При решении многих задач из области информационных технологий часто возникает необходимость многократного повторения одного и того же оператора или группы операторов. Для этой цели в языке Visual Basic (как и в других языках программирования) предусмотрена такая структура, как цикл. В Visual Basic существует две основные циклические структуры: цикл с заранее известным числом повторений и цикл с заранее неопределенным числом повторений.

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

For i=a To b

тело цикла

Next i

Первая строка в данном случае является строкой заголовка, который определяет количество повторений цикла. Переменная i называется переменной цикла. Данная переменная должна относиться к целому типу. Эта переменная имеет начальное значение a и конечное значение b, причем величина a должна быть меньше, чем величина b. Тело цикла представляет собой собственно тот оператор или группу операторов, которые многократно повторяются в ходе выполнения цикла. Команда Next i необходима для того, чтобы однозначно определить, где заканчивается цикл.

Механизм работы данного оператора следующий: вначале переменной цикла присваивается начальное значение a, после чего выполняется тело цикла. Затем значение переменной цикла i увеличивается на единицу. Далее вновь происходит выполнение тела цикла, и после этого значение переменной цикла увеличивается еще на единицу. Таким образом, увеличение значение данной переменной на единицу производится после каждого очередного выполнения тела цикла до тех пор, пока значение переменной i не станет равным конечной величине b. Когда это происходит, тело цикла выполняется в последний раз. На этом цикл завершает свою работу, и программа переходит к выполнению оператора, следующего за оператором цикла. Следовательно, количество повторений цикла можно заранее определить и оно будет равно b-a+1.

Говоря о цикле с заранее заданным количеством повторений, следует отметить еще два обстоятельства. Во-первых, начальное или конечное значения переменной цикла a и b могут быть как числовыми константами или переменными, так и выражениями, значения которых вычисляются и используются в данном операторе. Во-вторых, увеличение значения переменной цикла может происходить не только на единицу, но и на другую величину. Для того, чтобы задать эту величину, которая называется шагом изменения значения переменной цикла, следует в заголовке цикла добавить служебное слово Step и после него указать величину шага изменения переменной цикла. В этом случае в общем виде заголовок цикла будет выглядеть так:

For i=a to b Step k,

где k – шаг изменения переменной цикла.

Наряду с вышеуказанной формой цикла с заранее известным количеством повторений возможна и альтернативная форма цикла, в которой после каждого очередного выполнения тела цикла происходит не увеличение, а уменьшение значения переменной цикла.

В этом случае в заголовке цикла в обязательном порядке должно присутствовать служебное слово Step, и после него указывается шаг k, который должен быть отрицательной величиной. Тогда после каждого очередного выполнения тела цикла значение переменной цикла i будет уменьшаться на величину k. Понятно, что в таком случае для правильной работы цикла начальное значение переменной цикла a должно быть больше, чем конечное значение b.

Рассмотрим применение оператора цикла с заранее известным количеством повторений на следующем примере: необходимо вычислить факториал натурального числа n, введенного пользователем с клавиатуры. Понятие факториала применимо только к натуральным числам. Факториалом числа n называется произведение всех натуральных чисел от 1 до n. В математике факториал обозначается восклицательным знаком: n!. Например, факториал числа 5 обозначается как 5! и вычисляется следующим образом:

5! = 1*2*3*4*5 = 120.

В программе также следует предусмотреть защиту от ввода слишком больших значений числа n (условимся, что значение n не должно превышать 12). В том случае, если пользователь случайно введет большее число, программа должна выдавать сообщение об ошибке.

Пользовательский интерфейс данного приложения должен включать следующие элементы:

1. Два текстовых окна. Текстовое окно Textbox1 для ввода исходной величины n и окно Textbox2 для вывода искомого результата – факториала числа n.

2. Две надписи Label1 и Label2, поясняющие назначение текстовых окон, указанных в п. 1.

3. Четыре экранные кнопки (объекты CommandButton). Экранная кнопка «Подсчитать» (CommandButton1) либо вычисляет по введенному исходному значению величину факториала, либо выводит дополнительное диалоговое окно с сообщением об ошибке в случае неправильного ввода исходных данных. Кнопка «Сброс» (CommandButton2) очищает текстовые окна для того, чтобы подготовить их к новому вводу данных и расчету. Кнопка «Об авторе» (CommandButton3) выводит на экран диалоговое окно со сведениями об авторе данной программы. Кнопка «Выход» (CommandButton4) закрывает приложение.

Пользовательский интерфейс приложения «Вычисление факториала» приведен на рисунке.

Написание программного кода начнем с кнопки «Подсчитать». Вначале описываем используемые переменные. Это исходная величина n и искомый факториал f. Обе эти величины описываем как переменные «большого» целого типа – типа Long, который может оперировать целыми числами до 2 млрд. Затем определяем исходную величину n путем преобразования из строковой форму в числовую данных, введенных в окно Textbox1.

Дальнейший ход действий будет зависеть от имеющегося значения n. Выбор одного из двух возможных вариантов будет производиться с помощью условного оператора If. В этом операторе после служебного слова Then рассматривается случай некорректного ввода исходных данных, когда введенное значение n меньше 1 или больше 12 (объединяем оба этих случая с помощью операции Or – «логическое или»). В первом случае ввод данных будет неправильным, так как у отрицательных чисел или ноля факториал вообще отсутствует. Во втором случае значение вычисленного факториала превысит 2 миллиарда и выйдет за рамки типа Long, что приведет к искажению результата. Поэтому для любого неправильно введенного значения с помощью команды Msgbox выводится диалоговое окно, содержащее следующее сообщение: «Ошибка ввода. Число должно быть в диапазоне от 1 до 12».

В том случае, если ввод данных был произведен корректно, программа должна приступить к вычислению факториала f. Для этого вначале переменной f должно быть присвоено значение, равное 1. Это наименьшее возможное значение факториала. Дальнейшее вычисление значения факториала производится в цикле с заранее известным числом повторений. Вычисление факториала производится путем последовательного умножения его исходного значения на каждое целое число в диапазоне от 1 до n. Эти значения последовательно принимает переменная цикла i. Приведенный выше алгоритм вычисления факториала на языке Visual Basic может быть записан следующим образом:

f = 1

For i = 1 To n

f = f * i

Next i

После того, как значение факториала вычислено, его нужно преобразовать из целочисленной формы в строковую и вывести в текстовом окне Textbox2. Весь программный код для экранной кнопки «Расчет» будет выглядеть так:



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-09-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: