Boucles
- Présentation d'un programme Apache OpenOffice Basic
- Utilisation des variables
- Variables de chaîne de caractères
- Variables numériques
- Variables booléennes
- Variables de date et d'heure
- Matrices
- Portée et durée de vie des variables
- Constantes
- Opérateurs
- Instructions conditionnelles
- Boucles
- Procédures et fonctions
- Traitement des erreurs
Une boucle répète l'exécution d'un bloc de code un nombre de fois donné. Certaines boucles peuvent également se répéter indéfiniment.
For...Next
La boucle For...Next effectue un nombre de passages déterminé. Le compteur de la boucle définit le nombre de fois qu'elle sera répétée. Dans l'exemple suivant, la variable I est le compteur de la boucle, avec une valeur initiale de 1. Le compteur est incrémenté de 1 à la fin de chaque passage. Lorsque la variable I vaut 10, la boucle s'arrête.
Dim I For I = 1 To 10 ' ... Inner part of loop Next I
Pour que le compteur de la boucle soit incrémenté d'une valeur supérieure à 1 à chaque passage, utilisez la fonction Step :
Dim I For I = 1 To 10 Step 0.5 ' ... Inner part of loop Next I
Dans l'exemple précédent, le compteur est incrémenté de 0,5 à la fin de chaque passage, et la boucle est exécutée 19 fois.
Vous pouvez également utiliser des valeurs de pas négatives :
Dim I For I = 10 To 1 Step -1 ' ... Inner part of loop Next I
Dans cet exemple, le compteur commence à 10 et décroît de 1 à chaque passage jusqu'à atteindre la valeur 1.
L'instruction Exit For permet de sortir prématurément d'une boucle For. Dans l'exemple suivant, la boucle se termine au cinquième passage :
Dim I For I = 1 To 10 If I = 5 Then Exit For End If ' ... Inner part of loop Next I
For Each
La variante de la boucle For Each...Next de VBA est prise en charge dans Apache OpenOffice Basic. Contrairement aux boucles For...Next, les boucles For Each ne font pas appel à un compteur explicite. Une boucle For Each indique au programme d'appliquer une opération à tous les éléments d'un jeu de données et non pas d'effectuer une opération n fois. Exemple :
Const d1 = 2 Const d2 = 3 Const d3 = 2 Dim a(d1, d2, d3) For Each i In a() ' ... Inner part of loop Next i
Do...Loop
L'instruction Do...Loop n'est pas liée à un nombre de passages fixe. En revanche, la boucle Do...Loop est répétée jusqu'à ce qu'une certaine condition soit remplie. Il existe quatre versions de la boucle Do...Loop. Dans les deux premiers exemples, il est possible que le code défini dans la boucle ne soit pas du tout exécuté (logique "exécuter 0 fois"). Dans les derniers exemples, le code est exécuté au moins une fois (les exemples suivants utilisent la condition A > 10) :
- La version Do While...Loop:
détermine avant chaque passe si la condition spécifiée après While est vraie et, si c'est le cas, exécute la boucle.
Do While A > 10 ' ... loop body Loop
- La version Do Until...Loop:
exécute la boucle tant que la condition spécifiée après Until reste fausse.
Do Until A > 10 ' ... loop body Loop
- La version Do...Loop While:
ne vérifie la condition qu'après la première passe de la boucle et se termine lorsque la condition après While est fausse.
Do ' ... loop body Loop While A > 10
- La version Do...Loop Until:
vérifie également la condition après la première passe, mais se termine lorsque la condition après Until est vraie.
Do ' ... loop body Loop Until A > 10
Tout comme pour la boucle For...Next, il est possible de sortir de la boucle Do...Loop avant la fin. La commande Exit Do permet d'interrompre une boucle à tout endroit.
Do If A = 4 Then Exit Do End If ' ... loop body Loop While A > 10
Exemple de programme : tri à l'aide de boucles imbriquées
Les boucles ont diverses fonctions. Elles permettent notamment d'effectuer des recherches dans des listes, de retourner des valeurs ou d'exécuter des tâches mathématiques complexes. L'exemple suivant constitue un algorithme qui trie une liste par nom à l'aide de deux boucles.
Sub Sort Dim Entry(1 To 10) As String Dim Count As Integer Dim Count2 As Integer Dim Temp As String Entry(1) = "Patty" Entry(2) = "Kurt" Entry(3) = "Thomas" Entry(4) = "Michael" Entry(5) = "David" Entry(6) = "Cathy" Entry(7) = "Susie" Entry(8) = "Edward" Entry(9) = "Christine" Entry(10) = "Jerry" For Count = 1 To 9 For Count2 = Count + 1 To 10 If Entry(Count) > Entry(Count2) Then Temp = Entry(Count) Entry(Count) = Entry(Count2) Entry(Count2) = Temp End If Next Count2 Next Count For Count = 1 To 10 Print Entry(Count) Next Count End Sub
Les valeurs sont interverties deux par deux plusieurs fois, jusqu'à ce qu'elles se trouvent classées par ordre croissant. Comme des bulles, les variables remontent peu à peu vers la bonne position. C'est pourquoi cet algorithme est connu sous le nom de tri à bulles.
Content on this page is licensed under the Public Documentation License (PDL). |