Chapitre 2: Le langage Visual
Basic.Net
Les variables : généralités
• Identifiant de variables:
– Doit commencer par une lettre Caractères
autorisés: lettres minuscules, lettres majuscules,
chiffres et "_"
– Pas de distinction entre minuscules et majuscules
– Toute variable doit être déclarée.
• 2 familles de types de variables:
– Types primitifs
– Types références (les objets)
W.Ayadi, Cours EDBD, FSEGT
2
Les types primitifs
W.Ayadi, Cours EDBD, FSEGT
3
Les types références
• Type Object : type universel
• Type String : les chaines de caractères
• Type Nullable :
– Il arrive parfois que dans certaines circonstances une
variable n’a pas de valeur bien définie
– Cette méthode permet aux variables de types primitifs
de ne contenir aucune information.
– Cela a de l'intérêt quand on travaille avec les bases de
données qui ont des champs qui contiennent un Null
– Utiliser '?' dans la déclaration.
W.Ayadi, Cours EDBD, FSEGT
4
Déclaration de variables
• Syntaxe:
Dim NomVariable1 [,NomVariable2, NomVariableN] [As
Type] [= Valeur initiale]
• L'instruction Dim crée la variable et lui alloue un espace
de stockage.
Exp:
- Dim i As Integer
i=4
- Dim i As Integer i=10000000000
'valeur non ‘accepté car trop grande pour un integer
Dim j As Long j=10000000000
'accepté car j est un Long
W.Ayadi, Cours EDBD, FSEGT
5
Déclaration de variables
• Si le type est omis type par défaut Object
• Toute variable est initialisée par une valeur par défaut:
– Types numériques : 0
– Chaine de caractères : "" chaine vide
– Boolean : false
– Object : nothing
• Inférence de type : type déterminé à partir de la valeur
initialisant la variable
(Dim ch="Bonjour") ch : String
– L‘inférence ne fonctionne qu‘avec les variables locales à une
fonction ou procédure.
– Initialisation sur la même ligne que la déclaration, sinon type :
Object.
W.Ayadi, Cours EDBD, FSEGT
6
Déclaration de variables
• Dim i As Integer
i=1.4 i=1 (conversion)
• On peut forcer le type d'un littéral en ajoutant une lettre:
– x= 42L 'le 'L' indique que 42 est un Long
– x= 42I 'le 'I' indique que 42 est un Integer
– x= 42D 'le 'D' indique que 42 est un Decimal
• Type Nullable :
Dim X? As Integer
Dim X As Integer?
– X n'a initialement aucune valeur définie, même si la valeur par
défaut du type Integer est 0.
W.Ayadi, Cours EDBD, FSEGT
7
Constantes
• Const nomVariable=valeur
• Exp:
Const NOMDUPROGRAMME= "LDF"
'constante chaîne de caractères.
Const NOMBREDECASE As Integer = 12
'constante Integer
Publicité
W.Ayadi, Cours EDBD, FSEGT
8
Constantes
• Constantes vb prédéfinies les plus utilisées:
– vbLf: Saut de ligne (Unicode :13)
– vbNullChar: caractère null (Unicode: 0)
– vbTab: Tabulation (Unicode: 9)
– vbBack: Retour arrière (Unicode : 8)
W.Ayadi, Cours EDBD, FSEGT
9
Les tableaux
• Tableau à une seule dimension :
Dim nom_tab(const_int) as type
– const_int : l‘indice de la dernière case du tableau
– nom_tab contient (const_int+1) éléments
– Type : tout type dans VB.Net (y compris les objets)
– Exp: Dim Tab(3) As Integer déclare un tableau de 4
entiers
– Accès 1ère case : indice 0 exp: Tab(0)=8
• Tableau à 2 dimensions :
Dim nom_tab(const_int1, const_int2) as type
– Accès : Tab(i,j)
W.Ayadi, Cours EDBD, FSEGT
10
Les tableaux
• Les tableaux sont des objets :
– Length : le nombre d'éléments total dans le
tableau.
x = t.Length
– Rank : donne le nombre de dimensions d‘un
tableau.
nb_dim=mat.Rank nb_dim : 2
W.Ayadi, Cours EDBD, FSEGT
11
Les tableaux
• Redimensionner un tableau : Il est possible de
redimensionner des tableaux au moment de
l’exécution avec les instructions :
– Redim : Dans ce cas, toutes les anciennes valeurs seront
perdues
Exemple : Redim Test(30)
– Redim Preserve : Dans ce cas, on préserve toutes les
données
Exemple : Redim Preserve Test(30)
• Erase efface le tableau et récupère l'espace
Exp: Erase Tab
• Pour obtenir une copie 'indépendante' dans un
nouveau tableau : Tab2=Tab1.clone .
Rq: Tab2=Tab1.copy copie ref seulement
W.Ayadi, Cours EDBD, FSEGT
12
Les tableaux
• Déclaration dynamique :
1. Dim nom_tableau ( ) as type déclaré mais n'existe
pas
2. Dès qu’on saisit le nbr d’éléments et avant la 1ère
utilisation du tableau :
• Redim nom_tableau (nbr) as type
3. Utiliser le tableau
• Classe Array :
– Ind=Array.IndexOf (tab,elt)
– Array.Sort(tab)
– Array.Reverse(tab)
W.Ayadi, Cours EDBD, FSEGT
13
Les chaînes de caractères
• Les chaînes de caractères sont des objets de
type String.
• pour manipuler les chaines: Utiliser les
propriétés et méthodes de la classe
System.String
W.Ayadi, Cours EDBD, FSEGT
14
Les chaînes de caractères
• Exemples: Dim ch as String = "Cours VB.net "
– ch.chars(i) : retourne ch(i)
– ch.Length : retourne la longeur de ch
– ch.Substring(ind_deb,nb_car) : retourne la
souschaine de longeur nb_car extraite à partir de
l‘indice ind_deb.
– ch1.Equals(ch2) : retourne true si ch1=ch2, false
sinon
Publicité
– ch1.CompareTo(ch2) : retourne un entier <0
(ch1<ch2); >0 (ch1>ch2); 0 (ch1=ch2).
W.Ayadi, Cours EDBD, FSEGT
15
Les chaînes de caractères
• ch1.Insert(pos, ch2) : insert ch2 dans ch1 à
l‘indice pos
• ch.Trim( ): enlève les espaces
• ch.ToUpper( ) / ch.ToLower( ): majuscule /
minuscule
• ch.IndexOf(ch2[,ind]): recherche ch2 dans ch1
*à partir de l‘indice ind]
• ch.Replace(str1,str2): remplace dans ch toute
occurrence de str1 par str2
W.Ayadi, Cours EDBD, FSEGT
16
Les enregistrements (structures)
• Les structures permettent de regrouper des
données de différents Types
• Déclaration :
Public Structure nom_str
public champ1 as type1
public champ2 as type2
..
End structure
• Utilisation : dim v as nom_str
W.Ayadi, Cours EDBD, FSEGT
17
Les enregistrements (structures)
• Exp:
Public Structure Adresse
Dim Numero As Integer
Dim Rue As String
Dim Ville As String
End Structure
Dim MonAdresse As Adresse
• Accès aux champs d‘une variable de type structure :
MonAdresse. Numero =… MonAdresse. Ville =... …
W.Ayadi, Cours EDBD, FSEGT
18
Les opérateurs
• Opérateur d‘affectation : = (qque soit le type)
• Les opérateurs arithmétiques : +, -, *, /
(Division), \ (Division entière), Mod, ^
• Les opérateurs de comparaison: =, <>, <,>,
>=,<=, Is (O1 Is O2: True si O1 et O2 font
référence au même objet), IsNot, …
W.Ayadi, Cours EDBD, FSEGT
19
Les opérateurs
• Les opérateurs logiques :and, or, xor, Not,…
– AndAlso (if (exp1) AndAlso (exp2), idem que «et
logique»,mais exp2 ne sera évalué que si exp1 est
vrai),
– OrElse (if (exp1) OrElse (exp2), idem que «ou
logique»,mais exp2 ne sera évalué que si exp1 est
faux),…
W.Ayadi, Cours EDBD, FSEGT
20
Les opérateurs
• Concaténation : &
A= "VISUAL"
B= " "
C= "BASIC"
D=A & B & C donne D="VISUAL BASIC"
• Le signe + peut aussi être utilisé mais il est plutôt
réservé aux additions de variables numériques.
• &= permet aussi la concaténation A&=B est
équivalent à A= A&B
W.Ayadi, Cours EDBD, FSEGT
21
Les structures de contrôle
Les structures conditionnelles:
•
If condition then
ins° 1
...
Else
ins° j
...
End If
• Select case <expression>
Publicité
case val1
bloc ins° 1
case val2
bloc ins° 2
...
case Else
bloc ins°else
End Select
<expression> : entière, Réelle,
Booléenne, Chaine de
caractères
W.Ayadi, Cours EDBD, FSEGT
22
Les structures conditionnelles
Exemples:
- Select case reponse
case "oui","OUI"
console.writeline("reponse
positive")
case "non","NON"
console.writeline("reponse
negative")
case else
Console.writeline("erreur")
End select
- Select case heure
Case 8 to 12
Console.writeline("Matin")
Case 13 to 18
Console.writeline("après-
midi")
Case 19 to 22
Console.writeline("soir")
Case is >=22
Console.writeline("nuit")
Case else
Console.writeline("heure
invalide")
End select
W.Ayadi, Cours EDBD, FSEGT
23
Les structures itératives
W.Ayadi, Cours EDBD, FSEGT
24
Procédures et fonctions
1) Procédure:
- [Static] [Private | Public] Sub nom_Sub ([Liste_paramètres])
Bloc d’Ins°
End Sub
- Appel : nom_sub ([par1, par2, ..., parn]) ou Call nom_sub
([par1, par2, ..., parn])
2) Fonction :
- [Static] [Private | Public] Function nom_function
([Liste_paramètres]) As type
Bloc d’ins°
return res
End Function
- Appel : varRes = nom_fonction ([par1, par2, ..., parn])
W.Ayadi, Cours EDBD, FSEGT
25
Passage de paramètres
• Pour chaque paramètre d‘une fonction ou
procédure, il faut spécifier :
– Le mode de passage (par valeur ou par référence)
– Le nom
– Le type
• Mode de passage de paramètres par valeur :
ByVal
• Mode de passage de paramètres par référence
: ByRef
W.Ayadi, Cours EDBD, FSEGT
26
Passage de paramètres
• Exemple :
– Sub MaProcedure (ByRef x as Long, ByVal y As
Long)
…..
End Sub
– Dim A, B As Long
MaProcedure (A, B)
W.Ayadi, Cours EDBD, FSEGT
27
Publicité
Procédures événementielles
• Les procédures événementielles indiquent :
– L‘élément de la feuille (form) déclenchant l‘événement
(exp bouton)
– L‘événement déclencheur (exp Click)
– Les actions (le code) à faire lorsque l‘événement est
déclenché
• Syntaxe:
Private Sub cmdOK_Click (ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
cmdOK.Click
'Corps de la procédure événementielle
End Sub
L‘exécution de la procédure se fera automatiquement
quand l‘utilisateur clique sur le bouton ayant la
propriété name=cmdOK.
W.Ayadi, Cours EDBD, FSEGT
28
Boîtes de dialogue
A) Boîte de saisie : Permet à l‘utilisateur de saisir
une chaine de caractères.
• InputBox:
– Texte dans la boite (la question à afficher à
l‘utilisateur)
– Le titre de la boîte
– Valeur par défaut du texte
W.Ayadi, Cours EDBD, FSEGT
29
Boîtes de dialogue
• Exp:
Dim resultat as String
resultat = InputBox("Veuillez saisir votre nom",
"identification", "votre nom")
• Si Cancel alors resultat chaine vide
W.Ayadi, Cours EDBD, FSEGT
30
Boîtes de dialogue
B) Boîte de message: Permet d‘afficher une
information à l‘utilisateur en lui donnant la
possibilité de répondre (par des boutons).
• MessageBox.show :
– Texte dans la boite (Le message ou question à afficher
à l‘utilisateur)
– Le titre de la boîte
– Les boutons à mettre dans la boite :
MessageBoxButtons.OK |OKCancel | AbortRetryIgnore |
YesNOCancel | YesNo | RetryCancel
W.Ayadi, Cours EDBD, FSEGT
31
Boîtes de dialogue
• L‘icône de la boîte :
MessageBoxIcon.Information|Exclamation|
Error|Question|Hand
• Bouton par défaut :
MessageBoxDefaultButton.Button1|Button2|
Button3
W.Ayadi, Cours EDBD, FSEGT
32
Boîtes de dialogue
Dim rep As Integer
rep=MessageBox.Show("Voulez vous enregistrer en quittant
l’application", "Fin de programme",
MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question,MessageBoxDefaultButton.Button1)
W.Ayadi, Cours EDBD, FSEGT
33
Boîtes de dialogue
rep recevra : DialogResult.OK| DialogResult.Cancel |
DialogResult.Abort | …
• 1 si OK
• 2 si Cancel
• 3 si Abort
• 4 si Retry
• 5 si Ignore
• 6 si Yes
• 7 si No
W.Ayadi, Cours EDBD, FSEGT
34