ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


Использование MsgBox для обеспечения возможности выбора

 

При помощи необязательного аргумента Buttons можно использовать VBA-процедуру MsgBox как функцию для получения выбора от пользователя в ответ на сообщения или вопросы, которые отображает программа. Для многих простых вариантов выбора использование функции MsgBox для получения ответа от пользователя является гораздо более легким путем, чем получение текстового ввода с помощью функции InputBox и последующий анализ этого текста для определения того, какой выбор сделал пользователь.

При включении аргумента Buttons с необходимыми круглыми скобкам оператор MsgBox работает подобно функции и отображает окно сообщения, cодержащее различные командные кнопки. MsgBox возвращает численный результат, указывающий, какую командную кнопку выбрал пользователь. Число и тип командных кнопок, отображаемых диалоговым окном MsgBox, задается с помощью аргумента Buttons.

Аргумент Buttonsдля MsgBoxпозволяет задавать количество и тип кно­пок, а также наличие или отсутствие в окне сообщения одного из значков Windows для обозначения предупредительного сообщения, сообще­ния запроса, информационного сообщения и критического предупредительного сообщения.Можно также использовать аргумент Buttonsдля определения того, ка­кая из отображаемых кнопок (кнопка 1, 2, 3 или 4) является кнопкой по умолчанию в окне сообщения. Каждый раз можно задавать только один тип кнопки, один значок и одну кнопку по умолчанию.

Константа vbYesNoCancelопределяет, что диалоговое окно MsgBoxдолжно содержать три командные кнопки: Да, Нет и Отмена. Константа vbQuestionопределяет, что окно сообщения должно содержать значок сообщения запроса (Query message) Windows. Константа vbDefaultButton2 задает какая командная кнопка 1 (Да), 3 (Нет), 3 (Отмена) в диалоговом окне MsgBox является кнопкой по умолчанию.

Как только пользователь выбирает командную кнопку в окне сообщения, VBA возвращает численное значение, соответствующее выбору пользователя. Результат функции MsgBoxприсваивается переменной Resp.VBA использует различные значения в зависимости от того, какую командную кноп выбрал пользователь: одно значение для обозначения кнопки Да,другое – для обозначения кнопки Нет и еще одно – для кнопки Отмена. Функция MsgBoxможет также отображать окна с кнопками Стоп(Abort), Повтор(Retry) и Пропустить(Ignore) в различных комбинациях. Поскольку каждая кнопка имеет свое определенное возвращаемое значение, VBA предоставляет несколько внутренних констант для представления возможных возвращаемых значений функции MsgBox.

 

Понятие цикла

 

При разработке программ часто приходится изменять порядок следования операторов. Только в очень простых программах операторы выполняются один за другим – управление передается последовательно, от оператора к оператору. На практике необходимые средства для изменения порядка следования операторов, другими словами, передачи управления – обеспечивают операторы цикла и условные операторы.

Часто при решении задач приходится многократно вычислять значения по одним и тем же математическим зависимостям для различных значений входящих в них величин. Такие многократно повторяющиеся участки вычислительного процесса называются циклами. Использование циклов позволяет существенно сократить объем схемы алгоритма и длину соответствующей программы. Различают циклы с заданным и неизвестным числом повторений. К последним относятся итерационные циклы, характеризующиеся последовательным приближением к искомому значению с заданной точностью.

Для организации цикла необходимо выполнить следующие действия:

1) задать перед циклом начальное значение переменной, изменяющейся в цикле;

2) произвести необходимые действия;

3) изменить переменную на величину шага;

3) проверить условие окончания (или повторения) цикла;

4) переходить к п.2, если цикл не закончен.

Последние четыре действия повторяются многократно. Переменная, изменяющаяся в цикле, называется параметром цикла. Действия, повторяемые многократно, называются телом цикла.

Переменная, изменяющаяся в цикле, называется параметром цикла. В одном цикле может быть несколько параметров. Переменную, значения которой вычисляются машиной и хранятся в одной и той же ячейке памяти, называют простой переменной, а переменную, являющуюся элементом массива, – переменной с индексом. Следует иметь в виду, что параметром цикла является при использовании простой переменной сама переменная, а при использовании переменной с индексом – ее индекс.

Возможны три способа организации циклических структур алгоритмов:

1) цикл “повторять ... до” (цикл с постусловием);

2) цикл “пока” (цикл по условию или цикл с предусловием);

3) счетный цикл (цикл с управляющей переменной).

Схема реализации таких циклов представлена на рис. 1.

Рис. 1. Схемы организации циклов:

а – цикл с постусловием (проверка условия после тела цикла),

б – цикл с предусловием (проверка условия перед телом цикла),

в – счетный цикл (цикл с известным числом повторений)

 

В VBA циклы можно задать двумя способами:

– с использованием оператора цикла FOR ... NEXT;

– с использованием оператора цикла DO ... LOOP;

 

25. Оператор цикла For ... Next

 

Цикл For...Next используется, когда необходимо повторить действие или ряд действий заданное количество раз, известное до начала выполнения цикла.

Цикл For...Next имеет следующий синтаксис:

For счетчик = Начало To Конец [Step Шаг]

[Операторы цикла]

Next счетчик

 

Счетчик – любая переменная, по которой организован цикл.

В квадратных скобках указан не обязательный параметр.

По умолчанию VBA увеличивает счетчик на 1 каждый раз при выполнении операторов в цикле (шаг по умолчанию равен 1). Если нужно другое значение шага надо включать в оператор For необязательное ключевое слово Step.

При выполнении цикла For...Next VBA поступает следующим образом:

– присваивает значение Начало счетчику;

– выполняет все операторы, представленные с помощью Операторы цикла,пока не достигнет ключевого слова Next, которое указывает VBA на то, что достигнут конец тела цикла;

– изменяет счетчик на величину Шаг (если включается необязательное ключевое слово Step); если Step не определено, то VBA увеличивает переменную на 1;

– возвращается к началу цикла и сравнивает текущее значение счетчика со значением Конец. Если значение счетчикаменьше или равно Конец, VBA выполняет цикл снова. Если значение счетчика больше значения Конец,VBA продолжает выполнение кода с первого оператора после ключевого слова Next.

Если Шаг >0, то такой цикл называется циклом с возрастающим счетчиком, если Шаг <0 – цикл с убывающим счетчиком. В последнем случае Начало должно быть больше Конец.

Цикл For...Next выполняется только в том случае, если начальное значение счетчика цикла плюс шаг изменения значения счетчика меньше или равно конечному значению счетчика. Если конечное значение счетчика меньше начального значения, то шаг должен быть отрицательным. Цикл выполняется до тех пор, пока текущее значение счетчика не выйдет за рамки конечного значения. При завершении текущего цикла к значению счетчика прибавляется значение шага. Если начальное значение и конечное значение счетчика имеют одно и то же значение, цикл выполняется один раз, вне зависимости от значения шага. Если шаг равен нулю, цикл продолжается неопределенное количество раз.

 

26. Оператор неопределенного цикла Do ... Loop

 

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

Две базовые категории конструкций цикла Do – это циклы, которые тестируют условие до выполнения тела цикла, и циклы, которые тестируют условие после выполнения тела цикла.

 

– цикл Do ... Loop с проверкой условия в начале:

 

В приведенном цикле проверка осуществляется через ключевое слово While. Цикл работает пока условие истинно. Как только условие становится ложным, цикл прекращает свою работу.

Do While условие

[блок_операторов]

Loop

В приведенном цикле проверка осуществляется через ключевое слово Until. Цикл работает пока условие ложно. Как только условие становится истинным, цикл прекращает свою работу.

Do Until условие

[блок_операторов]

Loop

 

– цикл Do ... Loop с проверкой условия в конце:

Do

[блок_операторов]

Loop While условие

 

Do

[блок_операторов]

Loop Until условие

Таким образом, общий вид цикла Do…Loop можно представить в виде:

  Цикл “ПОКА” Цикл “ДО”
цикл с пост- условием parametr = начало shag = шаг DO [блок операторов – тело цикла] parametr = parametr + shag LOOP WHILE условие   parametr = начало shag = шаг DO [блок операторов – тело цикла] parametr = parametr + shag LOOP UNTIL условие  
цикл с пред- условием parametr = начало shag = шаг DO WHILE условие [блок операторов – тело цикла] parametr = parametr + shag LOOP   parametr = начало shag = шаг DO UNTIL условие [блок операторов – тело цикла] parametr = parametr + shag LOOP  

 

Здесь parametr – переменная, по которой организован цикл (параметр цикла); shag – шаг изменения значения переменной цикла.

 

Табулирование функции

 

Задача табулирования некоторой функции y = f(x) сводится к вычислению значений этой функции при параметре цикла х, изменяющемся в заданных пределах с постоянным шагом. На печать при этом выводится множество пар значений аргумента х и функции у с помощью оператора печати, расположенного внутри тела цикла.

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

 

Вычисление суммы

 

Вычисление конечной суммы сводится к нахождению суммы заданного количества слагаемых:

,

где i – номер слагаемого; f(i) – слагаемое с номером i.

Вычисление организуется в виде циклического алгоритма, когда при каждом прохождении цикла номер слагаемого i увеличивается на 1, а сумма изменяется на величину i-го слагаемого:

 

.

 

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

Алгоритм нахождения суммы представлен на рис. 2.

 

 

Рис. 2. Вычисление суммы

 

Рис. 3. Вычисление произведения

 

Вычисление произведения

Вычисление конечного произведения представляет собой процесс нахождения произведения заданного количества сомножителей по формуле

.

Как и суммирование, вычисление произведения организуется с помощью циклического процесса по рекуррентному соотношению

.

В отличие от суммирования начальное значение произведения должно быть равно единице.

Алгоритм нахождения произведения представлен на рис. 3.

Пример. Вычислить факториал числа N.

Формула для вычисления факториала имеет вид:

.

Как видно из формулы, вычисление факториала числа N сводится к нахождению произведения n сомножителей.

 

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти