Условные операторы

  • docx
  • 27.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-002955.docx

 Условные операторы

Операторы ветвления позволяют изменить порядок выполнения операторов в программе. К операторам ветвления относятся условный оператор 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


y(x) =ï

í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);

 

Важное примечание! В C-подобных языках программирования, к которым относится и C#, операция сравнения представляется двумя знаками равенства, например:
if (a == b)

 

Оператор выбора 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("Неверное значение!");