Условные выражения и безусловные переходы
Функции-переключатели
Для организации ветвления по многим направлениям в современных языках программирования используются операторы-переключатели. В системе Mathematica множественное ветвление организовано с помощью функций Which и Switch:
- Which [test1, value1, test2, value2,…] – вычисляет в порядке следования каждый из testi, сразу возвращая именно ту величину из valuei, которая относится к первому testi, давшему True;
- Switch [expr, form1, value1, form2, value2,…] – вычисляет селектор expr, затем сравнивает его последовательно с каждой из меток formi, вычисляя и возвращая то valuei, которое соответствует первому совпадению.
Приведем примеры работы функции which:
Whicht1
=
=
2.1.2
=
=
2
,
2
,
3
=
=
3
,
3
]
2
Which[
1
=
=
2
, x,
2
=
=
2
, y,
3
=
=
3
, z]
y
Следующие примеры иллюстрируют работу функции Switch:
Switch[
1
,
1
, a,
2
, b,
3
, c]
a
Switch[
2
,
1
, a,
2
, b,
3
, c]
b
Switch[
3
,
1
, a,
2
, b,
3
, c]
c
Switch[
8
,
1
, a,
2
, b,
3
, c]
Switch[
8
,
1
, a,
2
, b,
3
, c]
Обратите внимание на последний пример – при неверном задании первого параметра (селектора) просто повторяется запись функции.
Следующий пример показывает возможность выбора с применением вещественных значений селектора и меток:
Switch[
8
.,
1.5
, a,
2.5
, b,
8
., c]
c
Switch[
1.5
,
1.5
, a,
2.5
, b,
8
., c]
a
Switch[
8
,
1.5
, a,
2.5
, b,
8
., c]
Switch[
8
,
1.5
, a,
2.5
, b,
8
., c]
Опять-таки, обратите внимание на последний пример – здесь использован селектор в виде целого числа 8, тогда как метка выбора – вещественное число 8. Выбор при этом не происходит, поскольку целочисленное значение 8 не является тождественным вещественной восьмерке.