while

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 = 34
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 ключевое слово.

  • while MATLAB цикл похож на do...while цикл на других языках программирования, таких как C и C++. Однако while выполняет условное выражение в начале цикла, а не конца.

    do  % Not valid MATLAB syntax
        statements
    while expression
    

    Подражать поведению do...while цикл, установленный начальное условие while к true и поместите условное выражение в цикле. Например, реализуйте do...while цикл выше при помощи while MATLAB цикл.

    while true
        statements
        if ~expression
            break
        end
    end
    

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

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

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