Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 сем Инфа готово.docx
Скачиваний:
24
Добавлен:
04.06.2015
Размер:
255.66 Кб
Скачать

Вопрос 18. Ветвление программ

Для того чтобы программы на С# были более гибкими, используются операторы перехода (операторы ветвления). В С# есть два типа ветвления программы: безусловный переход и условный.

Кроме ветвлений, в С# также предусмотрены возможности циклической обработки данных, которые определяются ключевыми словами: for, while, do, in и foreach. Эти операторы обсудим в последующих уроках. Пока рассмотрим несколько способов условного и безусловного перехода.

Безусловные переходы

Безусловный переход осуществляется двумя способами.

Первый способ — это вызов функций. Когда компилятор находит в основном тексте программы имя функции, то происходит приостановка выполнения текущего кода программы и осуществляется переход к найденной функции. Когда функция выполнится и завершит свою работу, то произойдет возврат в основной код программы, на ту инструкцию, которая следует за именем функции. Следующий пример иллюстрирует безусловный переход с использованием функции:

using System;

class Functions

{

static void Main()

{

Console.WriteLine("Метод Main. Вызываем метод Jump...");

Jump();

Console.WriteLine("Возврат в метод Main.");

}

static void Jump()

{

Console.WriteLine("Работает метод Jump!");

}

}

Откомпилируйте и запустите программу. Вы увидите результат ее

работы:

Метод Main. Вызываем метод Jump...

Работает метод Jump!

Возврат в метод Main.

Программа начинает выполняться с метода Main() и осуществляется последовательно, пока компилятор не вызовет функцию Jump(). Таким образом, происходит ответвление от основного потока выполняемых инструкций. Когда функция Jump() заканчивает свою работу, то продолжается выполнение программы со следующей строки после вызова функции.

Второй способ реализации безусловного перехода можно осуществить при помощи ключевых слов: goto, break, continue, return или throw. Дополнительная информация об инструкциях goto, break, continue и return будет рассмотрена чуть позже. Об инструкции throw будет отдельный урок.

Условные переходы

Условный переход можно реализовать в программе с помощью ключевых слов языка: if, else или switch. Такой переход возможен только при условии, если он является истинным.

if...else оператор

if...else — это оператор ветвления, работа которого определяется условием. Условие оператора анализируется инструкцией if. Если условие верно (true), то выполняется блок инструкций программы, описанных после условия.

if ( expression ) statement 1

[else statement2 ]

Такой вид этого оператора вы можете найти в документации по С#. Он показывает, что работа условного оператора определяется булевым выражением (выражение, которое имеет значение true или false) в круглых скобках. Если значение этого выражения истинно, то выполняется блок инструкций statement1. Если же выражение ложно, произойдет выполнение блока инструкций statement2. Необходимо заметить, что вторая часть оператора (else statement2) может не указываться. Если инструкций в блоках statement1 или statement2 больше одной, то блок обязательно нужно брать в фигурные скобки.

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

Оператор if в инструкции сравнения может применять несколько инструкций, объединенных арифметическими операторами. В качестве последних используются операторы (&& — И), (|| —ИЛИ) и (! — НЕ).

При сложном наборе условий лучше использовать оператор switch.

Когда вы имеете такой сложный набор условий, лучше всего воспользоваться оператором switch, который является более удобной альтернативой оператору if.

Логика оператора switch следующая: «найти значение, соответствующее переменной для сравнения, и выполнить соответствующее действие». Иными словами, он работает как оператор выбора нужного действия.

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

{

case константное выражение: инструкция

выражение перехода

[default:: инструкция]

Вы видите, что, подобно оператору условия if...else, выражение условия помещено в круглые скобки в начале оператора switch.

Внутри оператора switch есть секция выбора —case и секция действия по умолчанию —default. Секция выбора нужна для определения действия, которое будет выполняться при совпадении соответствующего константного выражения выражению в switch. В этой секции обязательно нужно указать одно или несколько действий. Секция default может в операторе switch не указываться. Она выполняется в том случае, если не совпала ни одна константная инструкция из секции выбора.

Оператор case требует обязательного указания значения для сравнения (constant-expression) — константного выражение (литеральная или символическая константа, или перечисление), а также блока инструкций (statement) и оператора прерывания действия (jump-statement).

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

Знатоки C++ могут без труда увидеть, что на C++ такая switch инструкция компилироваться не будет. Причина этому — объявление переменных внутри блоков case. Однако разработчики С# постарались и предусмотрели возможность создания переменных внутри case блоков. Поэтому на С# такой код является рабочим.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]