Условные выражения и безусловные переходы
Для подготовки полноценных программ помимо средств организации циклов необходимы и средства для создания разветвляющихся программ произвольной структуры. Обычно они реализуются с помощью условных выражений, позволяющих в зависимости от выполнения или невыполнения некоторого условия (condition) выполнять те или иные фрагменты программ.
Рис. 10.5. Продолжение вычислений после команды Interrupt[ ]
Функция IF
Как у большинства языков программирования, условные выражения задаются с помощью оператора или функции IF. Система Mathematica имеет функцию If, формы которой представлены ниже:
- If [condition, t, f] – возвращает t, если результатом вычисления condition является True, и f, если результат равен False;
- If [condition, t, f, u ] – то же, но дает и, если в результате вычисления condition не было получено ни True, ни False.
Следующий пример показывает создание программной процедуры с циклом Do, выход из которой реализуется с помощью функции If и директивы прерывания Aborted[ ]:
x :
=
1
; Print[
"i x"
];
Do[{If [i
=
=
5
, Abort[],
None
],
i
+
=
1
; x
+
=
2
*
i; Print[i,
" "
, N[x]]},
{i,
1
,
100
}]
i x
2
5
3
11
.
4
19
.
5
29
.
$Aborted
Return[x]
Return[
1
]
Тот же пример, но с применением директивы выхода из цикла Break [ ] в функции If показан ниже:
x :
=
1
; Print[
"i x"
];
Do[{If [i
=
=
5
, Break[ ],
None
],
i
+
=
1
; x
+
=
2
*
i; Print[i,
" "
, N[x]]},
{i,
1
,
100
}]
i x
2
5
.
3
11
.
4
19
.
5
29
.
Return[x]
Return[
29
]
В данном случае никаких специальных сообщений о выходе из цикла не выдается. Функция If обеспечивает ветвление максимум по двум ветвям программы. Для ветвления по многим направлениям можно использовать древовидные структуры программ с множеством функций If. Однако это усложняет исходный текст программы.