Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование лекции.doc
Скачиваний:
32
Добавлен:
03.12.2018
Размер:
4.85 Mб
Скачать

Глава 6. Программирование ветвящихся процессов

Часто при программировании нужно провести анализ обстановки и выбор варианта действия в зависимости от результата анализа. Указанной цели служат условные операторы.

В С# существует два вида операторов ветвления: условный оператор if и оператор выбора switch.

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

Формат записи if-инструкции принимает такой вид:

if (условие) {последовательность инструкций}

else { последовательность инструкций }

Если элемент условие, который представляет собой условное выражение, при вычислении даст значение истина, будет выполнена if-инструкция; в противном случае – else-инструкция (если онасуществует). Обе инструкции одновременно никогда не выполняются. Условное выражение, управляющее выполнением if-оператора, должно иметь тип bool. Схема алгоритма условного оператора представлена на рисунке 6.1.

Р

да

нет

исунок 6.1 Схема алгоритма условного оператора

Вложенные if-операторы образуются в том случае, если в качестве элемента инструкция используется другой if-оператор. Вложенные if-операторы очень популярны в программировании. Главное здесь – помнить, что else-инструкция всегда относится к ближайшей if-инструкции, которая находится внутри того же программного блока, но еще не связана ни с какой другой else-инструкцией.

Оператор switch обеспечивает многонаправленное ветвление (рис. 6.2). Он позволяет делать выбор одной из множества альтернатив. Хотя многонаправленное ветвление можно реализовать и с помощью последовательности вложенных if-операторов, для многих ситуаций оператор switch оказывается более эффективным решением.

Общий формат записи оператора switch имеет вид:

Switch (выражение)

{ case константа1:

последовательность инструкций

break;

case константа2:

последовательность инструкций

break;

case константаЗ:

последовательность инструкций

break;

default:

последовательность инструкций

break;

}

Рисунок 6.2 – Схема алгоритма ветвящегося процесса с оператором switch

Элемент выражение оператора switch должен иметь целочисленный тип (например, char, byte, short или int) или тип string. Выражения, имеющие тип с плавающей точкой, не разрешены. Очень часто в качестве управляющего switch-выражения используется просто переменная; case-константы должны быть литералами, тип которых совместим с типом заданного выражения. При этом никакие две case-константы в одном switch-операторе не могут иметь идентичных значений.

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

Оператор switch может быть использован как часть case-последовательности внешнего оператора switch. В этом случае он называется вложенным оператором switch. Необходимо отметить, что case-константы внутренних и внешних операторов switch могут иметь одинаковые значения, при этом никаких конфликтов не возникнет.