Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
нечетные.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
59.67 Кб
Скачать

13.Условный оператор? . Оператор switch.

Оператор ? может использоваться для замены стандартной конструкции if/else: if (условие) выражение; else выражение; Ограничением в данном случае является использование единственного выражения как после if, так и после else.

Оператор ? называется триадным оператором, поскольку ему требуется три операнда и он имеет следующий вид: выражение1 ? выражение2 : выражение3 где выражение1, выражение2 и выражение3 - это выражения.

Оператор ? работает следующим образом. Вычисляется выражение1. Если оно истинно, вычисляется выражение2 и вся конструкция получает вычисленное выражение. Если выражение1 ложно, вычисляется выражение3 и вся конструкция получает вычисленное выражение. Например: х = 10; у = х > 9 ? 100 : 200; В данном примере у получает значение 100. Если бы х было меньше, чем 9, то у получило бы значение 200.

Хотя конструкция if-else-if может выполнять многочисленные проверки, она не очень элегантна. Код очень труден для восприятия и в нем может запутаться даже автор через некоторое время. С этой целью С имеет оператор принятия решений switch, выполняющий действия, основываясь на сравнении значения со списком констант символов или целых чисел. При обнаружении совпадения выполняется оператор или операторы, ассоциированные с данным значением. Оператор switch имеет следующий вид: switch (выражение) { case константа1: последовательность операторов break; case константа2: последовательность операторов break; case константа3: последовательность операторов break; ... default: последовательность операторов }

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

Следует знать о трех важных моментах оператора switch:

  1. switch отличается от if тем, что он может выполнять только операции проверки строгого равенства, в то время как if может вычислять логические выражения и отношения.

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

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

Оператор switch часто используется для обработки команд клавиатуры типа работа с меню. Как показано ниже, функция menu() отображает меню для программы проверки орфографии и вызывает соответствующие процедуры: void main(void) { char ch; cout<<”1.Check Spelling"<<endl; cout<<”2. Correct Spelling Errors”<<endl; cout<<"3. Display Spelling Errors"<<endl; cout<<"Strike Any Other Key to Skip"<<endl; cout<<"    Enter your choice: "<<endl; cin>>ch; /* чтение с клавиатуры */ switch(ch) { case '1':      check_spelling();    break; case '2':     correct_errors();    break; case '3';     display_errors();    break; default  : cout<<”No option selected"<<endl;   } }

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