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