Rappel : Ce cours est enseigné dans la
spécialité PISE du Master MECI (Université Paris 7)
par Christophe Darmangeat

Partie 1
Premiers Eléments du Code
Visual Basic s’est voulu un langage simple. Vous pourrez juger par vous-mêmes de la réalité de cette prétention, mais il faut reconnaître que pour un certain nombre de choses élémentaires, les développeurs de Microsoft ont choisi de ne pas compliquer inutilement la vie du programmeur.
Nous allons donc effectuer un premier, et très rapide, tour d’horizon, pour découvrir les syntaxes de base de ce langage.
1. Variables
Pour ce qui est des noms de variables, VB ne fait que dans le très classique. Voyez donc :
  • Les noms de variables n’ont pas de longueur maximale
  • Ils doivent commencer par un caractère
  • Ils ne doivent pas comporter d’espace
  • Ils ne sont pas sensibles à la casse (Toto et toto sont la même variable)
En ce qui concerne la déclaration de ces variables, celle-ci est optionnelle (en tout cas pour les variables locales, on reparlera dans un instant de cet aspect). Cela signifie que dans l’option par défaut, il n’est pas besoin de déclarer les variables pour s’en servir. Dans le cadre d’une grosse application, on devra activer l’option de déclaration des variables, ce qui permettra de gagner de l’espace mémoire (car les variables se déclarent par défaut avec le type le plus gourmand en mémoire, on y reviendra).
Pour les types des variables, c'est tout pareil, rien que du très ordinaire et sans aucune surprise :
  • Boolean : True – False
  • Byte : de 0 à 255
  • Integer : de –32 768 à 32 767
  • Long : de –2 à +2 milliards environ
  • Single : virgule flottante simple précision
  • Double : virgule flottante double précision
  • Currency : entier en virgule fixe
  • String : jusqu’à 65 000 caractères
Enfin, l'instruction d’affectation est le signe égal ( = ).
1.1 Déclaration, or not déclaration ?
On vient de voir que VB offrait la possibilité de déclarer ou non les variables (en tout cas, les variables locales). Mais, dans l’hypothèse de non déclaration systématique des variables, nous avions pudiquement glissé sur ce qui se passe lorsqu’une variable non déclarée est utilisée…
En fait, cette variable est automatiquement créée dans un type spécial : le type Variant. Ce type possède comme particularité d’être "souple", à savoir de pouvoir s’ajuster à n’importe quel contenu (caractère, booléen, n’importe quel sous-type de numérique). Mais, évidemment, tout à un prix, et s’il est très pratique, le type variant n’en demeure pas moins extrêmement gourmand en mémoire vive occupée.
Donc, si dans le cadre d’un petit exercice, on peut se permettre de ne pas déclarer ses variables, ce n’est pas le cas dans un projet, où l’accumulation des variables de type Variant peut conduire à de graves dysfonctionnements.
1.2 Portée des variables
L’existence d’une variable peut se dérouler sur trois niveaux :
  • Niveau Procédure : cela veut dire que la variable est locale. Dès que l’on quitte la procédure en question, la variable disparaît, et son contenu avec elle. Pour déclarer une variable au niveau procédure, on tape au sein de la procédure considérée :
    Dim NomVariable as Type
  • Niveau Form : la variable est disponible pour toutes les procédures de la Form , mais pas pour les procédures se situant sur une autre Form. Pour déclarer une variable au niveau Form, on tape tout en haut de la Form, à l’extérieur des procédures :
    Dim NomVariable as Type
    Non, ce n’est pas une erreur, c’est bien la même chose que précédemment. Mais l’emplacement de l’instruction n’est pas le même, et c’est cela qui change tout.
  • Niveau Projet : la variable est disponible, et sa valeur est conservée pour toutes les procédures de l’application, quel que soit leur emplacement. Pour déclarer une variable globale, il faut d’abord créer un module. Un module est un type de feuille destiné uniquement à recevoir du code, et qui n’a donc pas, contrairement aux Form, d’apparence graphique. C’est dans un module qu’on écrit la procédure principale, lorsqu’on en veut une, et qui de là pilote les différentes Form, elles mêmes donnant accès aux procédures liés aux objets qu’elles contiennent. Sur ce module, donc, on écrit :
    Public NomVariable as Type
Naturellement, est-il besoin de le préciser, il ne faut pas raisonner en termes d’artillerie lourde, et déclarer toutes les variables au niveau projet, en se disant que comme ça, on est blindé : car ce blindage, par l’excès de place mémoire, ralentira votre application, au besoin considérablement. Il faut donc pour chaque variable se demander à quel niveau on en a besoin, et faire les déclarations en fonction.
1.3 Variables indicées
On appelle aussi cela des tableaux ! Ce peut être des tableaux de nombres, de chaînes, de booléens, bref, de tout ce qu’on veut. Quand on crée un tableau, soit on sait d’avance combien d’éléments il va englober, soit on veut qu’il soit dynamique (mais cela se paye bien sûr par une perte de rapidité à l’exécution). Tout tableau doit obligatoirement être déclaré, quel que soit par ailleurs le réglage de l’option de déclaration des variables.
Pour créer un tableau de 12 entiers, on écrira :
Dim MonTableau(11) As Integer
Pour créer un tableau élastique (pour faire plus classe, ne dites pas « élastique », dites « dynamique »), on écrira :
Dim MonTableau() As Integer
Ensuite, dès qu’on veut en fixer la taille, on écrit dans le code :
Redim MonTableau(11)
Si ce redimensionnement doit s’effectuer en conservant les valeurs précédemment entrées dans le tableau, on ajoutera le mot-clé Preserve :
Redim Preserve MonTableau(11)
En résumé, aucun problème spécifique ici que vous n’ayez déjà abordé sur un langage précédent (le C, par exemple, à tout hasard).


2. Opérateurs
C'est d'une monotonie désespérante, mais là non plus, il n'y a aucune surprise en ce qui concerne les opérateurs, qui sont absolument standard. Je les rappelle rapidement :
  • Opérateurs numériques :    +     -     *     /
  • Opérateurs booléens :        And    Or    Xor   Not
  • Opérateur caractères :        & (concaténation)


3. Tests
Là encore, c’est du tout cuit pour qui a eu la chance ineffable d’apprendre l’algorithmique à la meilleure école qui soit…
Structures possibles :
If … Then
 …
EndIf
If … Then
 …
Else
 …
EndIf
If … Then
 …
Elseif … Then

Elseif … Then

Else

EndIf


4. Boucles
Aucun problème. Il y a en fait abondance de biens, car VB propose une liste interminable de possibilités. Parmi celles-ci, on retrouve les deux fondamentaux précédemment étudiés dans le susdit extraordinaire cours d’algorithmique :
While …

Wend
For x = a to b Step c
 …
Next x
Donc, pas de soucis.
Je signale toutefois à tout hasard qu’il existe de surcroît des boucles spéciales, permettant par exemple de parcourir différents objets au sein d’une même Form. Mais nous jetterons pour le moment un voile pudique sur cette possibilité, que vous pourrez toujours explorer par vous-même par la suite, si vous aimez ça.