Mais quand j'attends que l'utilisateur fasse quelque chose, je ne sais pas combien de boucles je dois effectuer, comment faire ?
Nous allons alors utiliser une boucle plus adaptée, la boucle "Tant que".
Boucle de type "Tant que" (While - WEnd)
Cette boucle s'utilise quand le nombre de fois que l'action doit être effectuée est inconnu. Si la proposition est fausse dès le départ, la boucle ne se lance pas.
Cette boucle n'a pas besoin de compteur pour fonctionner, la boucle est simplement effectuée tant que la condition reste vraie.
Fonctionnement
Code : Autre1
2
3
4
5
| Tant que (condition est vraie)
On effectue ces actions
Fin |
Ce qui se traduit en Autoit par :
Code : Autre1
2
3
4
5
| While [signifie littéralement tant que] (proposition est vraie)
;Actions à effectuer
WEnd |
Exemple
Les boucles sont très utilisées pour attendre une action de l'utilisateur. En effet, il est impossible de savoir exactement quand l'utilisateur va enfin se décider à faire quelque chose. Alors c'est au programme de l'attendre (l'utilisateur est beaucoup plus long, si si je vous assure

).
Cesse tes bavardages inutiles, et continue ton tutoriel !
OK les amis, restons calmes !
Imaginons que la variable $quitter prenne la valeur 1 quand l'utilisateur décide de quitter le programme.
On a donc :
Code : Autre1
2
3
4
5
| While ( $quitter <> 1 )
;Actions du programme
WEnd |
Très souvent on va utiliser une boucle sans fin, c'est-à-dire que théoriquement elle ne s'arrêtera jamais.
Pour faire une boucle sans fin, on peut déclarer une boucle "tant que" de la manière suivante :
Code : Autre1
2
3
4
5
| While 1
;action à répéter sans fin
WEnd |
Cette boucle est ce que l'on peut appeler la partie principale du programme. Celui-ci va se balader dans la boucle en permanence, et s'il rencontre des
If valables (cf. actions sous conditions), il va faire différentes actions.
On va donc tout simplement dire au programme de faire des pauses de temps en temps.
Je sais que ce chapitre est très difficile (d'ailleurs je vous conseille de faire une pause après), mais voilà le code que j'ai utilisé afin de savoir combien de tours faisait le programme en 1 seconde :
Code : Autre1
2
3
4
5
6
| Local $t = TimerInit(),$i = 0 ; Declaration des variables
While TimerDiff($t)<=1000 ; Boucle principale. Tant que le temps est inférieur à une seconde, on additionne 1 à la variable $i
$i = $i + 1
WEnd
MsgBox(65,"Tutoriel",$i) ; On affiche $i |
Ici il n'y a qu'une chose nouvelle, la gestion des Timers. Ces derniers s'utilisent de la manière suivante.
Quand on le veut, on initialise le temps. Puis on demande par une boucle le temps écoulé depuis l'initialisation. Si vous ne voulez pas tout retenir, ne retenez pas ça.
Ce qu'il faut savoir, c'est que chez moi, en 1 seconde, le programme parcourt 175 000 fois la boucle.
Maintenant, nous allons voir une nouvelle fonction.
Sleep(Time)
Time est un entier en millisecondes. Pour pouvoir vérifier, n'oubliez pas d'appuyer sur
F1 dans Scite pour accéder à la documentation.
Par exemple :
Sleep(1000)
À la differences des fonctions timer[...](), Sleep() va mettre en pause le programme, ou littéralement le plonger en léthargie. Pour comprendre, ajoutez
Sleep(10) dans le code précédent.
Et alors , c'est pas 10 malheureuses millisecondes qui vont changer le monde !
Oh que si, essayez !
Chez moi, le programme ne fait plus que 65 tours au lieu de 175000. Ceci va permettre de libérer de la puissance pour l'ordinateur en restant tout à fait compétitif. Ne vous inquiétez pas, l'utilisateur ne va pas s'aperçevoir du changement, mais l'ordinateur si !
Donc à partir de maintenant, vous allez me faire ce plaisir, vous ajouterez un
Sleep(10) dans toutes vos boucles While.
On peut également retrouver la boucle "Pour", vue précédemment, de cette manière
Code : Autre1
2
3
4
5
6
7
| $i = <valeur de départ>
While ($i <> <valeur d arrivée>)
;actions à effectuer
$i = $i + <pas>
WEnd |