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.

Синтаксис

for i from start to stop do
  body
end_for

for i from start to stop step stepwidth do
  body
end_for

_for(i, start, stop, stepwidth, body)
for i from start downto stop do
  body
end_for

for i from start downto stop step stepwidth do
  body
end_for

_for_down(i, start, stop, stepwidth, body)
for x in object do
  body
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, stop и stepwidth, это - i = stop плюс или минус stepwidth.

Аргументы start, stop, stepwidth и object оценены только однажды в начале цикла и не после каждой итерации. Например, если object изменяется на шаге цикла, x все еще пробегает все операнды исходного объекта.

Из циклов можно выйти преждевременно с помощью оператора break. Шаги цикла могут быть пропущены с помощью оператора next. Cf. Пример 2.

Ключевое слово end_for может быть заменено ключевым словом end. Cf. Пример 3.

Вместо обязательные инструкции циклов, эквивалентные вызовы функций могут использоваться _for, _for_down или _for_in. Cf. Пример 4.

$ - оператор часто является более изящным обозначением для for - циклы.

_for, _for_down и _for_in являются функциями системного ядра.

Примеры

Пример 1

Тело следующего цикла состоит из нескольких операторов. Значение переменной цикла, 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:

Пример 2

Из циклов можно выйти преждевременно с помощью оператора 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:

Пример 3

Круги могут быть замкнуты с ключевым словом 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:

Пример 4

Этот пример демонстрирует соответствие между функциональным и обязательной формой циклов 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

Параметры

i, x

Переменная цикла: идентификатор или локальная переменная (DOM_VAR) процедуры

start

Начальное значение для i: вещественное число. Это может быть целым числом, рациональным числом или числом с плавающей точкой.

stop

Останавливающееся значение для i: вещественное число. Это может быть целым числом, рациональным числом или числом с плавающей точкой.

stepwidth

Ширина шага: положительное вещественное число. Это может быть целым числом, рациональным числом или числом с плавающей запятой. Значение по умолчанию равняется 1.

object

Произвольный объект MuPAD®

body

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

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

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

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

Функции MuPAD

Темы