Разработка программ с ветвлениями (Лабораторная работа № 2), страница 3

При комбинации операторов ifи if-else может возникать сомнение, к какому из ifотносится else.

...

     if (ЛВ1)

if (ЛВ2) <Оператор A>;

else      <Оператор B>;

...

По правилам языка, else относится к ближайшему if, т.е. в этом примере реализована блок схема, показанная на рис. 4. Если же нужно else отнести к первому if (рис. 5), то необходимо выделить входящий в него оператор if (ЛВ2) <оператор B>; фигурными скобками, хотя он единственный.

     ...

if (ЛВ1)

{

  if (ЛВ2)     <Оператор A>;

}

else      <Оператор B>;

     ...

      

Рис. 4. Оператор if-else внутри оператора if        Рис. 5. Оператор if внутри оператора if-else

4. Оператор switch

Оператор switch реализует множественный выбор. Его синтаксис имеет вид:

switch (<селектор>)

  {

  case a: <операторы A> break;

  case b: <операторы B> break;

casec: <операторы C> break;

...

default: <операторы default>

  }

Селектором выбора может быть переменная целого или символьного типа. Возможные ее значения перечисляются в блоках case. Оператор switch выбирает то вход, который соответствует значению переменной-селектора. В каждый блок может входить любое число операторов; объединения фигурными скобками они не требуют. В конце каждого блока обычно располагается оператор break (но может и отсутствовать). Если break присутствует, то после выполнения операторов соответствующего блока происходит выход из оператора switch.  Если же break отсутствует, то произойдет выполнение операторов следующего блока  case  до тех пор, пока не встретится  break. Так, в следующем примере,

...

switch (<селектор>)

  {

casea: <операторы A>

case b: <операторы B>

  casec: <операторы C> break;

  ...

default: <операторы default>

  }

...

при входе в casea: сначала будут выполнены <операторы A>, затем <операторы B>, а потом и <операторы C>. Такие возможности оператора switch позволяют реализовывать более сложные многовходовые структуры, чем множественный выбор (рис. 3), но в практике программирования их рекомендуется не использовать.

Блок default содержит операторы, выполняемые в том случае, если значение переменной-селектора не соответствует ни одному из перечисленных в case. Этот блок может отсутствовать в операторе switch, но если он имеется, то в последнем case оператор break обязателен.

Множественный выбор может быть реализован вложенными операторами if, но все языки программирования имеют соответствующий оператор (в Паскале – case-of) и следует их использовать. Обычно операторы множественного выбора используются для задания входным данным соответствующих вариантов значений.

5. Задание к работе

1.  Проанализировать и исполнить программы Murka-2007 раздела if_else (часть Ветвления). На приведенных примерах освоить синтаксис операторов if и if-else и особенности их использования. Восстановить и зарисовать блок-схемы, реализованные в программах 3_ifelse, 4_ifelse, 5_ifelse, 6_ifelse, 7_ifelse, 8_ifelse. Зафиксировать в рабочем журнале результаты их исполнения для четырех возможных комбинаций ключей, оформив их в виде следующей таблицы:

key1

0

0

1

1

key2

0

1

0

1

3_ifelse

...

8_ifelse

2.  Проанализировать и исполнить программы Murka раздела Логические операции (часть Ветвления). Освоить правила записи сложных логических выражений, использующих несколько операций отношения и операции NOT, OR и AND.