Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты 1-12 (от Кати).doc
Скачиваний:
3
Добавлен:
24.04.2019
Размер:
298.5 Кб
Скачать

6) Операторы перехода:

Операторов перехода, позволяющих прервать естественный порядок выполнения операторов блока, в языке C# несколько.

6.1. Оператор goto:

Сразу нужно отметить, что использование этого оператора не рекомендуется. В принципе он допустим, так как достался языку C# в наследство от языка C. Однако, его использование не соответствует структурному стилю программирования, и делает запутанной логику программы. Оператор goto имеет три варианта записи.

А) goto метка; Б) goto case константное_выражение; В) goto default;

Первый вариант основан на следующем соображении. Все операторы языка C# могут иметь метку - уникальный идентификатор, предшествующий оператору и отделённый от него символом двоеточия. Передача управления помеченному оператору – это классическое использование оператора goto. Два других варианта используются внутри оператора switch. Они обеспечивают передачу управления в case-ветвь или default-ветвь.

6.2. Операторы break и continue:

Хорошим стилем программирования считается, когда используются "переходы вперёд" (но не назад), позволяющие при выполнении некоторого условия выйти из цикла, из оператора ветвления, из блока. Для этой цели можно использовать оператор goto, но лучше применять специально предназначенные для этих целей операторы break и continue.

Оператор break может стоять в теле цикла или завершать case-ветвь в операторе switch. Пример его использования в операторе switch уже демонстрировался. При выполнении оператора break в теле цикла завершается выполнение самого внутреннего цикла. В теле цикла, чаще всего, оператор break помещается в одну из ветвей оператора if, проверяющего условие преждевременного завершения цикла. Пример:

do  { ... Console.Write("Завершаем работу? (Y,N)"); temp = Console.ReadLine(); otv = char.Parse(temp); if (otv = = 'Y' || otv = = 'y') break; ... }while(...);

Оператор continue используется только в теле цикла. В отличие от оператора break, завершающего внутренний цикл, continue осуществляет переход к следующему шагу цикла. Пример – вычисление значений функции на интервале от -10 до +10:

for (int i = -10; i < 11; i++) {  if (i > -4 && i < 4) continue; y= Math.Sqrt(i * i - 9); Console.WriteLine("Значение функции = {0} при значении аргумента {1}", y, i); }

Здесь переход к следующему шагу цикла без вычислений необходим потому, что на отрезке [-3, 3] значение функции не существует.

6.3. Оператор return:

Ещё одним оператором, относящимся к группе операторов перехода, является оператор return, позволяющий завершить выполнение метода (процедуры или функции). Его мы рассмотрим позднее в другой отдельной статье.

8) Операторы выбора: if и switch

4.1. Оператор if:

Синтаксис оператора:

If (выражение_1) оператор_1 else if (выражение_2) оператор_2 ... else if (выражение_K) оператор_K else оператор_N

Выражения в круглых скобках должны быть булевого типа. Точнее, при вычислениях выражения должны давать значения true или false. Вспомним, что арифметический тип не имеет явных или неявных преобразований к булевому типу. Каждый из операторов может быть любым оператором – в частности, блоком или другим if-оператором. Поэтому возможна и такая конструкция:

if (выражение_1) if (выражение_2) if (выражение_3) ...

Ветви else и if, позволяющие организовать выбор из многих возможностей, могут отсутствовать. Может отсутствовать заключительная else-ветвь. Выполняется тот оператор, который записан после выражения, имеющего истинное значение. Проверка истинности выражений выполняется в порядке их написания. Если все выражения ложны, то выполняется оператор после else. Пример записи оператора:

if (k % 7 = = 0) {  Console.WriteLine("Число делится на 7 нацело"); } else Console.WriteLine("Число не делится на 7");