• 10 hours
  • Easy

Free online content available in this course.

You can get support and mentoring from a private teacher via videoconference on this course.

Got it!

Last updated on 1/7/13

Le 'si... alors'

Log in or subscribe for free to enjoy all this course has to offer!

Ce chapitre posera les bases de l'action sous condition avec Autoit, en utilisant les opérateurs logiques associés.

L'action sous condition

Qu'entends-tu par "l'action sous condition" ?

C'est très simple, et vous allez vite vous en rendre compte.

Cette logique de l'action sous condition peut etre résumée par la phrase suivante :
"Si j'ai faim, je vais dans le frigo me chercher une banane. Sinon, je mange une glace." (L'Abus de nourriture est dangereux pour la santé.)

Comment fonctionnent les actions sous condition ?

Un des piliers de la programmation, tout language confondu, est "l'action sous condition".
Cela se présente sous la forme :

SI (proposition-à-vérifier est vraie ou fausse) ALORS :
   ...
   on fait ça
   ...
SINON
    ...
   on fait ça
    ...
FINI

Toute la profondeur d'un programme est basée sur cette architecture.
En Autoit on a les possibilités suivantes.

If\Then\ElseIf\Else\EndIf

C'est le mode le plus connu, d'ailleurs en AutoIt, ca ressemble drôlement au Basic, vous ne trouvez pas ? ;)
Voila un exemple classique :

If (proposition-à-vérifier est vraie ou fausse) Then
        ; Actions à effectuer
ElseIf (proposition-à-vérifier-2 est vraie ou fausse) Then
        ; Actions à effectuer
Else ;Si n'importe quoi d'autre
        ; Actions à effectuer
EndIf ;on clos la condition

Ce qui pourrait donner :

$note_de_maths = 7.5
If $note_de_maths >= 15  Then
        MsgBox(0,"Tutoriel Autoit","Très bien, continue comme ça !")
ElseIf $note_de_maths >= 8 Then
        MsgBox(0,"Tutoriel Autoit","Peut mieux faire !")
Else ;Si n'importe quoi d'autre
         MsgBox(0,"Tutoriel Autoit","Élève assidu qui se retourne parfois... pour regarder le tableau.")
EndIf ;on clot la condition

Les opérateurs utilisés ici (= et >=) sont expliqués ci-après.

Select\Case\EndSelect

Un autre mode de programmation, qui n'en est pas moins pratique et intéressant, est la condition par "case".
Je m'explique :

ACTIVATION DU MODE SELECTIF
        Case n°1 (à activer si proposition-à-vérifier est vraie)
                 ; Actions à effectuer

        Case n°2 (à activer si proposition2-à-vérifier est vraie)
                 ; Actions à effectuer

        Case n°3 (à activer si proposition3-à-vérifier est vraie)
                 ; Actions à effectuer
;etc.
FIN DU MODE SELECTIF

Ce qui se traduit par :

Select
        Case (à activer si proposition-à-vérifier est vraie)
                 ; Actions à effectuer

        Case (à activer si proposition2-à-vérifier est vraie)
                 ; Actions à effectuer

        Case (à activer si proposition3-à-vérifier est vraie)
                 ; Actions à effectuer
;etc.
EndSelect

Cette méthode est très utile pour simplifier la lisibilité du texte dans une boucle par exemple.

Switch\Case\EndSwitch

C'est une variante du Select. C'est quasiment la même chose, à l'exception qu'elle est généralement utilisée pour les variations de valeur d'une même variable.
Un exemple tout de suite, un peu plus approfondi pour une fois :

$var = 30

Switch $var
     Case 1 To 10
         MsgBox(0, "Exemple", "$var est plus grand que 1 et moins grand que 11")

     Case 11 To 20
         MsgBox(0, "Exemple", "$var est plus grand que 10 et moins grand que 21")

     Case 21 To 30
         MsgBox(0, "Exemple", "$var est plus grand que 20 et moins grand que 31")

     Case 31 To 40
         MsgBox(0, "Exemple", "$var est plus grand que 30 et moins grand que 41")

     Case Else
         MsgBox(0, "Exemple", "$var est plus grand que 40 ou inférieur ou égal à 0")

EndSwitch

Ici, on va "switcher" dans la variable $var, pour différents intervalles. En l'occurence, c'est la case 21 To 30 qui va s'activer. Ce mode permet donc de ne tester qu'une variable, mais c'est le plus lisible. On l'utilisera pratiquement toujours lors de la création de GUI que vous verrez dans la partie concernée. En effet, on devra alors verifier les actions faites par l'utilisateur, et une variable contiendra ces informations, variable qu'on testera avec un Switch.

Les opérateurs

Vous avez déjà aperçu le =, mais il existe d'autres opérateurs :

Opérateur

Signification

=

égal

>

supérieur

<

inférieur

<=

inférieur ou égal

>=

supérieur ou égal

<>

différent

Ces opérateurs sont très simples à utiliser.

Exemple 1

L'utilisateur doit entrer le bon mot de passe pour lancer le programme.

$pass = "mot de passe"
$input = InputBox("Tutoriel", "Entrez le mot de passe :")

If ($input <> $pass) Then
    MsgBox(0,"Tutoriel", "Mauvais mot de passe !")
Else
    MsgBox(0,"Tutoriel", "Le mot de passe est correct !")
EndIf

Ici, l'opérateur signifie 'différent de'. S'il est vérifié, alors on affiche "Mauvais mot de passe !".

Exemple 2

Notre programme vérifie si le nombre entré par l'utilisateur est bien positif ou nul.

$nombre = InputBox("Tutoriel", "Entrez un nombre :")

If ($nombre >= 0) Then
    MsgBox(0,"Tutoriel", "Ce nombre est positif.")
Else
    MsgBox(0,"Tutoriel", "ce nombre est négatif.")
EndIf

Il est également possible de faire des propositions plus élaborées grâce aux opérateurs ET, OU qui se traduisent en Autoit par AND, OR.

Exemple 3

L'utilisateur doit entrer un bon mot de passe parmi les deux possibles.

$pass1 = "mot de passe"
$pass2 = "autoit fr"

$input = InputBox("Tutoriel", "Entrez le mot de passe :")

If ( ($input <> $pass1) AND ($input <> $pass2) ) Then
    MsgBox(0,"Tutoriel", "Mauvais mot de passe !")
    Exit
Else
    MsgBox(0,"Tutoriel", "Le mot de passe est correct !")
    ...suite...
EndIf
Exemple 4

Notre programme vérifie si le nombre entré par l'utilisateur est bien compris entre 0 et 10.

$nombre = InputBox("Tutoriel", "Entrez un nombre :")

If (($nombre >= 0) AND ($nombre <= 10)) Then
    MsgBox(0,"Tutoriel", "Ce nombre est compris entre 0 et 10.")
Else
    MsgBox(0,"Tutoriel", "Ce nombre n'est pas compris entre 0 et 10.")
EndIf

Recherche des conditions

Il peut arriver qu'une proposition soit dure à trouver, essayez alors la technique suivante :

  • vous n'arrivez pas à trouver la proposition (1) à mettre pour que l'action s'effectue,

  • essayez alors de trouver la proposition (2) à mettre pour que l'action NE s'effectue PAS.

  • il suffira alors d'un peu d'astuce pour trouver la (1) à partir de la (2).

Essayons sur l'exemple 3

Dans cet exemple nous voulons afficher un message d'erreur si le mot de passe entré par l'utilisateur ne correspond à aucun des deux mots de passe enregistrés dans le programme, et continuer dans le cas contraire.
Or nous n'arrivons pas à trouver la proposition correspondante.

Cherchons donc la proposition pour que le message d'erreur ne s'affiche pas.

=> Le programme ne doit pas afficher d'erreur si le mot de passe fourni par l'utilisateur correspond à l'un des deux mots de passe enregistrés dans le programme.

On aurait donc la proposition suivante : If ( ($input = $pass1) OR ($input = $pass2) ) (2).
Cette proposition peut être plus facile à trouver.

La proposition (1) se trouve en inversant la (2), en utilisant la correspondance suivante :

Image utilisateur
( ($input = $pass1) OR ($input = $pass2) ) (2) ==> ( ($input <> $pass) AND ($input <> $pass1) ) (1)

On retrouve bien notre proposition.

On aurait donc pu écrire notre exemple 3 de la manière suivante :

$pass1 = "mot de passe"
$pass2 = "autoit fr"

$input = InputBox("Tutoriel", "Entrez le mot de passe :")

If ( ($input = $pass1) OR ($input = $pass2) ) Then
    MsgBox(0,"Tutoriel", "Le mot de passe est correct !")
Else
    MsgBox(0,"Tutoriel", "Mauvais mot de passe !")
EndIf

Vous avez tout compris ? Alors c'est le moment de passer à la pratique. :)

Mini-TP

Que pensez-vous d'un mini-TP ? C'est très simple, vous demandez à l'utilisateur le jour, et vous lui répondez en fonction de ce jour !

  1. On demande à l'utilisateur d'entrer le jour d'aujourd'hui : la fonction InputBox semble tout indiquée.
    Pour savoir comment l'utiliser, consultez l'aide comme nous vous l'avons appris (pour ceux dont la mémoire joue des tours, il faut appuyer sur F1 dans Scite4Autoit).

  2. On récupère la variable $jour, et on la traite.

Essayez d'écrire ce programme tout seul, sinon voilà une solution :

$jour = InputBox("Tutorial", "Quel jour sommes-nous ?")

If ($jour = "Vendredi") Then
    msgbox(0,"Tutoriel","c'est bientôt le week-end !")
Else
    If ($jour = "Lundi") Then
        msgbox(0,"Tutoriel","Bon début de semaine !")
    Else
        msgbox(0,"Tutorial","Comment se passe la semaine ?")
    EndIf
EndIf
Que se passe-t-il si nous entrons "Lundi" ?

La première condition If ($jour = "Vendredi") est fausse, on saute donc les actions présentes dans le "If" et on continue dans le "Else".
On arrive alors à un deuxième si-alors, la condition ($jour = "Lundi") est vraie ! On effectue donc les actions présentes dans le If, c'est-à-dire afficher "Bon début de semaine !", et on saute les actions présentes dans le Else.

Que se passe-t-il si nous entrons Mardi ?

La première condition If ($jour = "Vendredi") est fausse, on continue dans le Else
On arrive à la seconde condition If ($jour = "Lundi") qui est fausse également, on continue donc dans le Else, et on affiche donc "Comment se passe la semaine ?".

Que se passe-t-il si nous entrons Vendredi ?

La première condition If ($jour = "Vendredi") est vraie !
On effectue donc les actions présentes dans le If, c'est-à-dire afficher "C'est bientôt le weekend !", et on saute le Else.

Que diriez-vous d'appliquer l'action sous condition aux boucles ? Ça vous dit ? Tant mieux, car c'est le chapitre qui suit.

Example of certificate of achievement
Example of certificate of achievement