Boucle while

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Article principal : structure de contrôle.
Boucle while

En informatique, la boucle while, francisée en boucle tant que, une structure de contrôle permettant de réaliser une boucle qui permet au code d'être exécuté de façon répétée sur la base d'une condition booléenne donnée. La boucle while peut être considérée comme une répétition de l'instruction if.

Fonctionnement[modifier | modifier le code]

Une boucle while est constituée d’un bloc de code source et d’une condition. À l’exécution, la condition est d’abord évaluée, et si elle est vraie, le bloc de code source est évalué. Ceci est répété jusqu’à ce que la condition soit fausse.

Par exemple, en langage C (tout comme en Java, C#, Objective-C et C++, qui utilisent tous la même syntaxe dans ce cas), le morceau de code source

int x = 0;
while (x < 5) 
{
    printf ("x = %d\n", x);
    x++;
}

vérifie d’abord que x est strictement inférieur à 5, comme c’est le cas, le corps de la boucle à répéter est exécuté, où la fonction printf est exécutée et où x est incrémenté de 1. Après avoir exécuter toutes les instructions de l’intérieur de la boucle, la condition est de nouveau évaluée, et si elle est vraie, le corps de la boucle est de nouveau exécuté. Ceci se répète jusqu’à ce que x soit égal à 5.

Noter qu’il est possible, et dans certains cas voulu, que la condition soit toujours vraie, créant une boucle infinie. Quand une telle boucle est créée volontairement, il y a généralement une autre instruction (comme un break) qui contrôle la sortie de la boucle. Par exemple :

while (true) 
{
    // faire des choses compliquées
    if (condition) break;
    // faire d’autres choses
}

Structures équivalentes[modifier | modifier le code]

En langage C,

while (condition) 
{
    instructions;
}

est équivalent à

if (condition) 
{
    do 
    {
        instructions;
    } while (condition);
}

ou

while (true) 
{
    if (!condition) break;
    instructions;
}

ou

    goto TEST;
DEBUT_BOUCLE:
    instructions;
TEST:
    if (condition) goto DEBUT_BOUCLE;

ou

TEST:
    if (!condition) goto FIN_BOUCLE;
    instructions
    goto TEST;
FIN_BOUCLE:

Les deux derniers exemples ne sont pas reccomandés, à cause des instructions "goto" qui rendent l’exécution plus difficile à comprendre; ils ne sont normalement utilisés qu’en dernier recours.

Aussi, en langage C et dans les langages similaires, une boucle while est une boucle for sans instruction d’initialisation ni de comptage, par exemple :

for ( ; condition; )
{
    statements;
}

Exemples[modifier | modifier le code]

BASIC - QBasic et Visual Basic[modifier | modifier le code]

Dim compteur As Integer = 10
 
Do While compteur > 0
    compteur = compteur - 1
Loop

C et C++[modifier | modifier le code]

int main ()
{
    int compteur = 5;
    long factorielle = 1;
 
    while (compteur > 1)
    {
        factorielle *= compteur--;
    }
    printf("%d", factorielle);
    return 0;
}

En C, on pourra inclure l’entête standard stdio.h, et en C++ cstdio.

Java, C# et D[modifier | modifier le code]

Le code source de la boucle est le même en Java, C# et en D :

int compteur = 5;
long factorielle = 1;
 
while (compteur > 1)
{
   factorielle *= compteur--;
}

En Java, le résultat peut être affiché avec :

System.out.println(factorielle);

L’équivalent en C++ :

System.Console.WriteLine(factorielle);

Et en D :

writefln(factorielle);

Voir aussi[modifier | modifier le code]