Оператор ВыборПо

Допустим, требуется выполнить, в зависимости от значения некоторой переменной или выражения, те или иные действия. Причем возможных вариантов может быть больше двух. В этом случае удобнее использовать не оператор "Если", а оператор "ВыборПо".

В общем случае рассматриваемая конструкция языка выглядит следующим образом:

ВыборПо(ВыражениеВыбора)
{
   выбор Выражение1,Выражение2,...:
      Оператор;
      ...
      Оператор;
   ...
   выбор ВыражениеN1,ВыражениеN2,...:
      Оператор;
      ...
      Оператор;
  [ иначе
      Оператор;
      ...
      Оператор; ]
}

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

После ключевого слова "ВыборПо" в круглых скобках идет некоторое выражение. В простейшем случае это может быть просто имя переменной.

Результат выполнения выражения выбора последовательно сравнивается со значениями выражений, идущих после ключевых слов "выбор". Если значение какого-то выражения совпало, то будут выполняться операторы после соответствующего двоеточия до следующего ключевого слова "выбор", либо до слова "иначе", либо до закрывающейся фигурной скобки. Обратите внимание, что после слова "выбор" может быть указано несколько выражений для сравнения, разделенных запятой.

Если же ни одно из значений не равно, будут выполнены операторы после ключевого слова "иначе" до закрывающейся фигурной скобки.

При написании оператора "ВыборПо" учтите, что, по крайней мере, должен быть хотя бы один блок операторов, начинающийся со слова "выбор". Таких блоков может быть сколько угодно много. Блок "иначе" можно опускать.

На самом деле, чтобы реализовать подобную конструкцию, можно воспользоваться комбинацией операторов "Если/Иначе". Выглядело бы это примерно так:

Если(ВыражениеВыбора==Выражение1)
{
   Оператор; ... Оператор;
}
иначе если(ВыражениеВыбора==Выражение2)
{
   Оператор; ... Оператор;
}
...
иначе
{
   Оператор; ... Оператор;
}

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