Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Особенности работы с управляющими структурами

<< Оглавление

Особенности работы с управляющими структурами

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

Option Explicit
Dim intI As Integer, intJ As Integer
Dim intX As Integer
Dim intAdd(1 To 10, 1 To 10) As Integer
Dim intMult(1 To 10, 1 To 10) As Integer

Private Sub Form_Load()
If intX = 0 Then
    For intI = 1 To 10
        For intJ = 1 To 10
        intAdd(intI, intJ) = intI + intJ
    Next intJ, intI
Else
    For intI = 1 To 5
        For intJ = 1 To 5
        intMult(intI, intJ) = intI * intJ
    Next intJ, intI
End If
End Sub

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

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

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

Возможные системные сообщения при возникновении описанной ошибки компиляции:

  • Block If without End If - Отсутствие End If для блока If
  • Else without If - Использование Else без If
  • End If without block If - Отсутствие блока If для End If
  • For without Next - Использование For без Next
  • Next without For - Использование Next без For
  • Do without Loop - Использование Do без Loop
  • Loop without Do - Использование Loop без Do

В том случае, когда необходимо прервать выполнение цикла, применяются разновидности оператора Exit, который располагается в конструкции принятия решения. При этом для цикла For:Next используется Exit For, а для любого из циклов Do:Loop применяется Exit Do. После выполнения данного оператора происходит немедленное завершение цикла без выполнения, каких либо дополнительных операций.

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

Например:

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

Option Explicit
Dim intArray(1 To 10) As Integer
Dim intI As Integer
Dim intResult As Integer

Private Sub Form_Load()
'Вывод элементов массива
For intI = 1 To 10
    If intArray(intI) > 0 Then
        intResult = intArray(intI)
Exit For
    End If
Next
'Теперь в переменной intI
'содержится значение индекса
'найденного элемента массива
End Sub

Оглавление

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог