Main Content

while

while loop che si ripete quando la condizione è vera

Sintassi

while expression
    statements
end

Descrizione

esempio

while expression, statements, end valuta un’espressione e ripete l’esecuzione di un gruppo di dichiarazioni in un loop fintanto che l’espressione è vera. Un'espressione è vera quando il relativo risultato non è vuoto e contiene solo elementi diversi da zero (logici o numeri reali). Diversamente, l'espressione è falsa.

Esempi

comprimi tutto

Utilizzare un while loop per calcolare factorial(10).

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

Conteggiare il numero di linee di codice nel file magic.m. Saltare le righe vuote e i commenti utilizzando una dichiarazione continue. continue salta le istruzioni rimanenti nel while loop e inizia l’iterazione successiva.

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

Sommare una sequenza di numeri casuali fino a quando il numero casuale successivo non è maggiore di un limite superiore. Quindi, uscire dal loop utilizzando una dichiarazione break.

limit = 0.8;
s = 0;

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

Ulteriori informazioni

comprimi tutto

Espressione

Un’espressione può includere operatori relazionali (come < o ==) e operatori logici (come &&, || o ~). Utilizzare gli operatori logici and e or per creare espressioni composte. MATLAB® valuta le espressioni composte da sinistra verso destra, rispettando le regole di precedenza degli operatori.

All'interno dell'espressione condizionale di un blocco while...end, gli operatori logici & e | si comportano come operatori di cortocircuito. Questo comportamento è rispettivamente lo stesso di && e ||. Poiché && e || entrano costantemente in cortocircuito nelle espressioni e nelle dichiarazioni condizionali, è buona norma utilizzare && e || anziché & e | all’interno dell’espressione. Ad esempio,

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

La prima parte dell’espressione restituisce falso. Pertanto, non è necessario che MATLAB valuti la seconda parte dell’espressione che darebbe luogo un errore di funzione non definita.

Suggerimenti

  • Se si crea inavvertitamente un loop infinito (ossia un loop che non termina mai da solo), interrompere l'esecuzione del loop premendo Ctrl+C.

  • Se un’espressione condizionale ha come risultato una matrice, MATLAB valuta le dichiarazioni solo se tutti gli elementi nella matrice sono veri (diversi da zero). Per eseguire le dichiarazioni se un qualsiasi elemento è vero, racchiudere l'espressione nella funzione any.

  • Per uscire dal loop in modo programmatico, utilizzare una dichiarazione break. Per saltare il resto delle istruzioni nel loop e iniziare l’iterazione successiva, utilizzare una dichiarazione continue.

  • Quando si annidano un certo numero di dichiarazioni while, ciascuna dichiarazione while richiede una parola chiave end.

  • Il while loop di MATLAB è simile a un do...while loop in altri linguaggi di programmazione, come C e C++. Tuttavia, while valuta l’espressione condizionale all’inizio del loop piuttosto che alla fine.

    do  % Not valid MATLAB syntax
        statements
    while expression
    

    Per imitare il comportamento di un do...while loop, impostare la condizione inziale di while su true e inserire l'espressione condizionale all'interno del loop. Ad esempio, implementare il do...while loop di cui sopra utilizzando un while loop di MATLAB.

    while true
        statements
        if ~expression
            break
        end
    end
    

Funzionalità estese

Generazione di codice C/C++
Genera codice C e C++ con MATLAB® Coder™.

Cronologia versioni

Introduzione prima di R2006a