Повторение действий с помощью цикла

 

Цикл — это инструмент, позволяющий повторять операцию столько раз, сколько нужно. В языке Visual Basic есть несколько типов циклов, которые можно использовать. Наиболее популярны блоки Do/Loop и For /Next, и в этом разделе вы познакомитесь с обоими.

Далее приведен пример блока Do/Loop, который наверняка выведет читателей из равновесия:

Do

MsgBox "Ever ever get that nagging deja vu feeling?" Loop

Когда программа Access обрабатывает этот код, она начинает с вывода окна сообщения и остановки выполнения остального вашего кода. После того как вы щелкнули мышью кнопку ОК, выполнение кода продолжается до финального оператора Loop в конце цикла. В этот момент программа автоматически переходит к началу цикла (оператор Do) и повторяет ваш код, выводя второе окно сообщения. Проблема в том, что этот процесс продолжается бесконечно! Если допустить ошибку и запустить этот код, ваша БД будет заблокирована на неопределенное время (пока вы не нажмете комбинацию клавиш аварийного останова <Ctrl>+<Break>).

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

‘ Отслеживает количество повторений цикла

Dim NumberOfTimes

 

‘ Начинает отсчет с 0

NumberOfTimes = 0

 

Do

MsgBox "Ever ever get that nagging deja vu feeling?"

 

‘ Увеличивает счетчик на 1

NumberOfTimes = NumberOfTimes + 1

Loop Until NumberOfTimes =5

 

Важная часть — оператор в конце цикла, Until Number0fTimes=5. Он определяет условие, и как только оно становится True (значение переменной NumberOfTimes равно 5), программа Access достигает конца цикла и переходит к выполнению оставшегося кода процедуры.

Если вам нужен цикл с фиксированным количеством повторений, возможно, вас заинтересует цикл типа For/Next. Этот тип цикла в точности такой же, как цикл Do/Loop за исключением того, что у него есть встроенный счетчик, увеличивающийся автоматически при каждом проходе цикла.

Теперь можно переписать предыдущий пример в более компактной форме с применением цикла For/Next:

Dim NumberOfTimes

For NumberOfTimes = 1 To 5

MsgBox  "Ever ever get that nagging deja vu feeling?"

Next

Важная часть цикла – оператор NumberOfTimes=l To 5, сообщающий программе Access о начальном значении переменной NumberOfTimes, равном 1, о необходимости увеличения ее значения на 1 при каждом проходе цикла и о завершении цикла после пятого прохода.

Цикл Do/Loop удобен при обработке коллекции данных. Его можно применять для обработки информации до тех пор, пока она не иссякнет, даже если заранее вы не знаете, сколько данных у вас есть. Вы увидите пример использования этого метода в конце данной главы, когда будете выполнять пакетное обновление вашей БД с помощью программного кода.

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

 

 

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100