while




Les boucles enfin ! Vous allez voir, c'est comme les conditionnelles, on a besoin de booléens !


Il existe plusieurs types de boucles, nous allons commencer par étudier la boucle while qui a besoin d'un booléen pour fonctionner.

int main()
{
    int monBooleen = 1;

    while (monBooleen)
    {
        printf("Vive La STI2D !\n");
    }

    return 0;
}


Voici comment s'utilise while, c'est comme le if.


Ici, tant que (tant que est la traduction de while) monBooleen est vrai, la boucle continue, c'est à dire que toutes les instructions entre les accolades sont exécutés.


Mais alors Vive Tetdoss ! est affiché à l'infini ?


Vous avez tout compris ! J'obtiens ça en console :



Je n'ai pas écrit Vive La STI2D ! à l'infini pour une simple raison de mise en page.


Le but est d'éviter les boucles infinis, les programmes n'aiment pas ça .


Notez tout de même que les boucles infinies sont utilisées quelques fois (pour afficher une fenêtre à l'écran par exemple).


Si on rend faux monBooleen, la boucle s'exécutera une seule fois.

int main()
{
    int monBooleen = 1;

    while (monBooleen)
    {
        printf("Vive La STI2D !\n");
        monBooleen = 0;
    }

    return 0;
}


Ici, on rend faux monBooleen pendant l'exécution de la boucle au premier tour, donc la fonction printf est appelée une seule fois.

Vive La STI2D !


Voilà, il serait plus intéressant je vous l'accorde, de choisir le nombre de tours de la boucle et non pas 1 ou l'infini comme tout à l'heure, sinon la boucle sert à rien en fait .


Vous souvenez-vous de la variable i dont sa valeur a tendance à varier à l'aide d'opérateurs d'accumulation ?


C'est le moment de découvrir toute sa puissance.

int main()
{
    int i = 0;

    while (i < 10)
    {
        printf("Vive La STI2D !\n");
        i++;
    }

    return 0;
}


Vive Tetdoss ! est affiché 10 fois !


Tant que i est strictement inférieur (<) à 10, on répète la boucle.


Comme i est initialisé à 0, la boucle est bien répétée 10 fois !


Pour mieux comprendre, je vous modifie le printf :

printf("i = %d\n", i);


Ce code source affiche la valeur de i à chaque tour de boucle...

i = 0

i = 1

i = 2

i = 3

i = 4

i = 5

i = 6

i = 7

i = 8

i = 9


Voilà, je trouve ce code source très intuitif, i est incrémenté (++) à chaque tour.

break, continue


On peut utiliser un while pour faire un simple test comme un if ?


Oui mais ça ne sert à rien, autant utiliser un if franchement, mais pour votre culture voici un code source (à ne jamais copier évidemment) :

int main()
{
    int age = 0;

    printf("Quel age avez-vous ? ");
    scanf("%d", &age);

    while (age >= 18)
    {
        printf("\nTu es majeur !");
        break;
    }

    return 0;
}


Le mot clé break permet de sortir d'un bloc d'instructions.


Il permet ici de stopper la boucle et donc d'y sortir, c'est le contraire du mot clé continue qui permet de passer directement à la prochaine itération (une itération est un tour de boucle, i comme itérateur ), continue s'utilise de la même façon que break.

continue;


C'est tout pour la boucle while, elle est très facile à utilisée mais il existe d'autres types de boucles, il ne faudra donc pas toujours utiliser while.

Créé avec HelpNDoc Personal Edition: Produire des aides en ligne pour les applications Qt