Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Case -1




...

...

...

Else

Else

Else

С помощью оператора if

Проверка большего количества условий

Else

Else

Else

<код, который выполняется, если вычисление <условия> дает результат.else>;

Каждый раздел кода может занимать несколько строк, для чего используются фигурные скобки:

if (<условие>)

{

<код, который выполняется, если вычисление <условия> дает результат true>;

}

{

<код, который выполняется, если вычисление <условия> дает результат false>;

}

В качестве простого примера перепишем код из предыдущего раздела, в котором использовался тринарный оператор, с помощью оператора if:

string resultString = (myInteger < 10)? "Меньше 10": "Больше или равно 10";

Поскольку результат выполнения оператора if нельзя присваивать переменным, то потребуется отдельный шаг:

string resultString;

if (myInteger < 10)

resultString = "Меньше 10";

resultString = "Больше или равно 10м;

Пример:

static void Main (string [] args)

{

string comparison;

Console.WriteLine(“'Enter a number:”);

double var1 = Convert.ToDouble(Console.ReadLine());

Console.WriteLine(“Enter another number:”);

double var2 = Convert.ToDouble(Consоle.ReadLine());

if (varl < var2)

comparison = “less than”;

else

{

if (varl = = var2)

comparison = “equal to”;

else

comparison = “greater than”;

}

Console.WriteLine(“The first number is {0} the second number.”, comparison);

}

В предыдущем примере мы проверяли три условия для значения переменной var1, которые охватывали все возможные для нее значения. Однако в некоторых случаях может потребоваться выполнять проверку на какие-то конкретные значения, например, 1, 2, 3, 4 и т. д. Используя тот же подход, мы получим неудобоваримый вложенный код вроде:

if (var1 == 1)

{

//выполнение каких-либо действий;

}

{

if {var1 == 2)

{

// выполнение каких-либо других действий;

}

{

if {var1 = = 3 ׀ ׀ var1 == 4)

{

// выполнение каких-либо других действий

}

{

// выполнение каких-либо других действий

}

}

}

Оператор switch

Оператор switch очень похож на оператор if в том смысле, что он также обеспечивает условное выполнение кода в зависимости от результата выполненной проверки. Однако оператор switch позволяет производить проверку для многих значений переменной за один проход вместо того, чтобы проверять всего лишь одно условие. Эти проверки ограничены отдельными значениями и не допускают конструкций типа "больше, чем X", поэтому их использование имеет некоторые отличия; однако такой способ является очень эффективным. Принципиальная структура оператора switch имеет следующий вид:

switch {<контрольнаяПеременная>)

{

case <значение1>:

<код, который должен выполняться в том случае,

если <контрольнаяПеременная> == <значение1> >

break;

case <значение2>:

<код, который должен выполняться в том случае,

если <контрольнаяПеременная> == <значение2> >

break;

case <значение N>:

<код, который должен выполняться в том случае,

если <контрольнаяПеременная> == <значениеN> >

break;

default:

<код, который должен выполняться в том случае,

если <контрольнаяПеременная>!= ни одному из значений>

 

Значение, которым обладает <контрольнаяПеременная>, сравнивается со всеми значениями <значениеХ>, каждое из которых имеет свой собственный оператор case; в случае совпадения значений выполняется код, предусмотренный для данного условия. Если ни одно из значений не совпало, будет выполняться код из раздела default (при условии, что этот блок не пуст). После завершения выполнения кода в некотором разделе выполняется еще одна команда — break. В случае выполнения кода в одном из блоков case переход к выполнению другого оператора case не происходит.

Оператор break в данном случае просто прерывает выполнение оператора switch, и работа программы продолжается со следующего оператора. В программе на С# имеются и другие способы избежать передачи управления от одного оператора case другому. Мы можем использовать либо оператор return, который приведет к прерыванию выполнения текущей функции, а не просто оператора switch (более подробно об этом будет рассказано в главе 6), либо оператор goto. Оператор goto (он описан выше) в данном случае будет работать, поскольку операторы case в программе на С# фактически выполняют роль меток. Например:

switch (<контрольнаяПеременная> )

{

case <значение1>:

<код, который должен выполняться в том случае,

если <контрольнаяПеременная> == <значение1> >

goto case <значение2>;

case <значение2>:

<код, который должен выполняться в том случае,

если <контрольнаяПеременная> == <значение2> >

break;

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

switch (<контрольнаяПеременная> )

{

case <значение1>:

case <значение2>:

<код, который должен выполняться в том случае,

если <контрольнаяПеременная> == <значение1>

или <контрольнаяПеременная> == <значение2> >

break;

Обратите внимание, что эти условия также относятся и к оператору default. Не существует никакого правила, требующего, чтобы этот оператор обязательно находился в конце всего перечня сравнений, и при желании мы можем объединять его с операторами case. Включение оператора, прерывающего нормальное выполнение программы — break, goto или return,— гарантирует правильную последовательность выполняемых действий в любом случае. Все переменные <значениеХ>использующиеся для сравнений, должны иметь постоянное значение. Один из способом добиться этого — применение литеральных значений:

switch (myInteger)

{

case1:

<код, который должен исполниться, в том случае если myInteger = =1>

break;

<код, который должен исполниться, в том случае если myInteger = =-1>

break;

default:

<код, который должен исполниться, в том случае если myInteger!= ни одному из значений использовавшихся для сравнения>

break;

}

Другой способ получить постоянные значения переменных — это использование переменных-констант. Переменные-константы являются точно такими же переменными, как и все остальные, за исключением одного ключевого момента: значение, которое в них содержится, не может быть изменено ни при каких условиях. После того как мы присвоили переменной-константе какое-либо значение, оно будет оставаться неизменным на протяжении выполнения всей программы. Переменные-константы могут оказаться удобными в данном случае, поскольку зачастую код легче понимать, когда используемые для сравнения значения не видны в момент выполнения сравнения. Можно объявить переменную-константу, добавив ключевое слово const к описанию типа переменной; при этом мы обязаны сразу определить ее значение.

Например:

const int intTwo = 2;




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


Дата добавления: 2015-04-29; Просмотров: 443; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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