Для организации повторяющихся вычисленией в 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).
![]() |
В ходе выполнения цикла управляющая переменная меняется от значения |
При задании оператора цикла for-from
обязательным является только блок do
, определяющий тело цикла, причем он может быть единственным блоком цикла:
do последовательность операторов end do
Подобная конструкция определяет бесконечный цикл, прервать выполнение которого может только один из операторов: break, return, quit
или возникновение ошибки.
Все остальные блоки цикла for-from
являются необязательными и могут задаваться в произвольном порядке за одним исключением: если присутствует блок for
, то он должен быть задан первым. Если какой-либо блок не задан, то его параметры по умолчанию принимают следующие значения:
for
- фиктивная переменнаяfrom
- 1by
- 1to
-infinity
while
-true
Если в операторе цикла отсутствуют все необязательные блоки за исключением блока 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;
|
Переменная цикла |
http://detc.ls.urfu.ru/assets/amath0011/mp4.htm