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

[блок_операторов_иначе]]

 

В качестве тест-выражения может выступать любое числовое или даже строковое выражение. А выбор блока операторов осуществляется последовательным сравнением значения тест-выражения со списками выражений, которые могут содержать один или более разделённых запятыми элементов, каждый из которых относится к одному из трёх видов: выражение, определяющее единственное значение; пара выражений, разделённых ключевым словом и определяющая ограниченный значениями этой пары диапазон; выражение, начинающееся с ключевого слова 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 = "Неудовлетворительно"