repeat, until, end_repeat, _repeat“повторите” цикл
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
repeatbodyuntilconditionend_repeat _repeat(body,condition)
repeat - end_repeat является циклом, который оценивает его тело, пока заданный критерий остановки не удовлетворен.
В цикле repeat первом body и затем оценен condition, пока condition не оценивает к TRUE.
В отличие от цикла while, тело цикла repeat всегда оценивается, по крайней мере, однажды.
Тело может состоять из любого количества операторов, которые должны быть разделены или двоеточием : или точкой с запятой ;. Только последний оцененный результат в теле (возвращаемое значение цикла) распечатан на экране. Используйте print, чтобы видеть промежуточные результаты.
Булево выражение condition должно быть приводимо или к TRUE или к FALSE. Внутренне, условие оценено в контексте отложенных вычислений функций _lazy_and и _lazy_or.
Операторы next и break могут использоваться в циклах repeat таким же образом как в циклах for.
Ключевое слово end_repeat может быть заменено ключевым словом end.
Обязательная форма repeat - end_repeat эквивалентна соответствующему вызову функционального _repeat. В большинстве случаев обязательная форма приводит к более простому коду.
Оператор $ часто является более изящным обозначением циклы for.
_repeat является функцией системного ядра.
Циклы repeat не показывают промежуточные результаты операторов в цикле:
i := 1: s := 0: repeat s := s + i; i := i + 1; until i >= 3 end_repeat
![]()
Выше, только возвращаемое значение цикла отображено. Используйте print, чтобы видеть промежуточные результаты:
i := 1:
s := 0:
repeat
print("intermediate sum" = s);
s := s + i;
i := i + 1;
s
until i >= 3
end_repeat![]()
![]()
![]()
delete i, s:
Выразите те же операторы как цикл repeat и как эквивалентный цикл while. В более сложных случаях вам могут быть нужны дополнительные инициализации переменных:
i := 1: repeat print(i); i := i + 1; until i = 3 end:
![]()
![]()
i := 1: while i < 3 do print(i); i := i + 1; end:
![]()
![]()
delete i:
Булево выражение condition должно оценить к TRUE или FALSE:
repeat condition := UNKNOWN; print(Condition = condition); until condition end_repeat:
![]()
Error: 'TRUE' or 'FALSE' expected. [repeat]
Чтобы избежать этой ошибки, измените останавливающийся критерий на condition <> TRUE:
repeat condition := UNKNOWN; print(Condition = condition); until condition = UNKNOWN end_repeat:
![]()
delete condition:
Также можно создать цикл repeat при помощи функциональной формы _repeat:
hold(_repeat((statement1; statement2), condition))
repeat statement1; statement2 until condition end_repeat
|
Тело цикла: произвольная последовательность операторов |
|
Значение последней команды, выполняемой в теле цикла. Если никакая команда не выполнялась, значение, NIL возвращен. Если тело цикла while не оценено из-за ложного условия, пустого объекта типа, DOM_NULL возвращен.