|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Оператор выбора альтернатив (переключатель)Оператор switch (переключатель) предназначен для разветвления процесса вычислений на несколько направлений. Общий вид оператора: switch (выражение) { case константа 1: список операторов 1 case константа 2: список операторов 2 ... case константаN: список операторов N default: список операторов N +1 – необязательная ветвь; }
Выполнение оператора начинается с вычисления выражения, значение которого должно быть целого или символьного типа. Это значение сравнивается со значениями констант и используется для выбора ветви, которую нужно выполнить. В данной конструкции константы фактически выполняют роль меток. Если значение выражения совпало с одной из перечисленных констант, то управление передается в соответствующую ветвь. После этого, если выход из переключателя в данной ветви явно не указан, последовательно выполняются все остальные ветви. Все константы должны иметь разные значения, но быть одного и того же типа. Несколько меток могут следовать подряд, и тогда переход в указанную ветвь будет происходить при совпадении хотя бы одной из них. Порядок следования ветвей не регламентируется. В случае несовпадения значения выражения ни с одной из констант выбора происходит переход на метку default либо, при ее отсутствии, к оператору, следующему за оператором switch. Управляющий оператор break (разрыв) выполняет выход из оператора switch. Если по совпадению с каждой константой должна быть выполнена одна и только одна ветвь, схема оператора switch следующая: switch (выражение) { case константа1: операторы 1; break; case константа2: операторы 2; break; ... case константа N: операторы N; break; default: операторы (N +1); break; } Структурная схема рассмотренной конструкции (с использованием оператора break) приведена на рис. 6.4.
Пример оператора switch с использованием оператора break: void main(void) { int i = 2; switch(i) { case 1: puts ("Случай 1. "); break; case 2: puts ("Случай 2. "); break; case 3: puts ("Случай 3. "); break; default: puts ("Случай default. "); break; } } Результатом выполнения данной программы будет: Случай 2. Аналогичный пример без использования оператора break (схема общего вида такой конструкции приведена рис. 6.5): void main() { int i = 2; switch(i) { case 1: puts ("Случай 1. "); case 2: puts ("Случай 2. "); case 3: puts ("Случай 3. "); default: puts ("Случай default. "); } } В данном случае результат будет следующим: Случай 2. Случай 3. Случай default.
Пример реализации простейшего калькулятора на четыре действия с контролем правильности ввода символа нужной операции. Ввод данных осуществляется следующим образом: операнд 1, символ нужной операции, операнд 2. Текст программы может быть следующим: #include <stdio.h> void main(void) { double a, b, c; char s; m1: fflush(stdin); // Очистка буфера ввода stdin printf("\n Введите операнд 1, символ операции, операнд 2:"); scanf("%lf%c%lf", &a, &s, &b); switch(s) { case '+': c = a+b; break; case '–': c = a–b; break; case '*': c = a*b; break; case '/': c = a/b; break; default: printf("\n Ошибка, повторите ввод! "); goto m1; } printf("\n a %c b = %lf ", s, c); printf("\n Продолжим? (Y/y) "); s = getch(); if ((s=='Y') || (s=='y')) goto m1; printf("\n Good bye! "); } После запуска программы на экран выводится подсказка, нужно набрать соответствующие значения без пробелов, например, как показано ниже, и нажать клавишу Enter: Введите операнд 1, символ операции, операнд 2: 2.4+3.6 На экран будет выведен результат и дальнейший диалог: a + b = 6.000000 Продолжим? (Y/y) Введя символ y (Y), вернемся в начало функции и на экране вновь появится: Введите операнд 1, символ операции, операнд 2: Если ошибочно ввести – 2r3, появятся следующие сообщения: Ошибка, повторите ввод! Введите операнд 1, символ операции, операнд 2: 2 * 3 a*b = 6.000000 Continue? (Y/y) Нажимаем любую клавишу, кроме y или Y – следует сообщение Good bye! Программа закончена.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.) |