while, end_while, _while

“в то время как” цикл

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Для цикла с условием продолжения в MATLAB® смотрите while.

Синтаксис

while condition do
  body
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 является функцией системного ядра.

Примеры

Пример 1

Циклы 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:

Пример 2

Выразите те же операторы как цикл 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:

Пример 3

Булево выражение 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:

Пример 4

Также можно создать цикл while при помощи функциональной формы _while:

hold(_while(condition, (statement1; statement2)))
while condition do
  statement1;
  statement2
end_while

Параметры

body

Тело цикла: произвольная последовательность операторов

condition

Булево выражение

Возвращаемые значения

Значение последней команды, выполняемой в теле цикла. Если никакая команда не выполнялась, значение, NIL возвращен. Если тело цикла while не оценено из-за ложного условия, пустого объекта типа, DOM_NULL возвращен.

Смотрите также

Функции MuPAD

Темы