Main Content

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 la expresión es verdadera. Una expresión es verdadera cuando su resultado no está vacío y solo contiene elementos distintos a cero (lógicos o numéricos reales). En caso 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 en blanco y los comentarios utilizando una instrucción continue. 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 = 37
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 utilizando 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, respetando las reglas de prioridad de los 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 && y ||, respectivamente. Dado que && y || se cortocircuitan sistemáticamente en las instrucciones y expresiones condicionales, se recomienda 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 tanto, MATLAB no necesita evaluar la segunda parte de la expresión, lo que provocaría un error de función indefinido.

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 en una matriz, MATLAB evalúa las instrucciones solo si todos los elementos de la matriz son verdaderos (distintos de cero). Para ejecutar las instrucciones si algún elemento es verdadero, reajuste la expresión en la función any.

  • Para salir de forma programática del bucle, utilice una instrucción break. Para omitir el resto de las instrucciones del bucle y comenzar la siguiente iteración, utilice una instrucción continue.

  • Cuando se anidan varias instrucciones while, cada instrucción while requiere una palabra clave end.

  • El bucle while de MATLAB es similar al bucle do...while en otros lenguajes de programación, como C y C++. Sin embargo, while evalúa la expresión condicional al principio del bucle y no al final.

    do  % Not valid MATLAB syntax
        statements
    while expression
    

    Para replicar el comportamiento del bucle do...while, establezca la condición inicial de while en true y coloque la expresión condicional dentro del bucle. Por ejemplo, implemente el bucle do...while arriba utilizando un bucle while de MATLAB.

    while true
        statements
        if ~expression
            break
        end
    end
    

Capacidades ampliadas

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

Historial de versiones

Introducido antes de R2006a