exponenta event banner

в то время как

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

В пределах условного выражения 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++ с помощью MATLAB ® Coder™

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