Site:  Cours VB.net  
1.6 Les Variables

X=1

C’est le même sens qu’en mathématique.

Une variable sert à stocker  un nombre, du texte (chaîne de caractères), une date, un objet..

Une variable a un nom et un type qui indique ce que l’on peut y mettre.

Si myString  est une variable de type chaîne de caractère (ou String) : je peux y mettre une chaîne de caractère (« TOTO » par exemple)

myString="TOTO"

Si age est une autre variable de type numérique, je peux y stocker un nombre (45,2 par exemple).

age=45,2

Nom des variables :

On peut utiliser dans les noms de variable des majuscules ou des minuscules mais pour VB  il n’y a pas de différence.

Exemple :

On ne peut pas déclarer une variable VB et une variable vb.

Si on déclare une variable nommée 'VB'  et si ultérieurement on tape 'vb', le logiciel le transforme automatiquement en 'VB'.

      2A n’est pas un nom valide

      Nom2 l’est.

      nom_Utilisateur  est valide.

 L'espace n'étant pas permis, on utilise le "_".

 

Il est conseillé de donner des noms explicites qui rappelle ce que contient la variable:

      nom_Utilisateur  est explicite, pas NU.

 

Parfois on indique en début de nom, par une lettre, le type de variable ou sa portée (la zone de code où la variable existe).

     s_Nom    'Le s indique qu'il s'agit d'une variable String (Chaîne de caractères)

     iIndex   'Le i indique qu'il s'agit d'une variable Integer (Entier)

     gNomUtilisateur    'g indique que la variable est globale

 

Il est possible de 'forcer' le type de la variable en ajoutant un caractère spécial à la fin du nom de la variable.

Dim c$ = "aa"    ' $ force c a être une variable String.

De même % force les Integer, & les long..

Cette notation est moins utilisée et à eviter.

 

Majuscules ++++:

On conseille, quand le nom d'une variable est composé de plusieurs mots, de mettre la première lettre de chaque mot en majuscule, sauf pour le premier mot.

Exemple:

nom_Utilisateur

Voir le chapitre sur le nommage des variables.

 

Déclaration, initialisation:

Avant d'utiliser une variable, il faut la déclarer, la créer, pour cela on utilise l'instruction 'Dim' :

Dim a As Integer    'Déclare une variable nommée 'a' de type Integer (Entier).

Avant la ligne, 'a' n'existait pas, après le DIM, 'a' existe et contient 0.

L'instruction Dim crée la variable et lui alloue un espace de stockage.

Il faut aussi parfois l'initialiser, c'est à dire lui donner une valeur de départ : a=3

On peut déclarer et initialiser en même temps:

Dim a As Integer =3

Rien n'empêche d'utiliser une expression , une fonction pour initialiser.

Dim a As Integer = CalculMaVariable(4,3)

Ici pour initialiser la variable, on appelle une fonction CalculMaVariable qui retourne une valeur pour a.

Il est toujours préférable d'initialiser rapidement une variable.

 

On peut déclarer plusieurs variables en même temps; il faut les séparer par des virgules:

Dim a, b, c As Integer        'a, b et c sont maintenant des variables de type Integer.

 

En pratique: Exemple.

Les variables après avoir été déclarées, vont servir à stocker des données, à effectuer des calculs, on peut afficher ensuite leur valeur.

Exemple simpliste d'utilisation de variables:

Dim varA As Integer        'Création d'une variable varA

Dim varB As Integer        'Création d'une variable varB

Dim total As Integer       'Création d'une variable total

varA=3                     'Mettre '3' dans a

varB=2                     'Mettre '2' dans b

total=varA + varB          'Mettre dans la variable 'total' la valeur de varA et de varB 

LabelTotal.Text= total.ToString    'Afficher le total dans un label (un label est une zone permettant d'afficher du texte), pour cela transformer la variable total qui est un entier en chaîne de caractères (à l'aide de ToString) puis  mettre la string dans le texte du label.

 

Noter bien la différence entre :

Dim total As Integer

total= 123     'Total est une variable numérique (Integer ou Entier) contenant le nombre 123

et

Dim total2 As String

total2= "123"   'Total2 est une variable string contenant la chaîne de caractère "123" c'est à dire les caractères "1" , "2" et "3"

 

On peut afficher les chaînes de caractères (ou String), pas les variables numériques.

     On fait des calculs avec les variables numériques.

Il faudra donc parfois convertir le contenu d'une variable d'un type dans un autre type(convertir une variable numérique en String pour l'afficher par exemple ou convertir une variable String en numérique pour faire un calcul) on apprendra cela plus loin.

L'exemple simpliste juste au dessus en montre un exemple: il faut convertir total qui est un entier en string pour l'afficher.

 

Concernant les variables numériques:

Les variables numériques peuvent être signées (accepter les valeurs négatives ou positives) ou non signées ( Comme le Type 'Byte' qui ne contient que des valeurs positives)

 

Les différents types de variable:

Rappel: (C'est juste pour comprendre, mais pas indispensable: vous pouvez sauter le rappel)

    Un bit (ou binary digit) peut contenir 0 ou 1.

    Un octet est composé de 8 bits. 

    

En Visual Basic, les variables peuvent être:

Nom :       Contient :

Boolean     Contient une valeur Booléenne (logique): True ou False.

Byte        Contient les nombres entiers de 0 à 255 (sans signe)

Short       Entier sur 16 bits (-32768 à 32768)

Integer     Entier sur 32 bits  (-2147483648  à 2147483647)

Long        Entier sur 64 bits  (-9223372036854775808 à 9223372036854775807)

Single      Nombre réel en virgule flottante (-1,401298 *10^-45 à 1,401298 10^45)

Double      Nombre réel en virgule flottante double précision. (..puissance 324)

Decimal     Nombre réel en virgule fixe grande précision sur 16 octets.

Char        1 caractère alphanumérique

String      Chaîne de caractère de longueur variable (jusqu'a 2 milliard de caractères)

DateTime    Date plus heure

Object      Peut contenir tous les types de variables mais aussi des contrôles, des fenêtres..

Structure   Ensemble de différentes variables définies par l’utilisateur.  

  Dans la version 2005 il y a aussi les Unsigned (non signé: pas de valeur négative):

UInteger    Entier codé sur 32 bits pouvant prendre les valeurs 0 à 4 294 967 295.

ULong       Entier codé sur 64 bits :0 à 18 446 744 073 709 551 615

UShort      Entier sur 16 bits 0 à 65 535.

 et

SByte      Byte mais signé. Codé sur 1 octet, valeur de -128 à 127 

 

 

Détaillons :

1- Variable Booléenne.

Contient une valeur Booléenne : True ou False (Vrai ou Faux pour les sous doués en anglais!)

Exemple:

Dim myBoolean As Boolean

myBoolean = True

 

2- Variable entière:

Byte, Short, Integer, Long

Byte        Contient les nombres entiers de 0 à 255 (sans signe)

Short       Entier sur 16 bits (-32768 à 32768)

Integer     Entier sur 32 bits  (-2147483648  à 2147483647)

Long        Entier sur 64 bits  (-9223372036854775808 à 9223372036854775807)

 

Pour une variable entière il n'y a pas de possibilité de virgule!! attention, une division de 2 entiers donne un entier.

Pour le mathématicien, les Integer correspondent au nombres entiers naturels: Entiers positif ou négatif et 0 (..-3 -2 -1 0 1 2 3...), mais avec une limite.

Attention ,les variables numériques en informatique ne peuvent pas contenir de nombre infiniment grand: Il y a une limite maximum : un Integer est par exemple codé sur 32 bits ce qui fait qu'il peut varier de -2147483648  à 2147483647. Si on utilise une valeur trop grande, une erreur se produit. Les entiers peuvent être positifs ou négatifs (Sauf les Bytes et les 'Unsigned': UInteger, ULong, UShort). 

Plus on augmente le type (Long au lieu de Integer) plus on peut y mettre des grands nombres. Mais cela prend aussi plus de place et le traitement des opérations est plus long.

Les processeurs travaillant sur ’32 bits’, utilisez plutôt les Integer (qui sont codés sur 32 bits aussi), c’est plus rapide, que les short.

On utilise largement les 'Integer' comme variable de boucle, Flag, là ou il y a  besoin d'entier...(Les calculs sur les réels en virgule flottante sont beaucoup plus lent.)

Exemple:

Dim i As Integer

i=12

 

Le type de données Byte est utilisé pour contenir des données binaires (octet codant de 0 à 255) non signé.

 

3- Variable avec virgule:

Un réel peut avoir une partie fractionnaire: 1,454 est un réel.

Pour le mathématicien, les Single, Double.. correspondent au nombres réels ou fractionnaires: mais avec des limites (sur la précision et le fait qu'il ne sont pas infinis).

Single, Double, Decimal.

Single      Nombre réel en virgule flottante (-1,401298 *10^-45 à 1,401298 10^45)

Double      Nombre réel en virgule flottante double précision. (-1,79769313486231570E+308 et -4,94065645841246544E-324 pour les valeurs négatives et entre 4,94065645841246544E-324 et 1,79769313486231570E+308 pour les valeurs positives)

Decimal     Nombre réel en virgule fixe grande précision sur 16 octets: Avec une échelle 0 (aucune décimale), la plus grande valeur possible correspond à +/-79 228 162 514 264 337 593 543 950 335. Avec 28 décimales, la plus grande valeur correspond à +/-7,9228162514264337593543950335

 

a- Les variables en virgule flottante ou notation scientifique:

 (Single, Double)

La variable peut être positive ou négative.
Le 'Double' est, bien sur, plus précis et peut atteindre des nombres plus grand que le 'Single'.

 

Le 'Single' comporte 7 chiffres significatifs maximum.

Le 'Double' comporte 18 chiffres significatifs maximum.

 

Le nombre est codé en interne sous forme scientifique, exemple:1,234568E+008.

Mais en pratique, on travaille et on les affiche de manière habituelle, en notation normale avec un point comme séparateur décimal:

 

Dim poids As Single

poids=45.45 

 

Format Scientifique, Mantisse et exposant:

 

Voici 3 nombres:

14500000

0,145

0,0000145

 

Ils comportent tous les 3, deux informations:

-le nombre entier 145

-la localisation du premier chiffre par rapport à la virgule

 

 8

-1

-5   dans nos exemples.

 

Donc un réel peut être stocké sous la forme d'un couple:

-Partie entière

-Localisation de la virgule

 

Il est  codé en interne avec une mantisse (la partie entière) et un exposant (position de la virgule), sous la forme mmmEeee, dans laquelle mmm correspond à la mantisse (chiffres significatifs: partie entière) et eee à l'exposant (puissance de 10).

 

En fait, en notation scientifique (en codage interne) un chiffre précède toujours la virgule: 1,234568E+008.

 

Attention ,les variables numériques réelles ne peuvent pas contenir de nombre infiniment grand: Il y a une limite maximum comme pour les entiers. La valeur positive la plus élevée d'un type de données Single est 3,4028235E+38 et celle d'un type de données Double est 1,79769313486231570E+308. Si on dépasse cette valeur VB le signale en déclenchant une erreur.

 

Quand on travaille avec des nombres ayant beaucoup de chiffres significatifs, il peut y avoir des erreurs d'arrondi. Le type 'Single' comporte par exemple une mantisse de 7 chiffres significatifs seulement. Si on utilise des nombres (même petit: avec un exposant négatif par exemple)avec 8 chiffres significatifs il peut y avoir des erreurs d'arrondi.

 

b- Les variables en virgule fixe (Decimal) prend en charge jusqu'à 29 chiffres significatifs et peut représenter des valeurs jusqu'à 7,9228 x 10^28. Ce type de données est particulièrement adapté aux calculs (par exemple, financiers) qui exigent un grand nombre de chiffres, mais qui ne peuvent pas tolérer les erreurs d'arrondi.

 

Pour les calculs financiers ont utilisera les 'Decimal' ou les 'Double'
Pour les petits calculs du genre résultats d'examen biologique ont utilisera les 'Single' ou les 'Double' qui sont les plus rapides.

Pour les variables de boucle, les index, on utilise habituellement des Integers.

 

String, Char:

Le type 'String' peut contenir une 'chaîne de caractères' (alphanumérique) comme du texte. La longueur de la chaîne n'est pas fixe et une String peut avoir un nombre de caractère allant de 0 jusqu'à environ 2 milliards de caractères.

Les chaînes de longueur fixe n’existent pas (plus).

Le Type 'Char' contient un seul caractère. On utilise souvent des tableaux de 'Char'.

Pour information Char et String contiennent des caractères au format Unicode (dans la variable, chaque caractère est codé sur 2 octets) et pas de l'ASCII ou de l'ANSI..(ancien codage ou chaque caractère était codé sur un octet).

Les premiers caractères ont le même code Unicode et Ascii.

Exemple:

Caractère    Code

"a"            65

"b"            66

" "            32

Il y a aussi des caractères non affichable:

RC             13    retour chariot

LF             10    Line Feed

               09    Tabulation

Pour passer à la ligne , on utilise les codes 13 puis 10. Il y a une constante toute faites pour cela: ControlChars.CrLf       Chr$(13)+Chr$(10)

 

Annexe 1:Place occupée en mémoire:

Les types de variable ont un nom en VisualBasic et un nom dans le Framework.

Exemple:

Integer et System.Int32 sont équivalents pour designer le type 'entier', Integer est le type VB, System.Int32 est le type 'NET'

 

Exemple de place occupée par une variable (et le nom de sa Classe dans  NET).

Type VB    Place occupée    Type NET correspondant

Boolean    2 octets      System.Boolean

Byte       1 octet      System.Byte

Short       2 octets    System.Int16

Integer    4 octets     System.Int32

Long       8 octets     System.Int64

Single     4 octets     System.Single

Double     8 octets     System.Double

Decimal    16 octets    System.Decimal

Date       8 octets     System.DateTime

Char       2 octets     System.Char

Objet      4 octets     System.Objet

String   dépend de la chaîne , de System.String

 

La méthode GetType permet de savoir de quel type, de quelle Classe est une variable.

Dim x As String

MessageBox.Show(x.GetType.ToString)    'Affiche: Systeme.String

Prend le type de x, le transforme en String, l'affiche dans une MessageBox.

 

Annexe 2: Type primitif

Mise à part Objet, Structure, Class tous les autres types sont dit 'Primitif'( Byte, Boolean, Short, Integer, Long, Single, Double, Decimal, Date, Char, String)