Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
default.doc
Скачиваний:
6
Добавлен:
14.09.2019
Размер:
230.91 Кб
Скачать
  1. Mathematica. Управляющие структуры повторения

Цикл (loop) - управляющая структура, которая вызывает повторяю­щееся выполнение некоторой последовательности инструкций. Повто­ряющиеся действия определяют тело цикла (loop body).

Всякая конструкция повторения имеет общие компоненты:

  • Момент, когда поток управления передается первому выражению внутри цикла, называют точкой входа данного цикла,

  • Очередной проход через цикл, реализующий повторяющиеся дейст­вия, называют итерацией,

  • Точка, в которой повторение тела цикла завершается и управление пе­редается инструкции, следующей за структурой повторения, называют точкой выхода из цикла.

При моделировании явлений мы встречаемся с двумя основными типами циклических процессов:

  • Цикл, управляемый счетчиком (count-controlled),

  • Цикл, управляемый событием (event-controlled)

Цикл, управляемый счетчиком, выполняется заданное число раз. Цикл, управляемый событием, завершается, когда внутри него происхо¬дит событие, дающее сигнал к прекращению работы.

Циклы, управляемые счетчиком, используют переменную управле¬ния циклом (loop control variable). Перед входом в цикл эта переменная инициализируется, а в теле цикла она должна получать приращение. На выходе из цикла переменная имеет значение, отличное от значения при входе в цикл. Такое состояние переменной цикла не совсем естественно. Удобнее, чтобы переменная цикла изменяла свои значения только внут¬ри цикла, то есть была локальной. Для этого существует механизм лока¬лизации переменных, который используется в конструкциях повторения Do, Table, Sum, Product. Одним из аргументов этих функций является итератор, или список итераторов, которые, являясь локальными пере¬менными, управляют количеством повторений вычислений.

Циклы, управляемые событием, делятся на две группы:

• Цикл с предусловием,

• Цикл с постусловием

Конструкция повторения While [test, loop body] является циклом с предусловием. При этом простое или составное выра¬жение loop body вычисляется до тех пор, пока условие test истинно. Пе¬ред каждой итерацией проверяется условие test. В случае, когда условие test становится ложным, управление передается инструкции, следующей за оператором While в потоке управления. Конструкция повторения

For [start, test, increment, loop body]

вычисляет выражение start, затем - выражение test. В случае, когда test имеет значение True, выполняется loop body и increment с целью измене¬ния счетчика, и снова вычисляется test. В случае, когда значением test является False, цикл завершает работу.

Тело цикла может содержать управляющую структуру - так созда¬ются вложенные циклы или более сложные управляющие структуры. При этом циклы и условные операторы вкладываются друг в друга пол¬ностью, они не могут частично пересекаться.

  1. Mathematica. Обработка аварийного (намеренного) выхода из упарвляющих конструкций

Для выхода из управляющих структур до завершения их естествен­ного выполнения используются операторы Break, Continue, Return, Throw, Abort, Interrupt. Оператор Break [ ] требует немедленного выхода из самой внутрен­ней структуры, но не покидая внешнюю. Управление при этом передает­ся в точку выхода внутренней структуры. Оператор Continue [ ] прерывает только текущую итерацию, но не весь цикл в целом. Он перемещает управление, минуя последующие вы­ражения итерации, на этап приготовления к новой итерации. Оператор Return [expression] прерывает выполнение управляющей структуры, позволяя при этом вернуть вычисленное выражение expres­sion.

Для аварийного или управляемого выхода из процесса вычислений Mathematica предлагает пару объектов, представляющих одну структуру. Простейший вид этой конструкции

Catch [expression [Throw [ value ] ] ] Catch-оператор образует конструкцию, согласно которой при встре­че внутри нее выражения Throw [value ] производится вычисление выра­жения value и его результат «выбрасывается» Catch. В этом случае вы­числения внутри конструкции прекращаются, результат выполнения оператора Catch - значение value.

Catch[Do[If[i>3,Throw[i]],{i,10}]] Конструкция Catch может не иметь onepaTopaThrow, в этом случае она возвращает значение вычисленного выражения expression, содержа­щегося внутри нее. Catch[NestList[l/(#+1)&,-2.5,б]] {-2.5, -0.666667, 3., 0.25, 0.8, 0.555556, 0.642857 } Catch[NestList[If[#>1,Throw[#],l/(#+l)]&,-2.5,6]] 3. Оператор Throw [value] может содержаться в другом выражении, которое, будучи вызванным функцией Catch, обеспечит передачу вычис­ленного выражения value.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]