Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Циклические управляющие структуры




Подробно рассмотрим особенности синтаксической реализации управляющий структур повторения в ЯП. Все операторы цикла в ЯП можно разделить на два вида по принципу завершения цикла: условные циклы (conditional loops), итерации, которых определяется состоянием логической переменной или выражения и счетные циклы (counting loops), число повторений которых определяется значением переменной-счетчика цикла.

 

Реализация циклических управляющих структур в VB

 

В VB поддерживаются условные циклы, синтаксически реализованные с помощью оператора DO…LOOP. Используя, этот оператор можно повторно выполнять блок операторов неопределенное число раз. Имеется две разновидности этого оператора – оператор с пред- и постусловием (pre-condition and post-condition). Формат оператора с предусловием имеет вид:

 

Do While <condition>

<statements>

Loop

 

Этот оператор выполняет операторный блок <statements> до тех пор пока выражение <condition> не станет ложным. Обработка выражения <condition> выполняется до начала вхождения в операторный блок (тело цикла) и в случае, если перед началом цикла оно возвращает значение FALSE, тело цикла не будет выполнено ни одного раза. В следующем примере цикл с предусловием будет выполняться до тех пор пока выражение в первом операторе присваивания не возвратить случайное значение больше 98:

x = 0

i = 1

Do While x <= 98

x = Int(Rnd * 99 + 2)   ′случайные числа 2...101

ActiveSheet.Cells(1, i) = x

i = i + 1

Loop

 

Цикл с постусловием имеет похожий синтаксис:

 

Do

<statements>

Loop While <condition>

 

В таком цикле проверка условия выполняется после тела цикла, поэтому при любом значении возвращаемым выражением <condition>, будет выполнена хотя бы одна итерация (шаг) цикла. Ключевое слово WHILE в условных операторах может быть заменено на ключевое слово UNTIL, тогда условие завершения цикла может быть заменено на противоположное.

Условные циклы удобны, если заранее не известно сколько раз необходимо выполнять операторы тела цикла. В противном случае, при изначально известном числе шагов цикла, лучшим выбором для построения алгоритмической конструкции повторения является счетный цикл, который строится в VB с помощью связки ключевых слов FOR…NEXT:  

 

For <counter> = <start> To <end> [Step <increment>]

<statements>

Next[<counter>]

 

где <counter> – числовая переменная целого или реального типа, <start> – выражение, возвращающее числовое значение, которое определяет начальное значение счетной переменной, <end> – выражение, определяющее значение счетной переменной при которой цикл завершается, <increment> – необязательный элемент цикла – выражение, константа или литерал, определяющее приращение счетной переменной на каждой итерации цикла. По умолчанию если ключевое слово STEP пропущено, то счетная переменная принимает единичное приращение.

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

 

Dim Words, Chars, MyString  

For Words = 10 To 1 Step -1            

For Chars = 0 To 9           

MyString = MyString & Chars ' присоединяем число к строке

Next Chars             

MyString = MyString & " "     ' добавляем «пробел»

Next Words

 

В данном фрагменте формируется строка из повторяющихся цифр от 0 до 9, состоящая из десяти фрагментов разделенных пробелом. Внутренний цикл выполняет 10 итераций, при которых переменная Chars последовательно принимает значения от 0 до 9. В теле внутреннего цикла формируется фрагмент строки вида «0123456789». Внешний цикл, использующий переменную Words в качестве счетной изменяя ее значение от 10 до 1 декрементируя ее с шагом 1. В теле внешнего цикла к строке сформированной во внутреннем цикле добавляется символ пробела.

Для реализации сложных алгоритмов с использованием циклических управляющий структур в развитых ЯП предусмотрены операторы прерывания (breaking)и продолжения (continuation) цикла. Оператор прерывания цикла позволяет досрочно его завершить и передать управление на оператор, следующий за циклической структурой. Такой оператор аналогичен упоминавшемуся ранее оператору BKEAK в ЯП С/С++.

В VB имеется ряд специальных операторов завершения цикла: оператор EXIT DO для выхода из условного цикла и EXIT FOR для выхода из счетного цикла FOR…NEXT. Например

 

Dim I, MyNum

Do                              ' Бесконечный условный цикл 

   For I = 1 To 1000   ' Счетный цикл

       MyNum = Int(Rnd * 1000) ' Генерируем случайное число

         Select Case MyNum   ' Оцениваем случайное число

           Case 7: Exit For ' Если 7, то выход из For

           Case 29: Exit Do ' Если 29, то выход из Do

       End Select

   Next I

Loop

 

Однако в VB отсутствуют операторы продолжения цикла. Выполнение такого оператора приводит к передачи управления на начало цикла, а также к новой проверки условия завершения цикла или изменению счетчика цикла. Для реализации подобных действий в VB можно воспользоваться оператором безусловного перехода (unconditional branch) – GOTO. Оператор безусловного перехода предназначен для безусловной передачи управления в определенную точку программы. Такая точка передачи управления задается в данном операторе с помощью операнда, которым должен быть символьное имя строки программы, на который выполняется переход. Формат данного оператора имеет следующий вид:

 

GoTo  <line>

 

где <line> – идентификатор метки программы, которая именует точку передачи управления. Метка в программе на VB представляется символьным именем, которое может совпадать с идентификаторами объектов программы, за которым следует символ двоеточия. Например:

 

MyLabel:

. . .

GoTo  MyLabel

 

Таким образом, организация алгоритмических управляющих структур повторения в VB, мало чем отличается от реализации циклов в других ЯП, за исключением отсутствия встроенного оператора продолжения цикла.










Последнее изменение этой страницы: 2018-04-12; просмотров: 507.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...