for
, from
, to
, step
, end_for
, _for_in
, downto
, _for_downto
Цикл for
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
Чтобы использовать цикл for в MATLAB®, смотрите for
.
fori
fromstart
tostop
dobody
end_for fori
fromstart
tostop
stepstepwidth
dobody
end_for _for(i
,start
,stop
,stepwidth
,body
) fori
fromstart
downtostop
dobody
end_for fori
fromstart
downtostop
stepstepwidth
dobody
end_for _for_down(i
,start
,stop
,stepwidth
,body
) forx
inobject
dobody
end_for _for_in(x
,object
,body
)
for - end_for
оператор повторения, обеспечивающий цикл для автоматической итерации в области значений чисел или объектов.
При вводе постепенно увеличивающегося цикла
for i from start to stop step stepwidth do body end_for
,
присвоение i := start
сделан. Тело выполняется с этим значением i
(тело может повторно присвоить новое значение i
). После того, как все операторы в теле выполняются, цикл возвращается к началу тела, i := i + stepwidth
шага и проверяет останавливающийся критерий
i > stop
. Если FALSE
, тело выполняется снова с новым значением i
. Если TRUE
, цикл сразу отключен, не выполняя тело снова.
Постепенно уменьшающийся цикл
for i from start downto stop step stepwidth do body end_for
реализует соответствующее поведение. Единственная разница - то, что по возврату к началу тела, переменная цикла постепенно уменьшается i := i - stepwidth
перед останавливающимся критерием i < stop
проверяется.
Цикл for x in object do body end_for
выполняет итерации x
по всем операндам объекта. Этот цикл эквивалентен
for i from 1 to nops(object) do x := op(object, i); body end_for
Как правило, object
может быть список, последовательность выражения, массив или hfarray. Обратите внимание на то, что другие контейнерные объекты, такие как конечные множества или таблицы не имеют естественного внутреннего упорядоченного расположения, т.е. заботу нужно соблюдать, если цикл ожидает определенное упорядоченное расположение итеративных шагов.
Тело цикла может состоять из любого количества операторов, которые должны быть разделены любой двоеточием :
или точка с запятой ;
. Последний оцененный результат в теле распечатан на экране как возвращаемое значение цикла. Используйте print
в цикле, чтобы видеть промежуточные результаты.
Переменная цикла i
, соответственно x
, может иметь значение, прежде чем цикл запустится. После того, как цикл отключен, он имеет значение, которое было присвоено на последнем шаге цикла. Как правило, в постепенном увеличении или постепенном уменьшении цикла с целочисленными значениями start
остановка
, и stepwidth
, это - i
= stop
плюс или минус stepwidth
.
Аргументы start
остановка
, stepwidth
, и object
оценены только однажды в начале цикла и не после каждой итерации. Например, если object
изменяется на шаге цикла, x
все еще пробегает все операнды исходного объекта.
Из циклов можно выйти преждевременно с помощью break
оператор. Шаги цикла могут быть пропущены с помощью next
оператор. См. Пример 2.
Ключевое слово end_for
может быть заменен ключевым словом end
. См. пример 3.
Вместо обязательные инструкции циклов, эквивалентные вызовы функций _for
, _for_down
, или _for_in
может использоваться. См. Пример 4.
$
- оператор часто является более изящным обозначением для for
- циклы.
_for
, _for_down
и _for_in
функции системного ядра.
Тело следующего цикла состоит из нескольких операторов. Значение переменной цикла i
перезаписывается, когда цикл вводится:
i := 20: for i from 1 to 3 do a := i; b := i^2; print(a, b) end_for:
Переменная цикла теперь имеет значение, которое удовлетворило останавливающемуся критерию i > 3
:
i
Область значений итерации не ограничивается целыми числами:
for i from 2.2 downto 1 step 0.5 do print(i) end_for:
Следующий цикл подводит итог всех элементов в списке. Возвращаемое значение цикла является итоговой суммой. Это может быть присвоено переменной:
s := 0: S := for x in [c, 1, d, 2] do s := s + x end_for
Обратите внимание на то, что для наборов, внутреннее упорядоченное расположение является не обязательно тем же самым, как распечатано на экране:
S := {c, d, 1}
for x in S do print(x) end_for:
delete a, b, i, s, S, x:
Из циклов можно выйти преждевременно с помощью break
оператор:
for i from 1 to 3 do print(i); if i = 2 then break end_if end_for:
С next
оператор, выполнение команд на шаге может быть пропущено. Оценка продолжается в начале тела постепенно увеличенным значением переменной цикла:
a := 0: for i from 1 to 3 do a := a + 1; if i = 2 then next end_if; print(i, a) end_for:
delete i, a:
Круги могут быть замкнуты с ключевым словом end
вместо end_for
. Синтаксический анализатор распознает осциллограф end
операторы автоматически.
s:= 0: for i from 1 to 3 do for j from 1 to 3 do s := i + j; if i + j > 4 then break; end end end
delete s, i, j:
Этот пример демонстрирует соответствие между функциональным и обязательной формой for
циклы:
hold( _for(i, start, stop, stepwidth, (statement1; statement2)) )
for i from start to stop step stepwidth do statement1; statement2 end_for
Дополнительный step
пункт не использован путем определения значения NIL
для ширины шага:
hold( _for_down(i, 10, 1, NIL, (x := i^2; x := x - 1)) )
for i from 10 downto 1 do x := i^2; x := x - 1 end_for
hold( _for_in(x, object, body) )
for x in object do body end_for
|
Переменная цикла: идентификатор или локальная переменная ( |
|
Начальное значение для |
|
Останавливающееся значение для |
|
Ширина шага: положительное вещественное число. Это может быть целым числом, рациональным числом или числом с плавающей запятой. Значение по умолчанию равняется 1. |
|
Произвольный объект MuPAD® |
|
Тело цикла: произвольная последовательность операторов |