в то время как

цикл while с условием продолжения, чтобы повторить, когда условие верно

Синтаксис

while expression
    statements
end

Описание

пример

while expression, statements, end выполняет выражение и повторяет выполнение группы операторов в цикле, в то время как выражение верно. Выражение верно, когда его результат непуст и содержит только ненулевые элементы (логический или действительный числовой). В противном случае выражение является ложным.

Примеры

свернуть все

Используйте цикл while, чтобы вычислить factorial(10).

n = 10;
f = n;
while n > 1
    n = n-1;
    f = f*n;
end
disp(['n! = ' num2str(f)])
n! = 3628800

Считайте количество строк кода в файле magic.m. Пропустите пустые строки и комментарии с помощью оператора continue. continue пропускает остающиеся инструкции в цикле while и начинает следующую итерацию.

fid = fopen('magic.m','r');
count = 0;
while ~feof(fid)
    line = fgetl(fid);
    if isempty(line) || strncmp(line,'%',1) || ~ischar(line)
        continue
    end
    count = count + 1;
end
count
count = 31
fclose(fid);

Суммируйте последовательность случайных чисел, пока следующее случайное число не будет больше, чем верхний предел. Затем выйдите из цикла с помощью оператора break.

limit = 0.8;
s = 0;

while 1
    tmp = rand;
    if tmp > limit
        break
    end
    s = s + tmp;
end

Больше о

свернуть все

Выражение

Выражение может включать операторы отношения (такие как < или ==) и логические операторы (такие как &&, || или ~). Используйте логические операторы and и or, чтобы создать составные выражения. MATLAB® выполняет составные выражения слева направо, придерживаясь правил приоритета оператора.

В условном выражении блока while...end логические операторы & и | ведут себя как операторы короткой схемы. Это поведение совпадает с && и ||, соответственно. Начиная с && и || последовательно короткая схема в условных выражениях и операторах, это - хорошая практика, чтобы использовать && и || вместо & и | в рамках выражения. Например,

x = 42;
while exist('myfunction.m','file') && (myfunction(x) >= pi)
    disp('Expressions are true')
    break
end

Первая часть выражения оценивает ко лжи. Поэтому MATLAB не должен оценивать вторую часть выражения, которое привело бы к неопределенной функциональной ошибке.

Советы

  • Если вы непреднамеренно создаете бесконечный цикл (то есть, цикл, который никогда не заканчивается самостоятельно), остановите выполнение цикла путем нажатия Ctrl+C.

  • Если условное выражение оценивает к матрице, MATLAB оценивает операторы, только если все элементы в матрице верны (ненулевой). Чтобы выполнить операторы, если какой-либо элемент верен, перенесите выражение в функцию any.

  • Чтобы программно выйти из цикла, используйте оператор break. Чтобы пропустить остальную часть инструкций в цикле и начать следующую итерацию, используйте оператор continue.

  • Когда вложение много операторов while, каждый оператор while требует ключевого слова end.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Представлено до R2006a