Crystal Reports Designer  

Boucles While (syntaxe Crystal)

Une boucle While peut être utilisée pour exécuter indéfiniment un bloc défini d'instructions.

Deux types de boucles While

Type de boucle Explication Exemple
Exemple de boucle While ... Do Dans la boucle While ... Do, la condition est évaluée, et si celle-ci est vraie, l'expression qui suit Do est également évaluée.

Après ce premier passage, la condition est de nouveau évaluée et, si celle-ci est vraie, l'expression qui suit Do est de nouveau évaluée.

Le processus se répète jusqu'à ce que la condition soit fausse.

While condition Do
   expression
Do ... While La boucle Do ... While, l'expression est évaluée une fois, quelle qu'elle soit.

La condition est ensuite évaluée et, si celle-ci est vraie, l'expression est de nouveau évaluée. Ce processus se poursuit jusqu'à ce que la condition soit fausse.

Do
   expression
While condition
Remarque   Les boucles While acceptent l'instruction Exit While qui assure une sortie immédiate de la boucle. Son utilisation est analogue à celle de l'instruction Exit For dans les boucles For. comme pour la boucle For, la boucle While considérée comme une expression renvoie toujours la valeur booléenne True (Vrai).

Exemple de boucle While ... Do

Dans l'exemple suivant, la première occurrence d'un chiffre est recherchée dans une chaîne d'entrée. Si un chiffre est trouvé, c'est la position du chiffre qui est renvoyée ; sinon c'est la valeur -1. Dans ce cas, la chaîne d'entrée est définie explicitement comme une constante chaîne, mais elle pourrait également être définie comme égale à un champ de base de données de type chaîne.

Par exemple, pour la chaîne d'entrée, "Les 7 nains", la formule renvoie 5, qui est la position du chiffre 7.

Local StringVar chaîneEntrée := "Les 7 nains";
Local NumberVar strLen := Length (chaîneEntrée);
Local NumberVar résultat := -1;
Local NumberVar i := 1;
While i <= strLen And résultat = -1 Do
(
   Local StringVar c := chaîneEntrée [i];
   If NumericText (c) Then
      résultat := i;
   i := i + 1;
);
result

Voir aussi

Pour éviter les boucles infinies