Aller au menu - Aller au contenu

Icône Elles sont belles mes variables !

Mise à jour : 10/11/2011
Difficulté : Facile Facile Creative Commons BY-NC-SA
3 274 visites depuis 7 jours, dont 188 sur ce chapitre classé 50/786
Ce chapitre relativement court vous permettra de vous familiariser avec les variables.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Présentation des variables

Tout d'abord, qu'est-ce qu'une variable ?

Une variable est un endroit où l'on stocke une ou plusieurs données en mémoire afin de pouvoir y accéder rapidement. Vous pouvez penser à une boîte aux lettres qui vous permet soit de mettre du courrier, soit d'en retirer, ou encore de lire le courrier sans l'enlever de la boîte aux lettres.
Par exemple, vous pouvez créer une variable pour stocker la réponse d'une question posée à l'utilisateur, ou le résultat d'une équation mathématique.

Chaque variable a son propre nom unique (comme une boîte aux lettres), qui doit commencer par le caractère [$] dollar et être formé uniquement de lettres, nombres et le caractère [_] tiret bas ou "underscore".

Autoit est laxiste avec les variables : une variable peut contenir absolument n'importe quoi.


Et oui ! Que ce soit une commande, une valeur, du texte, une fonction, un fichier, un tableau, on peut absolument mettre ce que l'on désire dans cette boîte virtuelle ! Vous n'avez pas besoin de déclarer auparavant que la variable contiendra un entier ou une chaîne de caractères par exemples, car Autoit s'en charge lui-même.

Quelques exemples



  • $var1
  • $my_variable
  • $ce_tuto_est_vraiment_genial

Quand vous créez une variable, son nom doit être significatif. Si vous créez des centaines de variables dans un code et que vous ne savez pas ce que représente chaque variable, vous allez avoir beaucoup de mal à le comprendre. :)

Il existe des variables un peu différentes, les macros.
Une macro est une variable spéciale qui ne peut pas être modifiée par l'utilisateur. Elle contient principalement des informations renvoyées par votre système d'exploitation, et commence par le caractère @.
Voir la sous-partie Les macros pour en savoir plus.

La portée d'une variable

Il y a trois méthodes principales pour déclarer une variable : une déclaration de variable s'effectue grâce aux mots-clés Global, Dim ou Local.

La différence entre Global, Dim et Local est leur portée dans le script :
  • Global = force la création d'une variable de portée globale.
  • Dim = portée locale si la variable n'existe pas déjà globalement (dans ce cas, ré-utilise la variable globale !).
  • Local = force la création d'une variable de portée locale ou interne à une fonction.


Pour simplifier



  • Global = création d'une variable (redéfinissable) dont la valeur se retrouve partout, y compris dans les fichiers inclus (Includes).
  • Dim = création d'une variable (redéfinissable) dont la valeur se retrouve uniquement dans le script en cours (cette variable ne peut pas être récupérée dans ou par un fichier inclus).
  • Local = même chose que précédemment, mais peut aussi limiter la portée de la variable dans une fonction (dans ce cas, faire la déclaration dans la fonction).


Si vous ne saisissez pas totalement, sachez que vous utiliserez le plus souvent Global, du moins tant que vous ne saurez pas utiliser les fonctions. C'est pour ces dernières que la portée locale devient intéressante, car notre variable ne sera connue que pendant l'exécution de la fonction et n'influencera pas le reste du script, et ceci même si vous utilisez le même nom.

Déclarer une constante


A ces trois méthodes s'ajoute une quatrième, Const, qui permet de créer une variable qui ne pourra pas être redéfinie dans le script. Elle ne doit jamais être réassigné sous peine d'erreur à l'exécution. On s'en sert pour définir les paramètres du programme afin d'être certain de ne jamais les modifier.

  • Const = création d'une variable (non-redéfinissable) dont la valeur se retrouve partout, y compris dans les fichiers inclus (Includes) sauf si sa portée est limitée par l'ajout des commandes Dim ou Local juste avant.


Exemples



  • Dim $var1
    Ici on declare localement la variable $var1.
  • Dim $var1, $myvariable = 10
    Ici, on déclare la variable $var1 et la variable $myvariable tout en lui attribuant la valeur 10.
  • Const $const1 = 1
    La variable $const1 aura pour valeur 1 et tout le long du code elle ne pourra pas en changer.
  • Local Const $const2 = 1
    La variable $const2 aura une valeur fixe de 1 limitée par la portée locale.

Il est aussi possible de déclarer une variable dynamiquement en lui affectant simplement une valeur (même nulle). Dans ce cas c'est la portée Dim qui est utilisée.


Exemple



  • $var1 = "create and assign"
    On assigne une chaîne de caractères à la variable $var1 sans l'avoir déclarée préalablement.


Cette méthode est très souvent utilisée car c'est de loin la plus simple, mais attention tout de même, la variable n'aura pas de portée globale.

L'utilisation en début de script de la directive AutoItSetOption("MustDeclareVars", 1)
vous obligera à déclarer vos variables grâce aux mots-clés. Il peut être judicieux de la mettre dans un script afin de ne pas vous tromper en oubliant la déclaration d'une variable globale.

Les tableaux

Mais d'abord, c'est quoi un tableau ?


Le tableau, appelé 'Array' en anglais, est une variable qui peut avoir plusieurs dimensions.
Il peut être initialisé par les commandes Const, Global, Dim et Local tout comme une variable standard.
La différence, c'est qu'il contient plusieurs 'cases' dans lesquelles on pourra stocker des valeurs.
C'est en gros la réunion des boîtes aux lettres du quartier. Mais comme vous vous en doutez, ces boîtes aux lettres ont un lien entre elles, ici elles recevront le courrier par le même facteur.

Un Array sera défini par des lignes et des colonnes, par exemple je veux savoir ce que contient la seconde ligne de la première colonne.

Les Arrays 1D



On parle d'un tableau 1D lorsque celui-ci est initialisé avec une seule dimension (une seule colonne) :

Code : Autre
1
Dim $Array[5] = [8, 4, 5, 9, 1]


Nous avons ci-dessus un tableau de cinq lignes avec une colonne.
Pour accéder ou modifier un élément de ce tableau, il suffit d'indiquer la valeur de la position de cet élément dans le tableau.

Attention, lors de l'initialisation d'un tableau.
Lors de son initialisation, vous déclarez le nombre d'éléments du tableau,
mais celui-ci démarre toujours à l'élément 0, ce qui décale le comptage des éléments.

Un tableau ne peut dépasser 64 dimensions et/ou 16 millions d'éléments.


Par exemple, essayez le code ci-dessous :
Code : Autre
1
2
Dim $Array[5] = [8, 4, 5, 9, 1]
MsgBox(0,"Tutoriel Autoit du siteduzero.com",$Array[1]) ;Affiche la valeur de la ligne 1

Il affichera la valeur '4'.

Code : Autre
1
$Var = $Array[3]

Selon le tableau déclaré précédemment, ce code attribue la valeur 9 à la variable $Var.</puce>

Les Arrays 2D



On parle d'un tableau 2D lorsque celui-ci est initialisé avec plus d'une dimension, c'est à dire qu'on aura par exemple plusieurs lignes et plusieurs colonnes. Ce type d'Array ressemble donc aux tableaux tels que vous les concevez in real life.

On pourra donc utiliser le shéma suivant pour déclarer nos Arrays 2D:
Code : Autre
1
2
3
4
5
6
7
Dim $Array[Nb_Ligne][Nb_Colonnes]=
[
   [Ligne1_Col1, Ligne1_Col2, ... , Ligne1_ColN],
   [Ligne2_Col1, Ligne2_Col2, ... , Ligne2_ColN],
    ... ,
   [LigneN_Col1, LigneN_Col2, ... , LigneN_ColN]
]


Exemple


Prenons un tableau classique, créé avec Excel, qui comprend le Prénom et l'argent que possèdent plusieurs personnes. Il ressemblera alors à :

Image utilisateur


Code : Autre
1
2
3
4
5
; Crée un tableau de deux colonnes avec cinq lignes.
Dim $Grille[5][2]=[["PRENOM", "ARGENT"], ["Jim", 485.44], ["Louis", 160.68], ["Paul", 275.16], ["Richard", 320.00]]

; Attribue la valeur Paul à la variable $Var
$Var = $Grille[3][0]


Si on veut récupérer la cinquième ligne de la deuxième colonne (Donc l'argent que possède Richard) on va donc chercher à:
Code : Autre
1
$Var = $Grille[4][1]

Ce qui affichera 320.



Tout comme une variable classique, un tableau peut être dupliqué simplement comme ceci :
Code : Autre
1
$Tableau = $Grille

ou effacé comme ceci :
Code : Autre
1
$Tableau = ''


On utilisera très souvent les tableaux pour stocker des valeurs multiples car le traitement en sera plus rapide et plus aisé, notamment grâce aux boucles que vous allez voir prochainement, et parce que si vous deviez créer 150 variables pour stocker vos valeurs vous seriez bien embêté.

Vous auriez pu contourner le problème car Autoit autorise la création et la lecture de variables dynamiques grâce aux commandes Assign() et Eval() mais nous verrons ceci beaucoup plus loin dans le tutoriel

Les macros

Autoit utilise un certain nombre de macros qui sont des variables spéciales en lecture seule, et incrémentées par défaut à Autoit. Les macros commencent par le caractère @ au lieu du classique $ et sont donc faciles à reconnaitre. Comme avec les variables constantes, vous pouvez utiliser les macros dans les expressions, mais ne pouvez leurs assigner une valeur.

Les macros pré-définies sont généralement utilisées pour fournir des informations sur le système tel que le chemin du répertoire de Windows, ou le nom de l'utilisateur en cours, l'heure, la résolution de l'écran, les retours d'erreur, etc...
La liste qui suit n'est pas complète. Pour avoir la liste complète des macros à votre dispositions, allez dans la documentation d'Autoit et cliquez sur Macro reference.

Liste non-exhaustive des macros les plus utilisées



  • @MyDocumentsDir : retourne le chemin complet du repertoire "Mes Documents" ;
  • @ComputerName : retourne le nom de l'ordinateur ;
  • @CRLF : équivaut à un retour chariot (appui sur la touche Entrée) ;
  • @DesktopDir : retourne le chemin complet du Bureau ;
  • @DesktopHeight : retourne la hauteur de votre résolution d'écran ;
  • @DesktopWidth : retourne la largeur de votre résolution d'écran ;
  • @HOUR : retourne l'heure ;
  • @HotKeyPressed : retourne la dernière touche appuyée par l'utilisateur ;
  • @ScriptDir : retourne le chemin complet du script ;
  • @ProgramFilesDir : retourne le chemin complet du répertoire "Program Files" ;
  • @OSVersion : retourne la version de votre OS ;
  • @SystemDir : retourne le chemin complet de votre répertoire système ;
  • @TempDir : retourne le chemin complet de votre répertoire temporaire.



Pour tester la puissance des macros, je vous laisse essayer ce script :

Code : Autre
1
2
3
4
5
MsgBox(64,"Informations sur tous vos répertoires","Répertoire Système : " & @SystemDir & @CRLF & _
"Mes Documents : " & @MyDocumentsDir & @CRLF & _ 
"Dossier Temporaire : " & @TempDir & @CRLF & _
"Démarrage : " & @StartMenuDir & @CRLF & _
"Program Files : " & @ProgramFilesDir & @CRLF )



Vous pouvez remarquer l'utilisation de @CRLF afin de revenir à la ligne.
Cette macro sera souvent utilisée dans vos chaînes de caractères afin de revenir à la ligne.

Vous remarquerez également l'utilisation de '& _ '.
C'est une méthode utile quand vos lignes deviennent trop longues, vous pouvez alors l'utiliser pour que vos scripts soient plus lisibles.
En effet, quand une ligne devient trop longue, on préfère quelques fois la diviser en plusieurs lignes.

Pour ce faire, il suffit d'écrire '& _ ', qui veut juste dire à Autoit de continuer sa lecture une ligne en dessous, mais qu'on n'a pas terminé notre ligne.

S'il vous faut n'en retenir qu'une, ce serait @ScriptDir. En effet, à chaque fois que vous allez devoir interagir avec un fichier, vous allez très souvent utiliser cette variable. Vous souhaitez mettre une image dans votre script ? C'est encore cette macro que vous allez utiliser si votre image se situe dans le même dossier que votre script.

Q.C.M.

Comment déclare-t-on une variable globale ?
Ai-je le droit d'êcrire :
$variable32, = "OoO"
Qu'est-ce que c'est que ça ?

@HOUR

Statistiques de réponses au QCM

Bravo, vous avez avalé ce chapitre avec succès. Vous êtes déclaré apte à continuer si tout est clair dans votre tête.
Chapitre précédent Sommaire Chapitre suivant

Partager

9 commentaires pour "Elles sont belles mes variables !"
Note moyenne : 3.56 / 4 (100 votes)
Pseudo Commentaire
Hors ligne timmalos # Posté le 29/08/2010 à 19:15:46
Avatar

Avis : Très bon

Études : INSA Lyon

Merci pour ces remarques, on a beau repassé 20 fois en relecture il reste toujours des coquilles.

J'essaye de faire corriger ca au plus vite.

Image utilisateur
 
Hors ligne Naheulf # Posté le 03/07/2011 à 08:59:28

Moi je ne comprend pas mais lorsque je crée le code : Citation : timmalos
Code : Autre
1
2
3
4
5
; Crée un tableau de deux colonnes avec cinq lignes.
Dim $Grille[5][2]=[["PRENOM", "ARGENT"], ["Jim", 485.44], ["Louis", 160.68], ["Paul", 275.16], ["Richard", 320.00]]

; Attribue la valeur Paul à la variable $Var
$Var = $Grille[3][0]

ca me met cette erreur :

Citation : Autoit3
C:\Users\perso\Desktop\test.au3 (2) : ==> Missing separator character after keyword.:
Dim $Grille[5][2]=[["PRENOM", "ARGENT"], ["Jim", 485.44], ["Louis", 160.68], ["Paul", 275.16], ["Richard", 320.00]]
Dim^ ERROR
>Exit code: 1 Time: 0.355

Note : ca me fait la même chose en changeant le 5 et le 2.

Citation : A. Einstein
Seules 2 choses sont infinies : l'Univers et la bêtise humaine. Mais, en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue.
 
Hors ligne timmalos # Posté le 03/07/2011 à 13:29:49
Avatar

Avis : Très bon

Études : INSA Lyon

Cette ligne seule se compile très bien chez moi.

Essayez de ne mettre que cette ligne dans votre script et compilez. L'erreur arrive t'elle encore?

L'espace entre Dim et $Grille est il correct? Probleme encodage ou autre, essayez de taper manuellement cette ligne, et dites moi ce qu'il se passe.

Image utilisateur
 
Hors ligne Maghim # Posté le 08/02/2012 à 12:45:12
Un verre est toujours plein ^^
Avatar

ça ressemble a du basic
je pense que c'est un dérivé du basic.

Citation : Henri Michaux
« Toute science crée une nouvelle ignorance. »
 
Hors ligne FTC56 # Posté le 19/02/2012 à 19:27:25

Ville : Lanester
Pays : France métropolitaine

C'est un peu beaucoup nul le problème avec les espace : quand je prend un script, je dois remplacer tous les espaces !

Voir tous les commentaires
Ce tutoriel a été corrigé par les zCorrecteurs.