Условные операторы
Операторы ветвления позволяют изменить порядок выполнения операторов в программе. К операторам ветвления относятся условный оператор if и оператор выбора switch.
Условный оператор if используется для разветвления процесса об- работки данных на два направления. Он может иметь одну из форм: со- кращенную или полную.
Форма сокращенного оператора if: if (B) S;
где В – логическое или арифметическое выражение, истинность ко- торого проверяется; S – оператор.
При выполнении сокращенной формы оператора if сначала вычис- ляется выражение B, затем проводится анализ его результата: если B ис- тинно, то выполняется оператор S; если B ложно, то оператор S пропус- кается. Таким образом, с помощью сокращенной формы оператора if можно либо выполнить оператор S, либо пропустить его.
Форма полного оператора if:
if (B) S1; else S2;
где B – логическое или арифметическое выражение, истинность ко- торого проверяется; S1, S2 – операторы.
При выполнении полной формы оператора if сначала вычисляется выражение B, затем анализируется его результат: если B истинно, то вы- полняется оператор S1, а оператор S2 пропускается; если B ложно, то выполняется оператор S2, а S1 – пропускается. Таким образом, с помо- щью полной формы оператора if можно выбрать одно из двух альтер- нативных действий процесса обработки данных.
Для примера, вычислим значение функции:
ìsin(x), если x £ a
ï
ícos(x), если a
< x < b
ïtg (x), если x ³ b
Указанное выражение может быть запрограммировано в виде
if (x <= a)
y = Math.Sin(x);
if ((x > a) && (x < b)) y = Math.Cos(x);
if (x >= b)
y = Math.Sin(x) / Math.Cos(x);
или с помощью оператора else: if (x <= a)
y = Math.Sin(x);
else
if (x < b)
y = Math.Cos(x);
else
y = Math.Sin(x) / Math.Cos(x);
![]() |
Оператор выбора switch предназначен для разветвления процесса вычислений по нескольким направлениям. Формат оператора:
switch (<выражение>)
{
case <константное_выражение_1>: [<оператор 1>];
<оператор перехода>;
case <константное_выражение_2>: [<оператор 2>];
<оператор перехода>;
...
case <константное_выражение_n>: [<оператор n>];
<оператор перехода>; [default:
<оператор>;]
}
Замечание. Выражение, записанное в квадратных скобках, являет- ся необязательным элементом в операторе switch. Если оно отсутству- ет, то может отсутствовать и оператор перехода.
Выражение, стоящее за ключевым словом switch, должно иметь арифметический, символьный или строковый тип. Все константные вы- ражения должны иметь разные значения, но их тип должен совпадать с типом выражения, стоящим после switch или приводиться к нему. Клю- чевое слово case и расположенное после него константное выражение называют также меткой case.
Выполнение оператора начинается с вычисления выражения, рас- положенного за ключевым словом switch. Полученный результат срав- нивается с меткой case. Если результат выражения соответствует метке case, то выполняется оператор, стоящий после этой метки, за которым
обязательно должен следовать оператор перехода: break, goto, return и т. д. При использовании оператора break происходит выход из switch и управление передается оператору, следующему за switch. Если же ис- пользуется оператор goto, то управление передается оператору, поме- ченному меткой, стоящей после goto. Наконец, оператор return завер- шает выполнение текущего метода.
Если ни одно выражение case не совпадает со значением оператора switch, управление передается операторам, следующим за необязатель- ной подписью default. Если подписи default нет, то управление пере- дается за пределы оператора switch.
Пример использования оператора switch:
int dayOfWeek = 5; switch (dayOfWeek)
{
case 1:
MessageBox.Show("Понедельник"); break;
case 2:
MessageBox.Show("Вторник"); break;
case 3:
MessageBox.Show("Среда"); break;
case 4:
MessageBox.Show("Четверг"); break;
case 5:
MessageBox.Show("Пятница"); break;
case 6:
MessageBox.Show("Суббота"); break;
case 7:
MessageBox.Show("Воскресенье"); break;
default:
MessageBox.Show("Неверное значение!"); break;
}
Поскольку на момент выполнения оператора switch в этом примере переменная dayOfWeek равнялась 5, то будут выполнены операторы из блока case 5.
В ряде случаев оператор switch можно заменить несколькими опе- раторами if, однако не всегда такая замена будет легче для чтения. Например, приведённый выше пример можно переписать так:
int dayOfWeek = 5; if (dayOfWeek == 1)
MessageBox.Show("Понедельник");
else
if (dayOfWeek == 2) MessageBox.Show("Вторник");
else
if (dayOfWeek == 3) MessageBox.Show("Среда");
else
if (dayOfWeek == 4) MessageBox.Show("Четверг");
else
if (dayOfWeek == 5) MessageBox.Show("Пятница");
else
if (dayOfWeek == 6) MessageBox.Show("Суббота");
else
if (dayOfWeek == 7)
MessageBox.Show("Воскресенье");
else
MessageBox.Show("Неверное значение!");
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.