Les variables : affectation et calcul


Dans le chapitre précédent, vous avez appris à déclarer une variable, c'est-à-dire à en créer une en mémoire. Avec le code que vous connaissez, vous savez réserver un emplacement dans la mémoire, en lui donnant un nom.

Seulement voilà, c'est bien beau de déclarer des variables à tout va, mais si on ne leur donne pas une valeur, elle n'ont aucun intérêt.

Dans un premier temps, nous allons voir comment modifier la valeur d'une variable. Ensuite, nous verrons quelques opérations de base que VB est capable d'effectuer...




Affecter une valeur


L'affectation d'une valeur est l'opération qui modifie la valeur d'une variable. Par exemple, une variable a pour nom intVolume, et elle est de type Integer. Elle a donc été déclarée comme nous l'avons appris (ici dans une procédure) :

Sub MaSub()
	Dim intVolume As Integer
End Sub

Avec VB, les espaces ainsi que les entrées comme ci-dessus ne comptent pas. Ils sont là pour la présentation, pour rendre le code plus clair.

Par ailleurs, il existe une sorte de "convention" facultative qui consiste à faire précéder le nom des variables par leur type (en 3 lettres). Pour Integer, on met int... ; pour String, c'est str... Ainsi, on reconnaît de suite le type de la variable.

Notez que vous pouvez aussi bien déclarer la variable à l'extérieur de la procédure, cela n'aura pas d'effet sur ce que nous allons apprendre. Le code ci-dessous marche aussi bien :

Public intVolume As Integer


Sub MaSub()
End Sub
Bien, jusqu'ici rien de vraiment nouveau, on a déclaré la variable. Vous connaissez son nom : intVolume. Oui, mais maintenant quelle est sa valeur ? Rappelez-vous qu'une variable possède un nom et une valeur, et c'est cette valeur qui nous intéresse le plus.

Selon le type de variable, les valeurs ne sont pas les mêmes. Mais au départ, lorsque vous avez déclaré votre variable, elle est en mémoire et elle a forcément une valeur. Quelle est-elle ?
C'est la valeur nulle. Pour le type Integer, ainsi que tous les types stockant des nombres, la valeur nulle est 0. intVolume a donc pour l'instant la valeur 0.

Si le type de données n'est pas numérique, la valeur nulle n'est pas 0, comme vous le verrez plus bas.

L'objectif est de modifier la valeur de intVolume. Pour cela, vous allez apprendre une nouvelle instruction : l'instruction d'affectation.

Vous devez utiliser le signe égal : =. A gauche du signe, tapez le nom de la variable à modifier. A droite, tapez la nouvelle valeur. Voici un exemple :

intVolume = 4
La variable intVolume a changé de valeur : elle est passée de 0 à 4. Bien entendu, comme toute instruction, l'instruction d'affectation ne peut se trouver qu'à l'intérieur d'une procédure :
Sub MaSub()
	Dim intVolume As Integer
	intVolume = 4
End Sub
Comme la déclaration de la variable n'est pas une instruction, elle peut se trouver à l'extérieur. Mais l'affectation DOIT se passer à l'intérieur de la procédure. Voici le code illustrant cela :
Public intVolume As Integer


Sub MaSub()
	intVolume = 4
End Sub
Comme vous pouvez le voir, c'est extrêmement simple.

Mais faites-moi le plaisir de ne pas faire d'erreur si une instruction aussi simple. C'est-à-dire, n'essayez pas d'affecter la valeur 6,2 à une variable Integer, elle ne peut stocker que des entiers.

Allez, on va se faire plaisir, on va compliquer un peu la chose :-). On va travailler sur deux variables au lieu d'une. Essayez de comprendre le code suivant (je mettrai dorénavant les déclarations à l'intérieur des procédures, mais vous pouvez toujours le faire à l'extérieur sans aucun problème) :

Sub MaSub()
	Dim intVolume As Integer
	Dim intSuper As Integer
	intVolume = 4
	intSuper = intVolume
End Sub
Que s'est-il passé ? C'est très simple : après avoir déclaré les deux variables, j'ai affecté la valeur 4 à intVolume. Puis, j'ai affecté la valeur de intVolume à intSuper, qui prend du coup la valeur 4.

Si j'avais écrit l'instruction à l'envers, j'aurais affecté la valeur de intSuper (0) à intVolume :

intVolume = intSuper

Le sens a vraiment de l'importance. La ligne :
7 = intVolume
demande à l'ordinateur d'affecter au nombre 7 la valeur de intVolume... ce qui est impossible, et génère une erreur.


Avec le type String

Nous avons vu jusqu'ici comment affecter une valeur à une variable de type Integer : c'est valable pour tous les types de données stockant des nombres.

Or, comme nous l'avons vu, on peut stocker autre chose que des nombres. Le type String, par exemple, stocke une suite de caractères alphanumériques. Une phrase quoi...

Si vous affectez une phrase à une variable String, vous devez l'entourer de guillemets, comme ceci :

strPhrase = "Bonjour, je suis une phrase."
C'est la seule règle à respecter lorsqu'on manipule ce type de données.

Pour le type String, la valeur nulle, c'est du vide. On la note avec deux guillemets : "".


Avec le type Boolean

Le type Boolean, lui, stocke... un booleen. Ce type de données, je vous le rappelle, sert à savoir si quelque chose est Vrai (True) ou Faux (False). Ce sont les deux seules valeurs qu'il accepte.

Remarquez que, si vous déclarez un boolean et que vous tentez de lui affecter une valeur, VB vous propose une liste de choix. Bien entendu, il n'y en a que 2. Vous devriez voir ceci :

Vous pouvez soit double-cliquer sur la valeur qui vous intéresse, soit continuer à taper le mot-clé vous-même. L'instruction doit ressembler à cela :

bolVraiOuFaux = True
En ce qui concerne la valeur nulle du type Boolean, c'est False. Tous les Booleans sont Faux par défaut.


Voilà, vous avez tout vu sur l'affectation de valeur, et même un peu plus ;-)
Nous allons à présent faire des petits calculs en utilisant les variables.




Les constantes


Qu'est-ce qu'une constante ? C'est comme une variable, mais ça n'en est pas une puisqu'elle a une valeur unique qu'il est impossible de changer. Par exemple, la constante datMidi, de type Date, a la valeur 12:00:00. Cette valeur est susceptible de ne pas changer (en effet, midi c'est toujours 12 heures).

Quel intérêt alors si la variable ne change pas de valeur ? Cela vous évite d'avoir à retenir un nombre ou une phrase, et d'avoir à la retaper à chaque fois en entier. Il suffit juste de taper le nom de la constante qui a cette valeur.

Pour déclarer une constante (on ne dira plus variable dans ce cas, puisqu'elle ne peut pas "varier"), cela ressemble un peu à la déclaration d'une variable :

Const sinNombrePi As Single = 3.14159265358979
Le mot-clé Const remplace Public et Dim. On peut déclarer une constante à l'intérieur ou à l'extérieur d'une procédure.
La grosse nouveauté c'est que l'on affecte une valeur à la constante dès sa déclaration, comme vous pouvez le voir. Plus tard, vous pourrez lire la valeur de la constante, mais pas la modifier sous peine d'erreur.

Ainsi, à chaque fois que vous devrez faire référence au nombre Pi, il vous suffira de taper sinNombrePi. Avouez que c'est plus court et plus facile à retenir que 3.14159265358979 !

Attention ! Sous VB, pour écrire des nombres décimaux, il faut utiliser le point et non pas la virgule !




Opérations de base


Il existe 4 opérations de base. Vous les avez apprises au primaire, alors ne me dites pas que vous ne les connaissez pas :-p. Bon, comme vous êtes un zéro, je vous les rappelle ;-) :

N'oubliez jamais qu'un ordinateur n'est en fait rien d'autre qu'une grosse machine à calculer. Et très rapide. Vous allez être surpris quand vous verrez la vitesse à laquelle il enchaîne les opérations.
Bien, l'objectif de ce paragraphe est de faire faire des calculs à votre petit ordi. N'espérez pas le faire souffrir en lui faisant calculer un millier de multiplications et divisions, il lui en faut beaucoup plus.

Tout d'abord, les signes à utiliser ne sont pas exactement les mêmes que ceux que vous avez appris. Vous les retrouverez sur le pavé numérique (tout à droite de votre clavier). Voici un petit tableau que vous devez connaître par coeur :

Opération
Signe
Addition
+
Soustraction
-
Multiplication
*
Division
/

Le "Moins" est un tiret, le "Multiplier par" est une étoile, et le "Diviser par" est un slash (/).

L'opération se fait dans une instruction d'affectation. C'est en fait une instruction d'affectation un peu plus complexe. Le mieux pour l'expliquer est d'avoir un exemple :

intVolume = 6 * 4
intVolume prend alors la valeur... 24 ! Je vois que vous connaissez encore les tables de multiplication, c'est bien, c'est très bien :-p

La règle de priorité des calculs s'applique ici. Quoi, vous ne vous en rappelez pas ? Bon, alors voilà comment cela fonctionne : les multiplications et les divisions sont effectuées en priorité. Devinez combien fait :

intVolume = 3 + 5 * 4
Eh bien, ça ne fait pas 32 ! Ca fait 23 ! En effet, l'ordi calcule d'abord 5 * 4, puis il calcule les additions. Si vous tenez vraiment à faire d'abord 3 + 5, il faut mettre des parenthèses :
intVolume = (3 + 5) * 4
Voilà, comme ça vous savez vraiment tout. Bien entendu, vous pouvez faire le calcul directement sur une variable (ce qui arrivera dans 99,9 % des cas) :
intVolume = ((intSuper + 6) / intEuros) - 5) * 8
Ce calcul est complexe certes, d'autant plus qu'il dépend des valeurs de intSuper et intEuros. C'est là pourtant tout l'intérêt de la programmation.
Notez que mes noms de variable ont été choisis totalement aléatoirement. Ils n'ont aucune signification.





Tests


Un peu de calcul mental, ça ne peut pas faire de mal. Nous supposerons que intNombre1 = 5 et que intNombre2 = 2. Pour chacune des 3 premières questions, vous devrez trouvez la valeur de intResultat.

intResultat = intNombre1 - intNombre2 * intNombre2

intResultat = (intNombre2 + intNombre2 * intNombre2) - intNombre1 * 2 + intNombre2

intResultat = intNombre1 / (intNombre2 - intNombre2)

Quelle est la valeur nulle du type Boolean ?

Pour finir, déclarez une constante de type Integer, de nom intDoigts, ayant pour valeur 10.




Vous avez bien manipulé les variables dans ce chapitre. Mine de rien, on avance et on apprend pas mal de choses. Vous allez voir que tout ça vous sera vraiment très utile par la suite.

Si vous êtes un peu matheux, vous pouvez vous entraîner à faire des calculs sur des variables dans votre tête, en complexifiant encore un peu les instructions... Ca ne peut que vous faire du bien ;-)


Page précédentePage suivante