06 visual basic .net - les structures de donnees, les enumerations de constantes, les tableaux et les collections
1. Microsoft Visual Basic .NET
Découverte du nouvel environnement Visual
Studio .NET
Éléments du langage Visual Basic .NET
Étude et mise en œuvre des fonctionnalités
du nouveau Framework .NET
Programmation orientée objet et
développement de composants réutilisables
Accès aux données avec ADO .NET
Professeur: Hamza SAID
1
2. Éléments du langage Visual Basic .NET
Variables, procédures,
arguments et structures de
contrôles
Les structures de données,
les énumérations de
constantes, les tableaux et
les différents types de
collections disponibles
Professeur: Hamza SAID
2
3. • Les structures
• Les énumérations de constantes
• Les tableaux
• Les collections
Les structures de données, les énumérations de
constantes, les tableaux et les collections
3
Professeur: Hamza SAID
Éléments du langage Visual Basic .NET
4. • Elles permettent de regrouper des données de types
simples (Integer, String ...)
• Elles se déclarent dans un bloc Structure .. End Structure
• Nous permettent d'obtenir un type spécifique
• Le nom de ce type est précisé à la suite du mot réservé
"Structure"
• Elles peuvent avoir un niveau de visibilité "Public" ou
"Private"
Les structures4
Professeur: Hamza SAID
Les structures de données, les énumérations
de constantes, les tableaux et les collections
5. • Exemple:
Les structures5
Professeur: Hamza SAID
Les structures de données, les énumérations
de constantes, les tableaux et les collections
Structure Film
Dim Titre As String
Dim Realisateur As String
Dim Annee As Integer
Dim duree As Integer
End Structure
• La déclaration se fait comme suit :
Dim objFilm As Film = New Film
6. • Voici comment on accède aux données de la structure
précédente :
Les structures6
Professeur: Hamza SAID
Les structures de données, les énumérations
de constantes, les tableaux et les collections
With objFilm
.Titre = "2001, L'odyssée de l'espace"
.Realisateur = "Stanley Kubrick"
.Annee = 1968
.duree = 149
End With
7. • Les énumérations sont utilisées lorsque l'on a un jeu de
constantes liées logiquement.
• Le mot réservé Enum permet de créer une liste (une
énumération) de constantes
• Le bloc Enum doit être dans l'en-tête du module (en
haut).
Les énumérations de constantes7
Professeur: Hamza SAID
Les structures de données, les énumérations
de constantes, les tableaux et les collections
8. • Exemple:
Les énumérations de constantes8
Professeur: Hamza SAID
Les structures de données, les énumérations
de constantes, les tableaux et les collections
Enum TypeFichier
DOC
RTF
TEXTE
End Enum
• On peut utiliser cette énumération comme suit: :
fichierEnCours = TypeFichier.DOC
9. • Chaque constante littérale de l'énumération prend une
valeur par défaut
• Cette valeur commence par 0
• Cette valeur peut être personnalisée comme suit:
Les énumérations de constantes9
Professeur: Hamza SAID
Les structures de données, les énumérations
de constantes, les tableaux et les collections
Enum TypeFichier
DOC = 101
RTF = 102
TEXTE = 103
End Enum
10. • Un tableau permet de stocker plusieurs données de
même type sous un même nom de variable
• Chaque élément du tableau est référencé par un index
ou indice.
• Lorsque vous créez un tableau, Visual Basic définit à
part un espace mémoire qui lui est destiné.
Les tableaux10
Professeur: Hamza SAID
Les structures de données, les énumérations
de constantes, les tableaux et les collections
11. • Exemple
• Soit A un tableau de 4 éléments:
Les tableaux11
Professeur: Hamza SAID
Les structures de données, les énumérations
de constantes, les tableaux et les collections
10
25
589
108
0
1
2
3
• Pour accéder à un élément il faut utiliser l'indice de cet
élément.
• L'élément d'index 0 se nomme A[0] et contient la valeur
10.
• On remarque que le premier élément est l'élément
d'index 0 (ZÉRO).
• L'élément d'index 1 se nomme A[1] et contient la valeur
25.
• Quand on crée un tableau, on doit indiquer le nombre
d’éléments qu’il contient
– 4 dans notre exemple d'index 0 à 3.
12. • Déclaration similaire aux variables simples
• La portée et la visibilité des tableaux sont tout aussi
similaires
• Un tableau déclaré localement dans une procédure ne peut être utilisé que dans cette
procédure.
• Un tableau déclaré « Private » en haut d’un formulaire peut être utilisé dans
l’ensemble du formulaire.
• Un tableau déclaré publiquement dans un module peut être utilisé partout dans le
projet.
• Syntaxe de base d’un tableau à taille fixe:
• Dim NomTableau(Dim1Index, Dim2Index...) As DataType
Déclarer un tableau12
Professeur: Hamza SAID
Les tableaux
13. • Exemple:
• Pour déclarer un tableau de chaîne unidimensionnel appelé ‘Employés’ pouvant
contenir 10 noms d’employés (numérotés de 0 à 9), on fait comme suit :
Déclarer un tableau13
Professeur: Hamza SAID
Les tableaux
Dim Employés(9) As String
• Pour déclarer un tableau public bidimensionnel appelé ‘TableauDeScores ‘de deux
rangées et neuf colonnes de données entières Short, tapez cette instruction :
Dim TableauDeScores(1, 8) As Short
14. • Scénario
• L’exercice qui suit a recours à un tableau unidimensionnel appelé « Temperatures »
pour enregistrer les températures journalières les plus élevées sur une semaine de
sept jours. Le programme montre comment utiliser un tableau pour stocker et
traiter un groupe de valeurs liées sur un formulaire.
Exercice - Créer un tableau à taille fixe destiné
à des températures
14
Professeur: Hamza SAID
Les tableaux
Voir document
‘Exercice sur les
tableaux’
15. • Dans l’exemple précédent, comment peut-on laisser
l’utilisateur choisir le nombre de températures qu’il veut
saisir dans le Tableau ?
Exercice - Créer un tableau à taille fixe destiné
à des températures
15
Professeur: Hamza SAID
Les tableaux
16. • Dans l’exemple précédent, comment peut-on laisser
l’utilisateur choisir le nombre de températures qu’il veut
saisir dans le Tableau ?
• Réponse : En utilisant un tableau dynamique
Exercice - Créer un tableau à taille fixe destiné
à des températures
16
Professeur: Hamza SAID
Les tableaux
17. • Dim Temperatures() As SingleOn change la déclaration
du tableau comme suit:
• Dim Jours As Short
• Jours = InputBox("Combien de jours ?", "Créer
tableau")
On ajoute du code pour
définir le nombre d’éléments
du tableau à l’exécution :
• ReDim Temperatures(Jours - 1)On utilise « ReDim » pour
dimensionner le tableau :
Les tableaux dynamiques
17
Professeur: Hamza SAID
Les tableaux
18. Important
Avec ReDim, vous ne devez pas tenter de modifier le
nombre de dimensions d’un tableau déjà déclaré.
Les tableaux dynamiques
18
Professeur: Hamza SAID
Les tableaux
19. • La classe Array propose une collection de méthodes
qui servent à manipuler des tableaux
• Les méthodes les plus utiles sont :
• Array.Sort, Array.Find, Array.Reverse, Array.Copy et Array.Clear
• Par exemple, pour trier un tableau de températures ,
utilisez la syntaxe suivante :
• Array.Sort(Temperatures)
La classe Array19
Professeur: Hamza SAID
Les tableaux
20. • Ils permettent d’envoyer, à une procédure, des paramètres
de même type mais dont on ne connaît pas le nombre.
• Exemple :
• Une Function 'Somme' qui calcule la somme de X Integer.
Les arguments ParamArray20
Professeur: Hamza SAID
Les tableaux
21. Les arguments ParamArray21
Professeur: Hamza SAID
Les tableaux
Function Somme (ByVal ParamArray Valeurs() as Integer) As Integer
Dim i as Integer
Dim Total As Integer
For i=0 to Valeurs.Length - 1
Total += Valeurs(i)
Next i
Return Total
End Function
22. Pour appeler cette fonction:
Les arguments ParamArray22
Professeur: Hamza SAID
Les tableaux
Dim LeTotal As Integer
LeTotal = Somme (2, 5, 6, 8 ,5)
23. • Une alternative aux tableaux
• Les Collections permettent de regrouper des données.
• Elles sont très utilisées dans la programmation 'Objet'.
• Le nombre d'éléments n'est pas défini au départ
comme dans un tableau.
• Elles permettent :
• D’ajouter ou d'enlever un élément à n'importe quel endroit sans avoir à se
préoccuper de la taille de la collection, ni ou se trouve l'élément
Les collections23
Professeur: Hamza SAID
Les structures de données, les énumérations
de constantes, les tableaux et les collections
24. • Dans une collection, Il n'y a aucun élément au départ
• Il n'y a que des éléments que l'on a ajoutés.
• Les éléments sont repérés grâce à un index ou avec
une Clé unique
• Exemple :
• Les items affichés dans une ListBox (la propriété ‘Items’)
Les collections24
Professeur: Hamza SAID
Les structures de données, les énumérations
de constantes, les tableaux et les collections
25. • Il y a plusieurs types de collections dans
l'environnement .NET:
• Les Listes
Ont un Index pour repérer les éléments.
• Les dictionnaires
Chaque élément à une clé, qu’on utilise pour retrouver une valeur.
• Certaines collections combinent List et Dictionnaire, d'autres sont triées
automatiquement.
• Collections particulières: les Piles (Stack) et les Files (Queue)
Classification des collections25
Professeur: Hamza SAID
Les collections
26. • Certaines collections utilisent les génériques :
• Ce sont des collections fortement typées
• Quand on déclare la Collection, on indique le type des éléments qu’elle peut
contenir.
• Exemple : List(Of String) est une List ne pouvant contenir que des Strings.
Classification des collections26
Professeur: Hamza SAID
Les collections
27. • De type « Liste » : Utilise un index pour repérer les éléments
• Elle permet de regrouper différents éléments de différents types de
données
• Exemple :
La collection ArrayList27
Professeur: Hamza SAID
Les collections
'On crée une collection ArrayList
Dim L As New ArrayList()
'On crée une ArrayList de 5 éléments contenant chacun "A"
'(on répète "A")
L = ArrayList.Repeat("A", 5)
'On ajoute un élément à la collection
L.Add("Bonjour")
'On affiche le premier élément
MsgBox(L(0))
Autre écriture à
L(0) : L.Item(0)
28. • Principaux membres:
• Remove() ’Permet d’enlever un élément
• RemoveAt(index) ’Permet d’enlever un élément à un une position
index
• Sort() ‘Trie la collection
• Clear() 'Efface tous les éléments
• Contains(élément) ‘Retourne True si la liste contient « élément »
• Insert(position, élément) ‘Permet d'insérer un élément à un index
‘spécifique
• InsertRange() ‘Insère une ArrayList dans une autre ArrayList
La collection ArrayList28
Professeur: Hamza SAID
Les collections
29. • Il existe 3 méthodes pour parcourir une collection (L) :
1. Grâce à l'index de l'item
2. Avec For Each
Parcourir une collection29
Professeur: Hamza SAID
Les collections
For i = 0 to L.Count - 1
A = L.Item(i)
Next i
Dim o As Objet
For Each o in L
A = o
Next
Count pour trouver le
nombre d'élément
30. • Il existe 3 méthodes pour parcourir une collection (L) :
3. Avec l'objet IEnumerator
Parcourir une collection30
Professeur: Hamza SAID
Les collections
Dim L As New ArrayList
Dim C As IEnumerator = L.GetEnumerator()
While C.MoveNext()
A = C.Current
End While
IEnumerator parcourt la collection grâce à 3 propriétés :
• MoveNext : avance d'un élément dans la collection. S'il ne peut plus avancer, il
retourne False
• Reset : place l'élément courant au début
• Current : désigne l'élément courant.
31. • C'est un « Dictionnaire » qui comporte des couples clé-élément,
des paires clé-valeur.
• Ces couples sont de type Objet-Objet.
• La clé est toujours unique et ne peut être NULL
• Elle permet de retrouver la valeur qui lui est associée
La collection HashTable31
Professeur: Hamza SAID
Les collections
32. • Déclaration d’un HashTable :
• Dim H As New Hashtable
• Principaux membres :
• H.Add(Clé,Valeur) Ajoute un élément
• H.Item(Clé) Retourne l'élément correspondant à une clé.
• H.ContainsKey(Clé) Retourne True si la Clé est dans la table.
• H.ContainsValues(Valeur) Retourne True si la valeur est dans la table.
• H.Clear Efface tous les éléments
• H.Remove(Clé) Supprime l'élément ayant une clé spécifiée.
• Les collections H.Values et H.Keys contiennent les valeurs et les clés de la collection.
La collection HashTable32
Professeur: Hamza SAID
Les collections
33. La collection HashTable - Exemple
Professeur: Hamza SAID
33
'Creation d'une Hashtable.
Dim myHT As New Hashtable()
'Mettre des éléments dans la HashTable
myHT.Add("un", "premier")
myHT.Add("deux", "second")
myHT.Add("trois", "troisième")
myHT.Add("quatre", "quatrième")
'Recherche la valeur correspondant à la clé "trois"
Dim myReponse As String = myHT.Item("trois") 'Retourne "troisième"
'Parcourir la HashTable
'Création d'un IDictionaryEnumerator
Dim myEnumerator As IDictionaryEnumerator = myHT.GetEnumerator()
While myEnumerator.MoveNext()
'Afficher clé et valeur
MsgBox(myEnumerator.Key & " - " & myEnumerator.Value)
End While
34. • Peut-on parcourir une collection HashTable grâce à la
boucle For .. Next ?
La collection HashTable - Question34
Professeur: Hamza SAID
Les collections
35. • Peut-on parcourir une collection HashTable grâce à la
boucle For .. Next ?
• Réponse:
• Non, HashTable n’utilise pas d’index pour repérer
ses éléments
La collection HashTable - Question35
Professeur: Hamza SAID
Les collections
36. • Combine List et Dictionnaire avec un tri automatique
• Un hybride de HashTable et de ArrayList
• L'accès aux valeurs se fait par l'intermédiaire des clés associées
ou des index.
• mySL.Item(CLE) 'retourne la valeur correspondant à la clé CLE
• mySL.GetKey(3) 'retourne la Clé qui est dans l'élément d'index 3
• mySL.GetByIndex(3) 'retourne la valeur qui est dans l'élément d'index 3
• Tout comme les HashTables, l’ajout d’éléments se fait avec la
méthode Add(Clé,Valeur)
• La séquence d'index est basée sur la séquence de tri
• Quand un élément est ajouté, il est inséré dans l'ordre de tri adéquat, et l'indexation s'ajuste en
conséquence.
La collection SortedList36
Professeur: Hamza SAID
Les collections
37. • SortedList maintient en interne deux tableaux :
• un tableau pour les clés
• un autre pour les valeurs associées.
• L’index de base est 0
La collection SortedList37
Professeur: Hamza SAID
Les collections
39. • Collection d'objets de type FIFO (First In,
First Out)
• Premier arrivé premier servi.
• C'est la queue devant un cinéma, le premier arrivé prend son
billet le premier.
• Accepte des objets de n’importe quel type
• Les objets stockés dans Queue sont insérés
à une extrémité et supprimés à l'autre.
Queue (File)39
Professeur: Hamza SAID
Les collections Queue et Stack
40. • Le nombre d'éléments de la file est
géré automatiquement.
• Principaux membres :
• DeQueue : supprime et retourne l'objet de début de liste.
• EnQueue : ajoute un objet en fin de liste.
• Peek : retourne l'objet de début sans le supprimer.
Queue (File)40
Professeur: Hamza SAID
Les collections Queue et Stack
41. Dim myQ As New Queue()
myQ.Enqueue("One")
myQ.Enqueue("Two")
myQ.Enqueue("Three")
'Affiche le nombre d'éléments.
Console.WriteLine (myQ.Count)
'Affiche « One ».
Console.WriteLine (myQ.Dequeue())
'Affiche « Two ».
Console.WriteLine (myQ.Dequeue())
'Affiche « Three ».
Console.WriteLine (myQ.Dequeue())
41
Professeur: Hamza SAID
Les collections Queue et Stack
Queue (File) - Exemple
42. • Collection d'objets de type pile (ou
stack) LIFO (Last In, First Out)
• Dernier arrivé premier servi.
• Lors d’un appel de procédure, on empile les adresses de
retour, à la fin on récupère ces adresses du dessus.
• Accepte des objets de n’importe quel
type
42
Professeur: Hamza SAID
Les collections Queue et Stack
Stack (Pile)
43. • Le nombre d'éléments de la pile est
géré automatiquement.
• Principaux membres :
• Push : insère un objet en haut de la pile
On dit « empiler un élément »
• Pop : enlève et retourne un objet en haut de la pile
On dit « dépiler un élément »
43
Professeur: Hamza SAID
Les collections Queue et Stack
Stack (Pile)
44. Dim MaPile As New Stack()
Dim Str As String
'Ajouter des éléments à la pile
MaPile.Push ("A")
MaPile.Push ("B")
MaPile.Push ("C")
'Récupérer un objet de la pile:
Str = MaPile.Pop() 'Retourne C
Str = MaPile.Pop() 'Retourne B
Str = MaPile.Pop() 'Retourne A
44
Professeur: Hamza SAID
Les collections Queue et Stack
Stack (Pile) - Exemple
45. Exercice sur les collections45
Professeur: Hamza SAID
Les collections
• Scénario
• Dans les exercices à venir, vous allez utiliser du code pour manipuler des objets sur un
formulaire en utilisant la collection Controls. Votre projet possèdera trois objets boutons.
Vous allez créer des procédures événementielles qui modifient les propriétés Text de
chaque objet, déplacer des objets vers la droite et accorder un traitement spécial à un
objet du groupe. Le programme exploitera trois boucles For Each...Next pour manipuler
les objets chaque fois que l’utilisateur cliquera sur un des boutons.
Voir document
‘Exercice sur les
collections’
46. • Visual Basic .NET offre plusieurs méthodes pour
structurer efficacement des données :
• Les structures, qui représentent une combinaison de plusieurs types de variables
• Le regroupement de constantes se fait grâce aux énumérations de constantes
• Les tableaux servent à stocker un ensemble d’objets de mêmes types
• Finalement, les collections qui ressemblent aux tableaux mais avec une gestion
différente de la mémoire. Les principales collections qu’on a vues sont :
• ArrayList
• HashTable
• SortedList
• Stack et Queue
En bref46
Professeur: Hamza SAID
Les structures de données, les énumérations
de constantes, les tableaux et les collections