logo search
Информатика_ЗФ / 2013_Информатика УМО_легпром

Оператор выбора варианта*

Разновидность структуры «ветвление» – выбор одного из нескольких блоков – показана на рисунке 11.2. Реализуется эта структура оператором выбора варианта SELECT CASE … END SELECT. Логика работы оператора выбора очень похожа на блочную форму оператора IF … THEN. Также выполняется только один из нескольких блоков операторов (вычислительных процессов). Отличие заключается в том, что все условия выбора связаны с проверкой значения одного общего тест-выражения, а в условиях оператора IF … THENмогут проверяться совершенно независимые значения.

Рис. 11.43.Структура «выбор»

Приведём синтаксис оператора SELECT CASE … END SELECT, который выполняет один из нескольких блоков операторов (на рис. 11.2 – процессов) в зависимости от значениятест-выражения:

SELECT CASEтест_выражение

CASEсписок_выражений_1

[блок_операторов_1]

[CASEсписок_выражений_2

[блок_операторов_2]]

[CASEELSE

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

ENDSELECT

В качестве тест-выражения может выступать любое числовое или даже строковое выражение. А выбор блока операторов осуществляется последовательным сравнением значения тест-выражения со списками выражений, которые могут содержать один или более разделённых запятыми элементов, каждый из которых относится к одному из трёх видов: выражение, определяющее единственное значение; пара выражений, разделённых ключевым словом TОи определяющая ограниченный значениями этой пары диапазон; выражение, начинающееся с ключевого словаISи следующего за ним знака операции отношения (сравнения), также определяющее соответствующий диапазон.

Работу оператора SELECT CASE … END SELECTможно проиллюстрировать на примере следующего фрагмента программы, запускаемой щелчком по кнопкеи выполняющей пересчёт рейтинговой оценки из стобалльной шкалы в четырёхбалльную:

Select Case Rating ' тест-выражение

Case Is < 0, Is> 100 'выбор по списку_выражений

txtОценка.Value = "Вне диапазона"

Case Is >= 85 '"Отлично",еслиRating >= 85

txtОценка.Value = "Отлично"

Case 70To85 '"Хорошо",еслиRating в диапазоне 70 – 85

txtОценка.Value = "Хорошо"

Case Is >= 55 'не хорошо, но вполне удовлетворительно

txtОценка.Value = "Удовлетворительно"

Case Else ' иначе – всё, что осталось…

txtОценка.Value = "Неудовлетворительно"

End Select

Результат выполнения программы при значении тест-выражения равном 77 представлен на рисунке 11.3.

Рис. 11.44. Форма с результатом для примера 2

Забегая немного вперёд и используя терминологию объектно-ориентированного программирования, поясним, что идентификатор txtОценка.Valueв приведённом фрагменте означает содержимое текстового поля (значениесвойстваValueобъектаTextBoxс именемtxtОценка). Текстовые поля и другие объекты-элементы управления (метки –Label, командная кнопка –CommandButton, рисунок –Image) размещены на форме пользователя (объектUserFormс именемПример2_Select)