Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Управляющие конструкции.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
406.41 Кб
Скачать

Операторы управления. Следование. Ветвление.

В языке С# реализован полный набор управляющих конструкций структурного программирования: следование, ветвление, цикл. Кроме того, имеются дополнительные операторы управления. Алгоритмические языки отличаются от неалгоритмических наличием так называемых управляющих конструкций. Итак, текущий урок посвящен рассмотрению управляющих конструкций следование и ветвление. И, если следование – это достаточно просто для понимания, то ветвление представляет собой некоторую сложность. Особенно, когда ветвление сложное. Мы сначала рассмотрим типовые простейшие варианты. Далее перейдем к более сложным. Примеры программ вы сможете скопировать в область редактора вновь созданного проекта и отладить. Использование программ позволит наглядно проследить ход выполнения.

Вы получали задание установить среду программирования на свой компьютер. В конце урока вы получите инструкцию по работе в данной среде. Принципы работы мало отличаются от версии к версии. Проблем быть не должно. Если возникнут проблемы- обращайтесь с вопросами на форум нашей школы.

  1. Следование

Операторы по умолчанию выполняются последовательно в порядке записи. Операторы, заключенные в фигурные скобки {} образуют блок операторов. Блок операторов рассматривается транслятором как один составной оператор.

{оператор … оператор} блок операторов

В качестве оператора могут быть:

  • объявление

  • выражение, заканчивающееся символом точи с запятой

  • управление

  • блок операторов

Поскольку блок операторов может содержать объявление переменных, то возникает проблема области видимости локальной переменной. Проблема решается следующим образом: переменная, объявленная в блоке, видна в этом блоке и во вложенных блоках, но не видна в охватывающем блоке.

2. Ветвление

If (логическое выражение p)

оператор1

else

оператор2

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

Допускается сокращенное ветвление.

If (p) оператор;

Оператор1 и оператор2 блок-схемы алгоритма ветвления, соответствующие ветвям «да» и «нет», могут представляют собой:

  1. Одиночный оператор C# (а= в + с;)

  2. Составной оператор, представляющий собой группу операторов, заключенных в фигурные скобки {f=d+c; r+=3;}

Таким образом, если при условном переходе на одну из ветвей необходимо выполнить не одно действие, а несколько, то используется составной оператор, который интерпретируются транслятором как один оператор. Рассмотрим простейший пример сокращенного ветвления:

if (a= =c) Console.WriteLine(b);

В данном случае, если переменная а действительно эквивалентна переменной с, то значение переменной b выводится на экран.

Пример с использованием составного оператора:

if (a!= s)

{Console.WriteLine(b); a+=4;}

Если переменная a не эквивалентна переменной s, то выводим на экран значение переменной b и увеличиваем значение переменной а на 4.

В большинстве случаев начинающие программисты ошибаются при формировании логического выражения (условия P). Логическое выражение – предположение (условие), имеет только два исхода:

1) условие выполнено (истина);

2) условие не выполнено (ложь).

Логическое выражение может принимать два значения: true или false. Этим значениям соответствует переменная, описываемая оператором bool. Опишем подробнее, что такое логическое выражение. Это может быть простое условие или сложное условие.

Пример:

Вычислить значение переменной, заданной соотношением

x2, если х<0

y=

х+10, если х≥0

Фрагмент программы с использованием ветвления:

double x, y;

x = double.Parse(Console.ReadLine());

if (x < 0)

y = x * x;

else

y = x + 10;

В следущем примере использовано при реализации данной задачи двойное сокращенное условие. Результат в обоих случаях одинаковый. Но втором случае будеи произведено две проверки условия.

double x, y;

x = double.Parse(Console.ReadLine());

y = 0.0;

if (x < 0)

y = x * x;

if (x>=0)

y = x + 10;

Сложные условия формируются из простых при помощи знаков логических операций отрицания (!), И (&&) и ИЛИ ( | | ). Мы уже рассматривали логические операции. Для логических переменных результат вычисления («истина» или «ложь») вычисляется в соответствии с правилами алгебры логики. Кратко сформулируем основные правила вычислений логических выражений:

  1. Логическое отрицание логических переменных приводит к инверсии значения битового разряда. Например,

bool a=true, b=false; int w=2;

if (!b) w++;

b («ложь») при инверсии принимает значение «истина». Следовательно, условное выражение в скобках имеет значение «истина», т.е. выполняется оператор w++;// 3

  1. Результат логического умножения равен 1 («истина») в случае, если оба операнда истинны.

bool a=true, b=false; int w=2;

if (b && a) w++;

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

  1. Результат логического сложения равен 1 («истина») в случае, если хотя бы один из операндов истинный.

bool a=true, b=false; int w=2;

if (b || a) w++;

Значение условного выражения истинно, выполняется оператор w++;

В части вычисления условного выражения оператора ветвления в С# при данных любого типа следует помнить: любое вычисленное значение условного выражения, отличное от 0, является истинным:

if (-5) // истина

if (1) // истина

if (5-5) // ложь

Итак, в каждом ветвлении заложена некая альтернатива, выбор которой зависит от истинности условного выражения. Самый постой и доступный пример (вспомним еще раз) - из известной детской сказки. «Стоит витязь пред камнем, на котором высечено: налево пойдешь – коня потеряешь, направо пойдешь – меч потеряешь». Это типичный пример классического ветвления, имеющего две ветви. Теперь попробуем описать вербально данный алгоритм: «если пойдешь налево, то потеряешь коня, если пойдешь направо, то потеряешь меч». Заметим, что в данной управляющей конструкции не предусмотрены другие варианты действий (идти вперед или назад).

Если добавить к нашему алгоритму еще одну альтернативу («если прямо пойдешь – голову потеряешь»), то получим вариант множественного ветвления.