русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Оператор Do... Loop


Дата добавления: 2015-07-23; просмотров: 1622; Нарушение авторских прав


Для выполнения оператора For необходимо задать параметры (эти параметры могут вычисляться или задаваться во время выполнения программы, как в последней процедуре), которые точно определяют, сколько раз должен выполняться оператор цикла. Иногда это свойство оператора For является ограничительным, и в этом случае VBA предлагает другой оператор - Do... Loop, который также может организовать повторяющиеся вычисления, но момент прекращения вычислений здесь определяется с помощью логических условий. Существует два типа операторов Do: Do While и Do Until. Первый из них повторяет выполнение блока операторов до тех пор, пока заданное логическое условие истинно. Второй оператор, Do Until, выполняет циклические вычисления до тех пор, пока изначально ложное логическое условие не станет истинным. Синтаксис этих операторов следующий.

Синтаксис 1:

Do [{While | Until} условие]

[операторы]

[Exit Do]

[операторы]

Loop

Синтаксис 2:

Do

[операторы]

[Exit Do]

[операторы]

Loop [{While | Until} условие]

Различие между этими двумя синтаксисами весьма тонкое. В соответствии с синтаксисом 1 логическое условие помещается в начало цикла. В этом случае, если логическое условие не выполняется, то операторы цикла не выполняются ни разу. Во втором синтаксисе логическое условие помещено в конце цикла. Поэтому операторы цикла в любом случае будут выполнены хотя бы один раз. Оператор Exit Do используется для экстренного выхода из цикла, обычно для этого применяются условные операторы If и Select Case.

Для создания процедуры с использованием оператора Do выполните следующие действия.

  1. Вставьте в текущий модуль новую процедуру и назовите ее ВводИмени. В этой процедуре пользователю предлагается ввести свое имя или выйти из программы.
  2. Введите код процедуры:

Dim sName As String

Dim iResponse As Integer



sName = “”

Do While sName = “”

sName = InputBox(“Введите свое имя: “)

If sName = “” Then

iResponse = MsgBox (“Вы хотите выйти из программы?”, vbYesNo)

If iResponse = vbYes Then

Exit Do

End If

End If

Loop

Как вы помните, при щелчке на кнопке Отмена функция InputBox возвращает пустую строку, а метод Application.InputBox - значение False (Ложь).

  1. Выполните процедуру.
  2. В окне ввода щелкните на кнопке Отмена или, не вводя значения, нажмите клавишу <Enter>. Появится окно сообщения, спрашивающее, хотите ли вы выйти из программы.
  3. Щелкните на кнопке Нет. Окно ввода появится снова. Введите свое имя и нажмите клавишу <Enter>. Процедура закончится.

В 4-м часе "Переменные и константы" мы познакомились с массивами, а также с такой их разновидностью, как динамические массивы. Динамические массивы позволяют изменять свои размеры во время выполнения программы. Их часто используют совместно с оператором Do... Loop, как показано в следующем примере.

  1. Вставьте новую процедуру с именем СписокИмен. Эта процедура предназначена для ввода списка имен (количество имен заранее не известно), которые записываются в динамический массив.
  2. Код процедуры СписокИмен следующий:

Dim iCount As Integer

Dim sNames() As String

Dim iResponse As Integer



Dim i As Integer

iResponse = vbYes

Do While iResponse = vbYes

iCount = iCount + 1

ReDim Preserve sNames(iCount) As String

sNames(iCount) = InputBox("Введите имя")

If sNames(iCount) = "" Then

iResponse = MsgBox("Продолжить?", vbYesNo)

If iResponse = vbYes Then

sNames(iCount)= InputBox ("Введите имя")

End If

End If

Loop

For i = 1 To iCount - 1

MsgBox i & "-e имя "&" - "& sNames(i)

Next

  1. Выполните процедуру. Первое окно ввода показано на рис. 7.3.
  2. Введите три имени, нажимая после ввода каждого клавишу <Enter>.
  3. Щелкните на кнопке Отмена. Появится окно сообщения с вопросом "Продолжим?".
  4. Щелкните на кнопке Нет. Появится новое окно сообщения с первым введенным именем.
  5. Щелкните на кнопке ОК. Отобразится следующее окно сообщения со вторым введенным именем.
  6. Щелкните на кнопке ОК. Отобразится окно сообщения с третьим введенным именем.
  7. Щелкните на кнопке ОК. Выполнение процедуры закончится.

Рис. 7.3. Первое окно ввода.

Полный код процедуры СписокИмен приведен в листинге 7.1.



<== предыдущая лекция | следующая лекция ==>
Й час. Циклические вычисления | Листинг 7.1. Процедура СписокИмен


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.045 сек.