Инструкция «выбор»
Инструкция выбор является альтернативой инструкции если. Она может использоваться в двух формах: полной и предикатной. Предикатная форма отличается от полной отсутствием выражения выбора.
Синтаксис
выбор [выражение-выбора]
когда выражение-сравнения[, выражение-сравнения]
инструкции-языка
[когда выражение-сравнения[, выражение-сравнения]
инструкции-языка]
[иначе
инструкции-языка]
;
-
выражение-выбораВыражение, которое будет находиться в левой части логического выражения при проверке условий.
-
выражение-сравненияВыражение, которое будет находиться в правой части логического выражения при проверке условий. Может иметь несколько видов в зависимости от формы инструкции
выбор:-
Полноценное выражение:
В этом случае проверяется следующее условие:
выражение-выбора == выражение-сравнения. Если используется предикатная форма инструкции, товыражение-сравнениядолжно представлять собой полноценное логическое выражение, которое возвращает результатИстинаилиЛожь. -
Частичное бинарное выражение:
логическая-операция выражение-сравненияВ такое выражение могут входить операции сравнения (
==,!=и т. д.) и операцияэто. В этом случае проверяется следующее условие:выражение-выбора логическая-операция выражение-сравненияЕсли выражения сравнения перечислены через запятую, это означает, что перечисленные условия будут объединены по «ИЛИ».
-
Принцип работы
- Полная форма:
- Выполняется вычисление значения
выражение-выбора. - Для каждого условия (или набора условий), указанного в ветках
когда, выполняется сравнениевыражение-выбораивыражение-сравнения. - Если результат сравнения равен
Истина, то выполняются инструкции языка после соответствующей строки. Затем управление передается в инструкцию языка, которая следует за символом;, закрывающим инструкциювыбор. Проверка условий выполняется в порядке следования ключевых словкогда.
- Выполняется вычисление значения
- Предикатная форма:
- Для каждой ветки
когдавыполняется вычисление выражениявыражение-сравнения. - Если результат сравнения равен
Истина, то выполняются инструкции языка после соответствующей строки. Затем управление передается в инструкцию языка, которая следует за символом;, закрывающим инструкциювыбор. Проверка условий выполняется в порядке следования ключевых словкогда.
- Для каждой ветки
При любом варианте использования инструкции выбор, если ни одно из условий не было выбрано, а в инструкции присутствует ветвь иначе, управление будет передано в нее.
Пример
- Полная форма сравнения
- Предикатная форма сравнения
метод ВыполнитьОперацию(Операция: ВидОперации, Массив: Массив<Число>): Число
если Массив.Размер() == 0
выбросить новый ИсключениеНедопустимыйАргумент("Массив не может быть пустым.")
;
выбор Операция
когда Сумма
возврат Массив.Сумма()
когда Среднее
возврат Массив.Среднее()
когда Максимум
возврат Массив.Максимум()
когда Минимум
возврат Массив.Минимум()
иначе
выбросить новый ИсключениеНедопустимыйАргумент("Неподдерживаемая операция.")
;
;
перечисление ВидОперации
Сумма,
Среднее,
Максимум,
Минимум
;
метод ВыполнитьВычисления()
знч Массив = [10, 20, 30, 40, 50]
знч Сумма = ВыполнитьОперацию(ВидОперации.Сумма, Массив) // 150
знч Среднее = ВыполнитьОперацию(ВидОперации.Среднее, Массив) // 30
знч Максимум = ВыполнитьОперацию(ВидОперации.Максимум, Массив) // 50
знч Минимум = ВыполнитьОперацию(ВидОперации.Минимум, Массив) // 10
;
метод ВыполнитьОперацию(Операция: ВидОперации, Массив: Массив<Число>): Число
если Массив.Размер() == 0
выбросить новый ИсключениеНедопустимыйАргумент("Массив не может быть пустым.")
;
выбор
когда Операция == ВидОперации.Сумма
возврат Массив.Сумма()
когда Операция == ВидОперации.Среднее
возврат Массив.Среднее()
когда Операция == ВидОперации.Максимум
возврат Массив.Максимум()
когда Операция == ВидОперации.Минимум
возврат Массив.Минимум()
иначе
выбросить новый ИсключениеНедопустимыйАргумент("Неподдерживаемая операция.")
;
;
перечисление ВидОперации
Сумма,
Среднее,
Максимум,
Минимум
;
метод ВыполнитьВычисления()
знч Массив = [10, 20, 30, 40, 50]
знч Сумма = ВыполнитьОперацию(ВидОперации.Сумма, Массив) // 150
знч Среднее = ВыполнитьОперацию(ВидОперации.Среднее, Массив) // 30
знч Максимум = ВыполнитьОперацию(ВидОперации.Максимум, Массив) // 50
знч Минимум = ВыполнитьОперацию(ВидОперации.Минимум, Массив) // 10
;