|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Переключатели. Основным средством для организации мультиветвления служит оператор-переключатель, формат которого имеет вид:
Основным средством для организации мультиветвления служит оператор-переключатель, формат которого имеет вид:
switch (выражение) { case константа1: операторы_1; case константа2: операторы_2; default: операторы; }
В этом операторе используются три служебных слова: switch, case, default. Первое из них идентифицирует собственно оператор-переключатель. Служебное слово case с последующей константой является в некотором смысле меткой. Константы могут быть целыми или символьными и все должны быть различными (чтобы метки были различимы). Служебное слово default также обозначает отдельную метку. При выполнении оператора (рис. 2.6, а) вычисляется выражение, записанное после switch, и его значение последовательно сравнивается с константами, которые помещены вслед за case. При первом же совпадении выполняются операторы, помеченные данной меткой. Если выполненные операторы не предусматривают какого-либо перехода (т.е. среди них нет ни goto, ни return, ни exit(), ни break), то далее выполняются операторы всех следующих вариантов, пока не появится оператор перехода или не закончится переключатель.
Рис. 2.6. Переключатель (а) и альтернативный выбор (6): а - если выражение равно МК, то выполняются операторы Sk, Sk+1 S n, S; б - если выражение равно LK, то выполняются только операторы Sk
Операторы вслед за default выполняются, если значение выражения в скобках после switch не совпало ни с одной константой после case. Метка default может в переключателе отсутствовать. В этом случае при несовпадении значения выражения с константами переключатель не выполняет никаких действий. Операторы, помеченные меткой default, не обязательно находятся в конце (после других вариантов переключателя). Уточним, что default и" case константа" не являются метками в обычном смысле. К ним, например, нельзя перейти с помощью оператора goto. На рис. 2.6 приведены схемы переключателя (рис. 2.6, а) и оператора альтернативного выбора или селектора (рис. 2.6, б), отсутствующего в языке Си. На рис. 2.7 изображена схема альтернативного выбора, реализованная при помощи переключателя и дополнительных операторов, введенных в S1, S2,..., Sn.
Рис. 2.7. Альтернативный выбор с использованием переключателя. В число операторов каждой группы Sk добавлен оператор выхода из переключателя
Для иллюстрации работы переключателя рассмотрим программу, которая читает любую десятичную цифру и выводит на экран ее название:
Пример результатов выполнения программы:
Программа прекращает выполнение, как только будет введен символ, отличный от цифры. Завершение программы обеспечивает оператор return; который в данном случае передает управление операционной системе, так как выполняет выход из функции main (). Переключатель вместе с набором операторов break реализует в этой программе альтернативный выбор (см. рис. 2.7). Если удалить все операторы break, то работа переключателя в этой программе будет соответствовать схеме рис. 2.6, а. Несколько "меток" case с разными значениями констант могут помечать один оператор внутри переключателя, что позволяет еще больше разнообразить схемы построения операторов switch. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |