Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






If (B) S1; else S2;






где B – логическое или арифметическое выражение, истинность которого проверяется; S1, S2 – оператор: простой или составной.

При выполнении полной формы оператора if сначала вычисляется выражение B, затем анализируется его результат: если B истинно, то выполняется оператор S1, а оператор S2 пропускается; если B ложно, то выполняется оператор S2, а S1 – пропускается. Таким образом, с помощью полной формы оператора if можно выбрать одно из двух альтернативных действий процесса обработки данных.

Операторы S1 и S2 могут также являться операторами if. Такие операторы называют вложенными. При этом ключевое слово else связывается с ближайшим предыдущим словом if, которое еще не связано ни с одним else. Рассмотрим пример программы, использующей вложенные условные операторы.


Пример:

Дана мишень.

Подсчитать количество очков после выстрела по данной мишени.

static void Main() { int Ball=0; Console.Write(" x= "); float x = float.Parse(Console.ReadLine()); Console.Write(" y= "); float y = float.Parse(Console.ReadLine()); if (x * x + y * y < =1) Ball = 10; else if (x * x + y * y < = 4) Ball = 5; Console.WriteLine(" Ball= " + Ball); } Результат работы программы: x y ball 0 0 10 1 1 5 -2 2 0

Оператор выбора

Оператор выбора switch предназначен для разветвления процесса вычислений по нескольким направлениям. Формат оператора:

switch (< выражение>)

{

case < константное_выражение_1>:

[< оператор 1> ]; < оператор перехода>;

case < константное_выражение_2>:

[< оператор 2> ]; < оператор перехода>;

...

case < константное_выражение_n>:

[< оператор n> ]; < оператор перехода>;

[default: < оператор>; ]

}

Выражение, записанное в квадратных скобках, является необязательным элементом в операторе switch. Если оно отсутствует, то может отсутствовать и оператор перехода.

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

Выполнение оператора начинается с вычисления выражения, расположенного за ключевым словом switch. Полученный результат сравнивается с меткой case. Если результат выражения соответствует метке case, то выполняется оператор, стоящий после этой метки, за которым обязательно должен следовать оператор перехода: break, goto и т.д. При использовании оператора break происходит выход из switch и управление передается оператору, следующему за switch. Если же используется оператор goto, то управление передается оператору, помеченному меткой, стоящей после goto.


Пример.

По заданному виду арифметической операции (сложение, вычитание, умножение и деление) и двум операндам, вывести на экран результат применения данной операции к операндам.

static void Main()

{

Console.Write(" OPER= ");

char oper=char.Parse(Console.ReadLine());

bool ok=true;

Console.Write(" A= "); int a=int.Parse(Console.ReadLine());

Console.Write(" B= "); int b=int.Parse(Console.ReadLine());

float res=0;

switch (oper)

{

case '+': res = a + b; break; //1

case '-': res = a - b; break;

case '*': res = a * b; break;

case ': ': if (b! = 0) { res = (float)a / b; break; }

else goto default;

default: ok = false; break;

}

if(ok) Console.WriteLine(" {0}{1}{2}={3}", a, oper, b, res);

else Console.WriteLine(" error");

}

Результат:

oper x y rez

+ 4 5 9

: 4 0 error

% 4 3 error

Если необходимо, чтобы для разных меток выполнялось одно и тоже действие, то метки перечисляются через двоеточие. Например:

switch (oper)

{

case '+': res = a + b; break;

case '-': res = a - b; break;

case '*': res = a * b; break;

case '/': case ': ':

if (b! = 0) { res = (float)a / b; break; }

else goto default;

default: ok = false; break;

}


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

mylektsii.su - Мои Лекции - 2015-2024 год. (0.008 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал