
- •3.Динамическая память. Указатели и массивы. Ссылочный тип.
- •5.Доступ к элементам массива. Вычисление размера массива. Многомерные массивы.
- •7.Использование new и delete на примере динамических
- •9.Символьные массивы и строковые функции. Массивы в
- •13.Условный оператор? . Оператор switch.
- •15.Классы (fstream, ofstream, ifstream, ostream, istream, ios) и представители классов потокового ввода-вывода.
- •19.Объявление переменных указателей. Простые операторы с указателями.
- •21.Оператор if. Оператор if-else. Вложенные операторы if-else. Оператор if-else-if.
- •23.Операции динамического распределения памяти.
- •25.Передача значений параметров по умолчанию. Передача параметров по ссылке и ссылочные переменные.
- •27.Приоритет переменных с файловой и локальной областями действия. Операция уточнения области действия.
- •29.Пространство имен. Операторы namespace и using.
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:
switch отличается от if тем, что он может выполнять только операции проверки строгого равенства, в то время как if может вычислять логические выражения и отношения.
Не может быть двух констант в одном операторе switch, имеющих одинаковые значения. Конечно, оператор switch, включающий в себя другой оператор switch, может содержать аналогичные константы.
Если в операторе 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.