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