END SELECT
END IF
ELSE
END IF
В отличие от строчной, блочная форма оператораIF … THEN допускает использование нескольких условий, после каждого из которых следует (необязательный) блок операторов, выполняющийся только в случае истинности соответствующего выражения. Следующее условие проверяется только в случае ложности предыдущего. В случае же истинности одного из условий (и последующего выполнения соответствующего блока операторов) никакие дальнейшие условия блочного оператора IF … THEN уже не проверяются, а выполнение программы продолжается с оператора, следующего за ключевым словом END IF.
Исчерпывающее рассмотрение базовой управляющей алгоритмической структуры «Ветвление» даётся в практикуме [20]. Мы же ограничимся приведением ещё одного примера, комментарии к которому могут быть составлены заинтересованным читателем самостоятельно:
IF рейтинг < 55 THEN
итог = «неудовлетворительно»
ELSEIF рейтинг < 70 THEN
итог = «удовлетворительно»
ELSEIF рейтинг < 85 THEN
итог = «хорошо»
итог = «отлично»
11.3 Оператор выбора варианта *
Разновидность структуры «ветвление» – выбор одного из нескольких блоков – показана на рисунке 11.2. Реализуется эта структура оператором выбора варианта SELECT CASE … END SELECT. Логика работы оператора выбора очень похожа на блочную форму оператораIF … THEN. Также выполняется только один из нескольких блоков операторов (вычислительных процессов). Отличие заключается в том, что все условия выбора связаны с проверкой значения одного общего тест-выражения, а в условиях оператораIF … THEN могут проверяться совершенно независимые значения.
Рис. 11.2. Структура «выбор»
Приведём синтаксис оператора SELECT CASE … END SELECT, который выполняет один из нескольких блоков операторов (на рис. 11.2 – процессов) в зависимости от значения тест-выражения:
SELECT CASE тест_выражение
CASE список_выражений_1
[блок_операторов_1]
[CASE список_выражений_2
[блок_операторов_2]]
…
[CASE ELSE
[блок_операторов_иначе]]
В качестве тест-выражения может выступать любое числовое или даже строковое выражение. А выбор блока операторов осуществляется последовательным сравнением значения тест-выражения со списками выражений, которые могут содержать один или более разделённых запятыми элементов, каждый из которых относится к одному из трёх видов: выражение, определяющее единственное значение; пара выражений, разделённых ключевым словом TО и определяющая ограниченный значениями этой пары диапазон; выражение, начинающееся с ключевого слова IS и следующего за ним знака операции отношения (сравнения), также определяющее соответствующий диапазон.
Работу оператора SELECT CASE … END SELECT можно проиллюстрировать на примере следующего фрагмента программы, запускаемой щелчком по кнопке и выполняющей пересчёт рейтинговой оценки из стобалльной шкалы в четырёхбалльную:
Select Case Rating' тест-выражение
Case Is< 0, Is > 100 ' выбор по списку_выражений
txtОценка.Value = "Вне диапазона"
Case Is >= 85 ' "Отлично", если Rating>= 85
txtОценка.Value = "Отлично"
Case70 To 85 ' "Хорошо", если Ratingв диапазоне 70 – 85
txtОценка.Value = "Хорошо"
Case Is >= 55 ' не хорошо, но вполне удовлетворительно
txtОценка.Value = "Удовлетворительно"
Case Else ' иначе – всё, что осталось…
txtОценка.Value = "Неудовлетворительно"