while

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

Синтаксис

while expression
    statements
end

Описание

пример

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

Примеры

свернуть все

Использование 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® вычисляет составные выражения слева направо, придерживаясь правил приоритета операторов.

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

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

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

Совет

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

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

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

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

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

    do  % Not valid MATLAB syntax
        statements
    while expression
    

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

    while true
        statements
        if ~expression
            break
        end
    end
    

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

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

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