Опубликован: 01.04.2010 | Уровень: для всех | Доступ: платный | ВУЗ: Национальный исследовательский университет "Высшая Школа Экономики"
Лекция 6:

Операторы управления

< Лекция 5 || Лекция 6: 1234 || Лекция 7 >
Аннотация: В лекции рассказывается об управляющих операторах, позволяющих изменить стандартный порядок выполнения операторов: условный оператор If, оператор выбора Select Case. Рассматриваются все виды операторов цикла: For…Next, For Each…Next, Do…Loop, While…Wend.

Любая процедура это последовательность операторов. Стандартный порядок выполнения операторов - последовательный, сверху-вниз или слева-направо, если несколько операторов записаны в одной строке и разделены двоеточием.

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

Управляющие операторы, определяя альтернативный порядок выполнения команд (ветвление) или повторение некоторой совокупности команд (циклы), ограничивают операторными скобками некоторую совокупность команд.

Операторы комментариев и операторы объявления переменных не являются исполнительными операторами.

Условный оператор If

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

Условный оператор может быть записан в одну строку или блоком.

  1. Синтаксис оператора при записи в строку
    If condition Then [statements] [Else elsestatements]

    Например, оператор IF salary <9000 Then social=salary*0.2 вычисляет выплату, если зарплата менее 9000.

  2. Синтаксис оператора при записи блоком
    If condition-1 Then
    [statements]
    [ElseIf condition-2 Then
    [elseifstatements-2] ...
    [Else
    [elsestatements]]
    End If
    • сondition-n - тестируемые выражения со значением True или False. Обязательный элемент;
    • statements, elseifstatements-2, elsestatements - последовательности операторов, необязательные элементы;
    • ElseIf - ключевое слово (записывается в одно слово), используемое для задания дополнительных условий (их может быть несколько). Необязательный элемент;
    • End If - оператор, играющий роль закрывающей операторной скобки.

Если условие ( condition ) верно, то выполняется последовательность операторов statements. Если условие нарушено, при записи оператора в строку выполняется последовательность операторов elsestatements, а при записи оператора блоком конструкция ElseIf позволяет задать дополнительные условия тестирования и, если ни одно из них не выполнено, то выполняются операторы elsestatements.

После выполнения одной последовательности операторов, управление передается оператору, следующему за условным оператором, а в случае блочной структуры - за EndIf.

IF salary <9000 Then
  social=salary*0.2
Else
  social=0
End If

Приведенный в примере оператор вычисляет выплату, если зарплата менее 9000, и устанавливает нулевую выплату в противном случае.

Важно:
  • Комбинируя несколько операторов сравнения, можно создать достаточно сложное логическое выражение.
  • Последовательность выполняемых действий statements, elseifstatements, elsestatements может быть пустой или состоять из нескольких операторов, записанных последовательно в разных строках или через двоеточие в одной строке. По крайней мере, одна из последовательностей должна быть непустой.
  • Часть конструкции, относящаяся к Else и к ElseIf, может быть опущена, если она не используется (нет альтернативных действий).
  • Конструкций ElseIf может быть несколько. При наличии такой конструкции отыскивается первое истинное условие, и выполняются соответствующие операторы elseifstatements.
  • Оператор EndIf обязателен в блочной структуре условного оператора и не используется при записи условного оператора в строку.
  • Возможно использование вложенных условных операторов.

Примеры

  1. Вычисляется сумма четных чисел в интервале значений от 0 до 20 и произведение нечетных чисел в том же интервале.

    Переменная p описана как Long, т.к. значение произведения превосходит число 32767. Начальное значение переменной устанавливается в 1.

    В оператор цикла For вложен условный оператор If. Четность числа проверяется как нулевой остаток от деления на два.

    Пример вычисления суммы и произведения  четных чисел в интервале значений

    Рис. 6.1. Пример вычисления суммы и произведения четных чисел в интервале значений
  2. Первые двадцать ячеек столбца A меняют свой цвет. Если номер ячейки кратен трем, то цвет заливки красный. Для первой ячейки в тройке ячеек, то устанавливается синий цвет заливки. Остальные ячейки окрашиваются черным цветом.

    Запись Cells(i,1) представляет объект Range - ячейку первого столбца i-ой строки. Объект Interior - цвет заливки ячейки. Свойство ColorIndex этого объекта - номер цвета из цветовой палитры.

    Пример раскраски ячеек, значения которых имеют разные остатки от деления на 3

    Рис. 6.2. Пример раскраски ячеек, значения которых имеют разные остатки от деления на 3

При использовании в условии числового выражения нуль интерпретируется как False, а любое значение, отличное от нуля, как True. В условии можно проверить тип выражения или значение переменной, используя специальные функции:

Функция Синтаксис Предназначена для проверки
IsArray IsArray(VarName) является ли переменная VarName массивом
IsDate IsDate(expression) является ли выражение expression датой или может ли быть преобразовано в дату
IsEmpty IsEmpty(expression) инициализирована ли переменная expression или содержит ли выражение (переменная или ячейка) пустое значение
IsMissing IsMissing(argname) пропущен ли аргумент argname процедуры. Используется в процедурах, имеющих необязательные параметры
IsNull IsNull(expression) имеет ли выражение expression значение Null
IsNumeric IsNumeric(expression) является ли значение выражения expression числом
IsObject IsObject(expression) является ли значение выражения expression объектом
< Лекция 5 || Лекция 6: 1234 || Лекция 7 >
Дмитрий Денисов
Дмитрий Денисов

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

Дмитрий Денисов
Дмитрий Денисов

Как записаться на курс, оплатить, не ориентируюсь в программе.

Ранее у Вас учился.

Работаю преподавателем, есть справка. Как получить скидку, т.е. оплата 2000


 

Елизавета Cафронова
Елизавета Cафронова
Россия, Выкса, НИТУ МИССиС
Иван Чуприков
Иван Чуприков
Россия, пгт. Чульман