Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Переменной у будет присвоено значение 100




В примере

Лестница if-else-if

В программах часто используется конструкция, которую называют лестницей if-else-if.

Общая форма лестницы имеет вид

if (выражение) оператор;else if (выражение) оператор; else if (выражение) оператор;... else оператор;

Операция?

В языке С определен мощный и удобный оператор, который часто можно использовать вместо оператора вида if-then-else. Это тернарный оператор?, общий вид которого следующий:

Выражение1? Выражение2: Выражение3;

 

Обратите внимание на использование двоеточия. Оператор? работает следующим образом:

· сначала вычисляется Выражение1,

· если оно истинно, то вычисляется Выражение2 и его значение присваивается всему выражению;

· если Выражение1 ложно, то вычисляется Выражение3 и его значение присваивается всему выражению.

 

x = 10;y = x>9? 100: 200;

Если бы х было меньше 9, то переменной у было бы присвоено значение 200. Эту же процедуру можно написать, используя оператор if-else:

x = 10;if(x>9) y = 100;else y = 200;

Оператор выбора - switch

Оператор выбора switch (часто его называют переключателем) предназначен для выбора ветви вычислительного процесса исходя из значения управляющего выражения. При этом значение управляющего выражения сравнивается со значениями в списке целых или символьных констант. Если будет найдено совпадение, то выполнится ассоциированный с совпавшей константой оператор.

Общая форма оператора switch следующая:

switch (выражение) { case постоянная1: последовательность операторов break; case постоянная2: последовательность операторов break; case постоянная3: последовательность операторов break; default: последовательность операторов;}

Значение выражения оператора switch должно быть таким, чтобы его можно было выразить целым числом. Это означает, что в управляющем выражении можно использовать переменные целого или символьного типа, но только не с плавающей точкой.

Значение управляющего выражения по очереди сравнивается с постоянными в операторах case.

Если значение управляющего выражения совпадет с какой-то из постоянных, управление передается на соответствующую метку case и выполняется последовательность операторов до оператора break. Если оператор break отсутствует, выполнение последовательности операторов продолжается до тех пор, пока не встретится break (в другой метке) или не кончится тело оператора switch (т.е. блок, следующий за switch).

Оператор default выполняется в том случае, когда значение управляющего выражения не совпало ни с одной постоянной. Оператор default также может отсутствовать. В этом случае при отсутствии совпадений не выполняется ни один оператор.

Оператор case — это метка, однако он не может быть использован сам по себе, вне оператора switch.

 

Оператор break — это один из операторов безусловного перехода. Он может применяться не только в операторе switch, но и в циклах, (см. раздел "Операторы цикла"). Когда в теле оператора switch встречается оператор break, программа выходит из оператора switch и выполняет оператор, следующий за фигурной скобкой } оператора switch.

Об операторе switch очень важно помнить следующее:

  • Оператор switch отличается от if тем, что в нем управляющее выражение проверяется только на равенство с постоянными, в то время как в if проверяется любой вид отношения или логического выражения.
  • В одном и том же операторе switch никакие два оператора case не могут иметь равных постоянных. Конечно, если один switch вложен в другой, в их операторах case могут быть совпадающие постоянные.
  • Если в управляющем выражении оператора switch встречаются символьные константы, они автоматически преобразуются к целому типу по принятым в языке С правилам приведения типов.

Оператор switch часто используется для обработки команд с клавиатуры, например, при выборе пунктов меню.

В примере программа выводит на экран меню проверки правописания и вызывает соответствующую процедуру:

void menu(void){ char ch; printf("1. Проверка правописания\n"); printf("2. Коррекция ошибок\n"); printf("3. Вывод ошибок\n"); printf("Для пропуска нажмите любую клавишу\n"); printf(" Введите Ваш выбор: "); ch = getchar(); /* чтение клавиш */ switch(ch) { case '1': check_spelling(); break; case '2': correct_errors(); break; case '3': display_errors(); break; default: printf("Ни выбрана ни одна опция"); }}

С точки зрения синтаксиса, присутствие операторов break внутри switch не обязательно. Они прерывают выполнение последовательности операторов, ассоциированных с данной константой.

Если оператор break отсутствует, то выполняется следующий оператор case, пока не встретится очередной break, или не будет достигнут конец тела оператора switch.

Вложенные операторы switch

Оператор switch может находиться в теле внешнего по отношению к нему оператора switch. Операторы case внутреннего и внешнего switch могут иметь одинаковые константы, в этом случае они не конфликтуют между собой. Например, следующий фрагмент программы вполне работоспособен:

switch(x) { case 1: switch(y) { case 0: printf("Деление на нуль.\n"); break; case 1: process(x,y); break; } break; case 2:....



Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 315; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.