Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Операторы цикла. Операторы прерывания и обработки ошибок

Циклы

Для организации повторяющихся вычисленией в Maple V предусмотрены две формы оператора цикла: for-from и for-in. Первый оператор цикла является универсальным и включает в себя как циклы, повторяющиеся заданное число раз, так и циклы, выполняющиеся, пока некоторое булево выражение является истинным. Вторая форма цикла for реализует цикл по элементам списка или множества, и в других языках программирования он известен как цикл for-each.

Цикл for-from задается следующим образом:

| for имя| | from выражение1| | by выражение2| | to выражение3| | while булево выражение|
do (последовательность операторов) end do;

имя - имя управляющей переменой цикла,
выражение1, выражение2, выражение3 - выражения, задающие начальное значение переменной name, шаг ее изменения и конечное значение переменной name,
булево выражение - выражение, задающее условие, пока будет выполняться цикл (набор объектов между словами do и end do).

В ходе выполнения цикла управляющая переменная меняется от значения выражение1 до значения выражение3 с шагом, заданным выражение2. Если блок by отсутствует, то управляющая переменная будет меняться с шагом +1 при выражение1>выражение3. Выполнение цикла в обратном порядке, когда выражение1<выражение3 не предусмотрено. Цикл можно прервать с помощью дополнительного блока while. Цикл с таким блоком просчитывается до тех пор, пока истинно булево выражение, стящее после ключевого слова while. В последнем примере, обратите внимание, тело цикла является пустым.

При задании оператора цикла for-from обязательным является только блок do, определяющий тело цикла, причем он может быть единственным блоком цикла:

do последовательность операторов end do

Подобная конструкция определяет бесконечный цикл, прервать выполнение которого может только один из операторов: break, return, quit или возникновение ошибки.

Все остальные блоки цикла for-from являются необязательными и могут задаваться в произвольном порядке за одним исключением: если присутствует блок for, то он должен быть задан первым. Если какой-либо блок не задан, то его параметры по умолчанию принимают следующие значения:

for - фиктивная переменная
from - 1
by - 1
to - infinity
while - true

Если в операторе цикла отсутствуют все необязательные блоки за исключением блока while, то получается классический цикл while с предусловием: сначала проверяется истинность булева выражения условия, а затем, в зависимости от результатов проверки, либо выполняются операторы тела цикла (условие истинно), либо цикл завершает свою работу (условие ложно).

При использовании цикла while надо внимательно следить за тем, чтобы в теле цикла изменялись переменные, входящие в выражение условия, так как иначе цикл будет выполняться бесконечно.

Циклы могут быть вложенными. Это иллюстрирует следующий пример, в котором сначала создается пустая матрица, а затем определяются значения её элементов.

> M:=array(1..3,1..3):

> for i to 3 do for j to 3 do

> M[i,j]:=i^2-j^2 end do end do;

> print(M);

     [0 -3 -8]

     [        ]

     [3 0 -5]

     [        ]

     [8 5 0]

> evalm(M);# Другой способ вывода матрицы

     [0 -3 -8]

     [        ]

     [3 0 -5]

     [        ]

    [8 5 0]

Цикл for-in организует цикл по элементам объекта, который может быть представлен последовательностью, списком, множеством, суммой, произведением или строкой. Его общий синтаксис имеет вид:

| for имя| | in выражение1| | while (булево выражение)| do последовательность операторов od;

 

Переменная цикла name, определяемая в блоке for...in, последовательно принимает значения операндов объекта, как они оперделяются командой op(). Цикл выполняется столько раз, сколько операндов задано в объекте, если только булево выражение в необязательном блоке while не станет ложным раньше, чем будут последовательно перебраны все операнды объекта. В цикле данного вида переменная может меняться произвольно, принимая убывающие и отрицательные значения.
Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...