Main Content

while

Boucle while permet de répéter tant que la condition est vraie

Syntaxe

while expression
    statements
end

Description

exemple

while expression, statements, end évalue une expression Expression et répète l’exécution d’un groupe d’instructions dans une boucle tant que l’expression est vraie. Une expression est vraie lorsque son résultat est non vide et ne contient que des éléments non nuls (logiques ou numériques réels). À défaut, l’expression est fausse.

Exemples

réduire tout

Utilisez une boucle while pour calculer factorial(10).

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

Comptez le nombre de lignes de code dans le fichier magic.m. Ignorez les lignes et les commentaires vides à l’aide d’une instruction continue. continue ignore les instructions restantes dans la boucle while et commence l’itération suivante.

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

Calculez la somme de nombres aléatoires jusqu’à ce que le prochain soit supérieur à une limite. Ensuite, sortez de la boucle à l’aide d’une instruction break.

limit = 0.8;
s = 0;

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

En savoir plus

réduire tout

Expression

Une expression peut inclure des opérateurs relationnels (tels que < ou ==) et des opérateurs logiques (tels que &&, || ou ~). Utilisez les opérateurs logiques and et or pour créer des expressions composées. MATLAB® évalue les expressions composées de gauche à droite, en respectant les règles de priorité d’usage des opérateurs.

Dans l’expression conditionnelle d’un bloc while...end, les opérateurs logiques & et | doivent se comporter comme des opérateurs court-circuit. Ce comportement est possible avec les opérateurs && et ||, respectivement. Étant donné que && et || sont systématiquement court-circuités dans les expressions et déclarations conditionnelles, nous vous recommandons d’utiliser && et || plutôt que & et | au sein de l’expression. Par exemple,

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

La première partie de l’expression est évaluée à « false ». Par conséquent, MATLAB n’a pas besoin d’évaluer la deuxième partie de l’expression, ce qui entraînerait une erreur de fonction non définie.

Conseils

  • Si vous créez par inadvertance une boucle infinie (à savoir une boucle qui ne s’interrompt jamais d’elle-même), arrêtez son exécution en appuyant sur Ctrl+C.

  • Si l’expression conditionnelle est évaluée par une matrice, MATLAB n’évalue les instructions que si tous les éléments de la matrice sont « true » (non nuls). Pour exécuter des instructions si au moins un élément est « true », encapsulez l’expression dans la fonction any.

  • Pour sortir de la boucle programmatiquement, utilisez une instruction break. Pour ignorer le reste des instructions dans la boucle et démarrer la prochaine itération, utilisez une instruction continue.

  • Lors de l’imbrication de plusieurs instructions while, chaque instruction while nécessite un mot clé end.

  • La boucle MATLAB while est similaire à la boucle do...while dans d’autres langages de programmation, tels que C et C++. Cependant, while évalue l’expression conditionnelle au début de la boucle plutôt qu’à sa fin.

    do  % Not valid MATLAB syntax
        statements
    while expression
    

    Pour imiter le comportement d’une boucle do...while, définissez la condition initiale de while sur true et placez l’expression conditionnelle à l’intérieur de la boucle. Par exemple, implémentez la boucle do...while ci-dessus en utilisant une boucle MATLAB while.

    while true
        statements
        if ~expression
            break
        end
    end
    

Capacités étendues

Génération de code C/C++
Générez du code C et C++ avec MATLAB® Coder™.

Historique des versions

Introduit avant R2006a