Aller au menu - Aller au contenu

Icône Les Tableaux

Avatar
Mise à jour : 13/12/2010
Difficulté : Facile Facile Creative Commons BY-NC-SA
23 410 visites depuis 7 jours, dont 898 sur ce chapitre classé 14/786
Vous avez acquis pas mal de connaissances en VB jusqu'à présent : vous savez notamment utiliser différents types de variables et interagir avec elles. Mais attention, après les variables, voici, Mesdames, Mesdemoiselles et Messieurs, les tableaux de variables !
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Qu'est-ce qu'un tableau ?

Bah, quelle question ! C'est ceci, voyons.

Image utilisateur


Ah, vous voulez parler d'un tableau en Visual Basic ? Excusez-moi ! Je vais essayer de vous le décrire simplement.

Tableaux — Généralités


Donc, en gros, en quoi un tableau va-t-il nous être utile ?

Il va généralement nous servir à stocker plusieurs valeurs ; s'il s'agit seulement d'entrer un nombre à l'intérieur, cela ne sert à rien.
Par exemple, dans une boucle qui récupère des valeurs, si on demande dix valeurs et qu'on fait une boucle, on saisit les valeurs dans un tableau.

D'accord. Et concrètement, ça ressemble à quoi ?

On dirait mes questions ! :lol:

Trêve de plaisanterie, voici un schéma de tableau à une dimension.

Les dimensions

Tableau à une dimension


Image utilisateur


Comme vous le voyez, c'est exactement comme sous Excel.

Pour déclarer un tableau de ce type en Visual Basic, c'est très simple : on écrit notre déclaration de variable, d'Integer (entier) par exemple, et on place l'index du tableau entre parenthèses. Voici le code source de l'exemple que je viens de vous montrer :

Code : VB.NET
1
Dim MonTableau(4) As Integer

Voilà mon tableau !

Comme sur le dessin, tu disais ? Pourtant, sur ce dernier, il y a cinq cases. Or, tu n'en as inscrit que quatre. Comment cela se fait-il ?

Oui, sa longueur est de 4. Vous devez savoir qu'un tableau commence toujours par 0. Et donc, si vous avez compris, un tableau de quatre cases possède les cases 0, 1, 2, 3 et 4, soit cinq cases, comme sur le dessin.

Le nombre de cases d'un tableau est toujours « indice + 1 ».
Réciproquement, l'index de sa dernière case est « taille - 1 ».

Souvenez-vous de cela, ce sera utile par la suite.

Comment écrire dans un tableau ?
C'est très simple. Vous avez par exemple votre tableau de cinq cases (dimension 4) ; pour écrire dans la case 0 (soit, la première case), on écrit ceci :

Code : VB.NET
1
MonTableau(0) = 10

Eh oui, il s'utilise comme une simple variable ! Il suffit juste de mettre la case dans laquelle écrire, accolée à la variable et entre parenthèses.

Mais... c'est comme une fonction, je vais tout mélanger !

Eh bien, effectivement, la syntaxe est la même que la fonction ; le logiciel de développement vous donnera des indications lorsque vous allez écrire la ligne, pour que vous évitiez de confondre fonctions et tableaux.

Si vous comprenez aussi vite, passons au point suivant.

Tableaux à deux dimensions


Image utilisateur


Cette image représente un tableau à deux dimensions : une pour la hauteur, une autre pour la largeur.

Pour créer ce type de tableau, le code est presque identique :

Code : VB.NET
1
Dim MonTableau(3,4) As Integer

Cela créera un tableau avec quatre lignes et cinq colonnes, comme sur le schéma.

Pour ce qui est de le remplir, le schéma l'explique déjà très bien :

Code : VB.NET
1
MonTableau(0,0) = 10

Cela attribuera « 10 » à la case en haut à gauche.

Il est bien important que vous vous représentiez mentalement de manière visuelle la façon dont laquelle est construit un tableau à plusieurs dimensions, pour comprendre comment agir.

Un tableau à deux dimensions peut servir comme tableau à doubles entrées, par exemple.

Tableaux à trois dimensions


Une fois n'est pas coutume : encore un schéma.

Image utilisateur


Comme vous le voyez, ce type de tableau est représentable par un « cube ».

Il peut être utile lors de représentations tridimensionnelles (du moins, je ne vois que cette utilisation).

Pour le déclarer, je pense que vous avez compris la marche à suivre.

Code : VB.NET
1
Dim MonTableau(2,3,4) As Integer

Soit un tableau de trois cases de profondeur (le premier nombre), de quatre lignes (le second nombre) et de cinq colonnes (le dernier nombre).

Idem pour lui attribuer une valeur :

Code : VB.NET
1
MonTableau(2,3,4) = 10

Voilà comment mettre « 10 » dans le coin inférieur droit et au fond du « cube » (pas vraiment cubique, d'ailleurs !).

Plus...


Bien qu'on puisse aller jusqu'à une trentaine de dimensions, les tableaux supérieurs à trois dimensions sont rarement utilisés. Si vous voulez stocker plus d'informations, je vous conseille de créer un tableau de tableau à dimensions (cela devient compliqué !).

Code : VB.NET
1
Dim MonTableau(1)(2,3,4) As Integer

Ce code crée deux tableaux de tableau à trois dimensions.

Pareil pour y accéder :

Code : VB.NET
1
MonTableau(0)(2,3,4) = 10

Je pense que vous avez compris comment les déclarer et les utiliser sommairement. Ça tombe bien : on continue !

Mini-TP : comptage dans un tableau.

Bon, on va pratiquer un peu : je vais vous donner un petit exercice. Tout d'abord, récupérez le code suivant :

Code : VB.NET
1
2
3
4
Dim MonTableau(50) As Integer
For i As Integer = 0 To MonTableau.Length - 1
     MonTableau(i) = Rnd(1) * 10
Next

J'explique sommairement ce code : il crée un tableau de 51 cases, de 0 à 50.
Il remplit chaque case avec un nombre aléatoire allant de 0 à 10.

En passant, vous pourrez vous servir assez souvent de la ligne For i As Integer = 0 To MonTableau.Length - 1 puisqu'elle est, je dirais, universelle ; c'est d'ailleurs ce qu'il faut faire le plus possible dans votre code. Pourquoi universelle ? Parce que, si vous changez la taille du tableau, les cases seront toujours toutes parcourues.

L'instruction MonTableau.Length renvoie la taille du tableau, je lui retire 1 car le tableau va de 0 à 50, et la taille est de 51 (comme je l'ai expliqué plus haut).

Je veux donc que vous me comptiez ce tableau si fièrement légué !

Eh bien oui, je suis exigeant : je veux connaître le nombre de 0, de 1, etc.

Au travail, vous connaissez tout ce qu'il faut !

Secret (cliquez pour afficher)
Code : VB.NET
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Module Module1

    Sub Main()
        'Initialisation des variables
        Dim MonTableau(50), Nombres(10), NumeroTrouve As Integer

        'Remplissage du tableau de nombres aléatoires
        For i As Integer = 0 To MonTableau.Length - 1
            MonTableau(i) = Rnd(1) * 10
        Next

        'Initialisation du tableau "Nombres" avec des 0
        For i = 0 To Nombres.Length - 1
            Nombres(i) = 0
        Next

        'Comptage
        For i = 0 To MonTableau.Length - 1
            'Entre la valeur trouvée dans une variable intermédiaire
            NumeroTrouve = MonTableau(i)
            'Ajoute 1 à la case correspondant au numéro
            Nombres(NumeroTrouve) = Nombres(NumeroTrouve) + 1
        Next

        'Affichage des résultats
        For i = 0 To Nombres.Length - 1
            Console.WriteLine("Nombre de " & i & " trouvés : " & Nombres(i))
        Next

        'Pause
        Console.Read()
    End Sub

End Module

J'espère que vous avez réussi par vous-mêmes. Sachez que ce n'est pas grave si votre programme n'est pas optimisé, ou très long... ce n'est que le début !

J'explique donc ce que je viens de faire.

J'ai créé un tableau de onze cases appelé « Nombres » que j'ai initialisé avec des « 0 ».
Dans la boucle de comptage, je récupère le numéro présent dans la case actuelle et l'utilise comme indice de mon tableau Nombres.

Image utilisateur


En gros, si c'est un « 4 » qui est présent dans le tableau, il se positionne sur la quatrième case de Nombres, après quoi il ajoute « 1 » à cette valeur.

Enfin, j'affiche les résultats.

Petite remarque :

Code : VB.NET
1
2
NumeroTrouve = MonTableau(i)
Nombres(NumeroTrouve) = Nombres(NumeroTrouve) + 1

Sachez que le code ci-dessus peut se résumer en une ligne :

Code : VB.NET
1
Nombres(MonTableau(i)) = Nombres(MonTableau(i)) + 1

Mais attention : ne soyez pas radins sur les variables, cela devient très vite une usine à gaz dès que vous simplifiez tout, surtout lors de l'apprentissage ! Pensez également à toujours bien commenter vos codes.

Les résultats des tests sont les suivants :

Code : Console
Nombre de 0 trouvés : 4
Nombre de 1 trouvés : 5
Nombre de 2 trouvés : 1
Nombre de 3 trouvés : 2
Nombre de 4 trouvés : 4
Nombre de 5 trouvés : 4
Nombre de 6 trouvés : 5
Nombre de 7 trouvés : 5
Nombre de 8 trouvés : 1
Nombre de 9 trouvés : 3
Nombre de 10 trouvés : 6

Le fait d'avoir utilisé des .Length à chaque reprise me permet de changer uniquement la taille du tableau dans la déclaration pour que le comptage s'effectue sur un plus grand tableau.

Exercice : tri

Un petit exercice : le tri. Je vais vous montrer comment faire, parce que certains d'entre vous vont rapidement être perdus.

Nous allons utiliser le tri à bulles. Pour en apprendre plus concernant l'algorithme de ce tri, lisez le tutoriel rédigé par ShareMan en cliquant ici.

Je vais vous énumérer tout ce qu'il faut faire en français, ce que l'on appelle également un algorithme (un algorithme étant une séquence à accomplir pour arriver à un résultat souhaité).

  1. Créer un booléen qui deviendra vrai uniquement lorsque le tri sera bon.
  2. Créer une boucle parcourue tant que le booléen n'est pas vrai.
  3. Parcourir le tableau ; si la valeur de la cellule qui suit est inférieure à celle examinée actuellement, les inverser.

J'ai expliqué ce qu'il fallait que vous fassiez en suivant le tutoriel du tri à bulles.

Le présent exercice demande un peu plus de réflexion que les autres, mais essayez tout de même.

Code : VB.NET
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Module Module1

    Sub Main()
        'Initialisation des variables
        Dim MonTableau(20), Intermediaire, TailleTableau As Integer
        Dim EnOrdre As Boolean = False

        'Remplissage du tableau de nombres aléatoires
        For i As Integer = 0 To MonTableau.Length - 1
            MonTableau(i) = Rnd(1) * 10
        Next

        'Tri à bulles 
        TailleTableau = MonTableau.Length
        While Not EnOrdre
            EnOrdre = True
            For i = 0 To TailleTableau - 2
                If MonTableau(i) > MonTableau(i + 1) Then
                    Intermediaire = MonTableau(i)
                    MonTableau(i) = MonTableau(i + 1)
                    MonTableau(i + 1) = Intermediaire
                    EnOrdre = False
                End If
            Next
            TailleTableau = TailleTableau - 1
        End While

        'Affichage des résultats
        For i = 0 To MonTableau.Length - 1
            Console.Write(" " & MonTableau(i))
        Next

        'Pause
        Console.Read()

    End Sub

End Module

Voilà donc mon code, que j'explique : le début, vous le connaissez, je crée un tableau avec des nombres aléatoires. J'effectue ensuite le tri à bulles en suivant l'algorithme donné. Enfin, j'affiche le tout !

Le résultat est le suivant :

Code : Console
0 0 0 1 2 2 2 3 3 5 5 5 5 6 7 8 8 9 9 10 10

Pourquoi as-tu mis TailleTableau - 2 et pas que - 1 ?

Parce que j'effectue un test sur la case située à la taille du tableau + 1. Ce qui signifie que si je vais jusqu'à la dernière case du tableau, ce test sur la dernière case + 1 tombera dans le NÉANT ; et là, c'est le drame : erreur et tout ce qui va avec (souffrance, douleur et apocalypse). :lol:

J'espère que ce petit exercice vous a quand même éclairés concernant les tableaux !

Q.C.M.

A quelle valeur débute un tableau ?
Code : VB.NET
1
Dim MonTableau(10) As Integer

Initialise un tableau de combien de cases ?
Code : VB.NET
1
Dim MonTableau(4,3) As Integer

Contiendra combien de cellules ?
Est ce que cette déclaration :
Code : VB.NET
1
Dim MonTableau As Integer

Provoquera une erreur ?

Statistiques de réponses au QCM

Chapitre précédent Sommaire Chapitre suivant

Partager

32 commentaires pour "Les Tableaux"
Note moyenne : 3.60 / 4 (543 votes)
Pseudo Commentaire
Hors ligne ezriel # Posté le 12/12/2011 à 22:21:01
Avatar

Avis : Très bon

Citation : sam96
nombre de 0 trouver : 4
nombre de 1 trouver : 5
nombre de 2 trouver : 2
nombre de 3 trouver : 7
nombre de 4 trouver : 3
nombre de 5 trouver : 4
nombre de 6 trouver : 6
nombre de 7 trouver : 4
nombre de 8 trouver : 8
nombre de 9 trouver : 4
nombre de 10 trouver : 4

Les nombre ne sont pas vraiment au hasard

C'est bizarre j'ai eu les même nombres c'est pas du tout aléatoire !
o_O o_O o_O

"La violence est le dernier refuge de l’incompétence." I.Asimov
« La seule chose absolue dans un monde comme le nôtre, c'est l'humour. », Albert Einstein
Trouver les mots de passe de vos amis !!!
 
Hors ligne noute53 # Posté le 13/01/2012 à 18:48:54

:euh: Moi aussi les nombres sont toujours les mêmes ... :-°
Hors ligne la griffe # Posté le 04/02/2012 à 14:58:42

Avis : Bon

Il y a gros trou dans ce chapitre. On apprends les tableaux.. mais on apprend pas comment demander à un utilisateur de le remplir...
Hors ligne Stratogene # Posté le 17/03/2012 à 14:14:57

Pour que les nombres soi au hasard utilisez l'instrucion randomize()
Perso ce chapitre j'ai rien compis et sa me bloque
Hors ligne mlescaudron # Posté le 21/03/2012 à 16:20:31

Avis : Très bon

Salut à tous, Pour que les nombre soit différent, c'est tous simple,
Vous mettez Randomize() avant d'inserer les nombre aléatoire:
Code : VB.NET
1
2
3
4
For i As Integer = 0 To MonTableau.Length - 1
Randomize()
MonTableau(i) = Rnd(1) * 10
Next

Voir tous les commentaires