Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Оператор цикла For Each… Next

Next j

Цикл For…Next

End Select

Case Else

End Select

Case Else

(операторы, выполняемые, когда значение не удовлетворяет ни одному из приведенных критериев)

Если значение свойства не будет удовлетворять ни одному из критериев в операторах Case, то управление перейдет к оператору Case Else, который всегда находится в самом конце структуры Select Case.

 

Пример оператора условного перехода Select Case:

 

Select Case objFilm.Type

Case "Слайдовая"

Слайдовая = Слайдовая +1

Case "Цветная негативная"

ЦветнаяНегативная = ЦветнаяНегативная + 1

Case "ЧБ негативная"

ЧБНегативная = ЧБНегативная + 1

MsgBox "Неизвестный тип пленки"

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

- For…Next - заданное число раз;

- For Each…Next - для каждого объекта из семейства объектов;

- Do…Loop - до тех пор, пока некоторое условие имеет значение True;

Циклы могут быть вложенными: один – внутри другого.

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

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

В процессе выполнения переменная Счетчик хранит информацию о числе выполненных проходов цикла. Синтаксис цикла:

For Счетчик = начало To конец

(операторы, выполняющиеся при каждом проходе цикла)

Next Счетчик

Пример цикла For…Next

Dim j As Integer

For j = 1 To 10

Debug.Print "Дубль № " & j 'печать в окне отладки

В окне отладки "Интерпретация" визуализируется текст:

Дубль № 1, Дубль № 2,… Дубль № 10

Перед каждым проходом цикла Visual Basic сравнивает значения счетчика и аргумента "Конечное значение". Если значение счетчика не превышает установленно­го конечного значения, то выполняются конструкции тела цикла. В противном случае управление переходит к оператору, следующему за оператором Next.

Переменная Счетчик должна быть числового типа и допускать операции больше (>), меньше (<) и сложение (+).

Пример вложенных циклов For…Next

Dim А, В, C As Integer

Randomize 'инициализация генератора случайных чисел

For A = 1 To 5 'начало внешнего цикла For…Next

C = Rnd() 'присвоение C 'случайного значения

For B = 1 To 10 'начало внутреннего цикла

MsgBox(C * Rnd()) 'создание и отображение 10 'случайных чисел

Next B 'завершение внутреннего цикла после

'выполнения 10 вычислений

Next A 'завершение внешнего цикла после 5 вычислений

 

Составляя, например, программу воспроизведения музыкальных произведений можно таким образом сформировать случайный выбор 10 фрагментов из 5 компакт-дисков.

Операции, которые выполняет программа:

- предварительная подготовка – код начинается с объявления переменной sngC и инициализации генератора случайных чисел;

- начало внешнего цикла For…Next: вызов функции Rnd(), чтобы присвоить переменной sngC случайное значение;

- начало внутреннего цикла For…Next: этот цикл вычисляет 10 других чисел, повторяя вызов функции Rnd при каждом проходе цикла. Результат отображается в окне Immediate отладки (Debug);

- завершение внутреннего цикла после выполнения им всех 10 вычислений.

После этого, подчиняясь оператору Next A, программа возвращается к началу внешнего цикла, и второй и третий шаги повторяются еще 4 раза.

Пример работы с одномерным массивом

Оператор For… Next важен при работе с фиксированными массивами, в частности при заполнении их множеством значений.

В примере рассматривается объявление одномерного массива, заполнение его значениями в соответствии с выбранной формулой и визуализация в окне MsgBox():

 

Dim intКвадраты(15) As Integer 'Объявление массива

For a = 0 To 15

intКвадраты(a) = a*a ' Заполнение массива значениями

MsgBox("Квадрат "& a & " = " & intКвадраты(a)) 'визуализация массива

Next а

 

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

 

Замечания по поводу циклов For…Next

Для понятности кода следует начинать цикл For… Next с единицы.

Исключения могут быть, когда работа проводится с массивом. В этом случае первый номер петли цикла выбирается равным 0.

В операторе Next, завершающем цикл For… Next, имя переменной счетчика в принципе указывать необязательно, т. к. ключевое слово Next автоматически вычислит следующее значение счетчика и отошлет программу в начало структуры. Но всё-таки имя счетчика необходимо включать в оператор Next, т. к. в этом случае при вложенных циклах For… Next можно сразу опознать, какому циклу принадлежит данный оператор Next.

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

 

Ключевым различием в использовании For Each… Next и For … Next является то, что в циклеFor Each… Next не требуется указывать число повторений.

Такой тип цикла применяется тогда, когда точное количество объектов в группе заранее неизвестно, например, в динамическом массиве.

В операторе For Each (для каждого элемента в группе) с помощью переменной элемент определяется тип объекта в семействе, а с помощью аргумента группа задается семейство, с которым нужно работать.

Синтаксис цикла For Each… Next:

For Each элемент in группа

(операторы, выполняемые при каждом проходе цикла)

Next элемент

Пример использования цикла For Each… Next

Например, группа (коллекция) Народ содержит неопределённое количество элементов Имя, которые отображаются с использованием цикла For Each… Next.

При выполнении программного кода Имя (тип String) каждого объекта может визуализироваться как, например, в окне сообщений отладки MsgBox, так и в окне Вывод с помощью оператора Console.WriteLine()

Dim Народ() = {"Антон", "Герман", "Сильвия"}

For Each Имя As String In Народ

MsgBox("Имя - " & Имя)

Console.WriteLine("Имя - " & Имя)

Next

Элементы семейства могут быть данными любого типа. При выполнении цикла For Each… Next порядок прохождения элементов в цикле не определён.

<== предыдущая лекция | следующая лекция ==>
Конструкция Select Case | Пакеты офисных программ Microsoft Office 2003 и 2007
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 1023; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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