logo
Otvety_IGA

Разветвляющиеся вычислительные процессы в языках высокого уровня (Pascalили си): ветвление и множественный выбор.

Оператор ветвления (условная инструкция, условный оператор) — оператор, конструкция языка программирования, обеспечивающая выполнение определённой команды (набора команд) только при условии истинности некоторого логического выражения, либо выполнение одной из нескольких команд (наборов команд) в зависимости от значения некоторого выражения.

Оператор ветвления применяется в случаях, когда выполнение или невыполнение некоторого набора команд должно зависеть от выполнения или невыполнения некоторого условия. Ветвление — одна из трёх (наряду с последовательным исполнением команд и циклом) базовых конструкций структурного программирования.

C и C++ имеют условный оператор, структурно аналогичный Паскалю. Отличие состоит в том, что условие должно быть записано в круглых скобках, а вместо ключевых слов begin и end используются фигурные скобки {} :

Оператор структуры множественного выбора называется switch. Такая структура тоже в конечном итоге структура ветвления, но если if это разделение пути надвое (да - мы идем в одну сторону, нет - в другую), то switch это разветвление на большее число вариантов, нежели 2.

В Си в структуре множественного выбора можно использовать (т.е. подразумевать, как мы выяснили выше) ТОЛЬКО оператор сравнения ==. Никакие другие операторы сравнения использоваться не могут!

Дальше - case. Расшифровывается так: в случае, если указанные после switch в скобках переменная или выражение принимают такое значение, как указанные case, то начинают выполняться операторы, следующие после этого же case, если нет - мы переходим к другому случаю, к другому case. Если среди всех описанных нами случаев нет ни одного, соответствующего текущему значению проверяемой переменной или выражениия, переходим к служебному слову default. В этом случае начинают выполняться операторы, находящиеся после него. Собственно, этого служебного слова в данной конструкции может и не быть - оно не обязательно, но считается правильным все же описывать ситуации, которые вы не предвидели в case. Кроме того, default не обязательно должен располагаться в самом конце рассматриваемой структуры, но рекомендуется все-таки располагать его именно там - как-то логически более на месте. Но если вам все-таки очень захотелось втемышить его куда-нибудь посередине, не забудьте после операторов, описывающих действия по умолчанию поставить break. Когда выполняется этот оператор, следущие за ним строки не выполняются, программа выходит из блока структуры и начинает выполняться оператор, следующий сразу после данного блока.

Схема выполнения оператора switch следующая:

- вычисляется выражение в круглых скобках;

- вычисленные значения последовательно сравниваются с константными выражениями, следующими за ключевыми словами case;

- если одно из константных выражений совпадает со значением выражения, то управление передается на оператор, помеченный соответствующим ключевым словом case;

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