Иллюстрированный самоучитель по Mathematica 3/4

Условные выражения и безусловные переходы

Для подготовки полноценных программ помимо средств организации циклов необходимы и средства для создания разветвляющихся программ произвольной структуры. Обычно они реализуются с помощью условных выражений, позволяющих в зависимости от выполнения или невыполнения некоторого условия (condition) выполнять те или иные фрагменты программ.

Иллюстрированный самоучитель по Mathematica 3/4 › Основы программирования › Условные выражения и безусловные переходы
Рис. 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. Однако это усложняет исходный текст программы.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.