Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

while

Bucle while para repetir cuando la condición es verdadera

Sintaxis

while expression
    statements
end

Descripción

ejemplo

while expression, statements, end evalúa una expresión y repite la ejecución de un grupo de instrucciones en un bucle mientras que la expresión es verdadera. Una expresión es verdadera cuando su resultado no está vacío y contiene solo elementos no nulos (numéricos reales o lógicos). De lo contrario, la expresión es falsa.

Ejemplos

contraer todo

Utilice un bucle while para calcular factorial(10).

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

Cuente el número de líneas de código del archivo magic.m. Omita las líneas y los comentarios en blanco mediante una instrucción continue. La instrucción continue omite las instrucciones restantes del bucle while y comienza la siguiente iteración.

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);

Sume una secuencia de números aleatorios hasta que el siguiente número aleatorio sea mayor que un límite superior. A continuación, salga del bucle mediante una instrucción break.

limit = 0.8;
s = 0;

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

Más acerca de

contraer todo

Expresión

Una expresión puede incluir operadores relacionales (como < o ==) y operadores lógicos (como &&, || o ~ ). Utilice los operadores lógicos and y or para crear expresiones compuestas. MATLAB® evalúa las expresiones compuestas de izquierda a derecha, adhiriéndose a las reglas de precedencia de operadores.

Dentro de la expresión condicional de un bloque while...end, los operadores lógicos & y | se comportan como operadores de cortocircuito. Este comportamiento es el mismo que el de && y ||, respectivamente. Dado que && y || se cortocircuitan sistemáticamente en expresiones y declaraciones condicionales, es aconsejable utilizar && y || en lugar de & y | dentro de la expresión. Por ejemplo:

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

La primera parte de la expresión se evalúa como falsa. Por lo tanto, MATLAB no necesita evaluar la segunda parte de la expresión, lo que resultaría en un error de función no definido.

Sugerencias

  • Si inadvertidamente crea un bucle infinito (es decir, un bucle que nunca termina por sí mismo), detenga la ejecución del bucle pulsando Ctrl + C.

  • Si la expresión condicional se evalúa como una matriz, MATLAB evalúa las instrucciones solo si todos los elementos de la matriz son verdaderos (no cero). Para ejecutar las instrucciones si algún elemento es verdadero, delimite la expresión mediante la función any.

  • Para salir del bucle mediante programación, utilice una instrucción break. Para omitir el resto de instrucciones del bucle y comenzar la siguiente iteración, utilice una instrucción continue.

  • Al anidar una serie de instrucciones while, cada instrucción while requiere una palabra clave end.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Introducido antes de R2006a