Keyboard shortcuts

Touchez ← ou → pour naviguer les chapitres

Touchez S ou / pour chercher dans le livre

Touchez ? pour afficher ce message

Touchez Esc pour masquer ce message

Accueil > Programmer avec Java > Structures de données >

📚 Tableau

Survol et attentes

Définitions
tableau
une structure de donnĂ©es qui stocke une collection d’élĂ©ments de mĂȘme type. En anglais, ça s’appelle un array. En Java, les tableaux sont de taille fixe. Il sont dĂ©clarĂ©s avec des crochets droits [] aprĂšs le type de donnĂ©es. P. ex. int[] tableau; pour un tableau d’entiers.
index
un nombre entier qui identifie la position d’un Ă©lĂ©ment dans un tableau. Les index dans Java, comme dans la majoritĂ© des langages, commencent Ă  0. On accĂšde Ă  un Ă©lĂ©ment spĂ©cifique d’un tableau avec tableau[index]. Si l’index fourni n’est pas valide (nĂ©gatif ou >= length), Java gĂ©nĂšre une erreur ArrayIndexOutOfBoundsException.
length
un attribut d’un tableau qui indique le nombre d’élĂ©ments dans le tableau. Pour un tableau tableau, on peut obtenir la longueur avec tableau.length.
Arrays
une classe Java qui fournit des mĂ©thodes pour manipuler des tableaux, comme pour les afficher ou les trier sans avoir Ă  dĂ©velopper ces algorithmes nous-mĂȘmes.
traverser
parcourir tous les Ă©lĂ©ments d’un tableau. Il existe plusieurs façons de le faire en Java, notamment avec une boucle for, une boucle while ou une boucle for-each. C’est une technique de base pour un grand nombre d’algorithmes comme trouver des valeurs, compter des Ă©lĂ©ments, ou les trier.
variable accumulateur
une variable utilisĂ©e pour combiner les valeurs inidividuelles d’un tableau avec une opĂ©ration quelconque. P. ex. une variable pour la somme de tous les Ă©lĂ©ments d’un tableau.
variable drapeau
une variable utilisĂ©e pour indiquer l’état de quelque chose. Si l’état est juste vrai/faux, on peut utiliser un boolean. Dans d’autre cas, l’état peut ĂȘtre une valeur numĂ©rique - comme la position dans un tableau - alors un int peut ĂȘtre plus appropriĂ©. Exemple : un drapeau boolĂ©en peut indiquer si un Ă©lĂ©ment est trouvĂ© dans un tableau ou non. Dans le mĂȘme contexte un drapeu numĂ©rique peut indiquer l’index de l’élĂ©ment trouvĂ© ou -1 s’il n’est pas trouvĂ©.

Objectifs d’apprentissage

À la fin de cette leçon vous devrez ĂȘtre en mesure de :

  • Comprendre la structure d’un tableau, notamment l’utilisation des index
  • Obtenir ou modifier un Ă©lĂ©ment spĂ©cifique d’un tableau
  • Traverser tous les Ă©lĂ©ments d’un tableau avec diffĂ©rents types de boucles

CritĂšres de succĂšs

  • Je peux organiser mes donnĂ©es dans des tableaux et les intĂ©grer dans la logique de mes programmes Java.

Structure d’un tableau en mĂ©moire

Crédit : Mustapha Ejjaaouani, 2024

Créer et utiliser des tableaux en Java

Crédit : Hervice Ngouffo, 2024

Traverser un tableau - trois façons différentes

Pour traverser un tableau, on utilise une boucle.

Voir les notes sur les boucles pour vous rafraßchir la mémoire.

Dans les exemples ci-dessous, on traverse une boucle simplement pour afficher chaque valeur du tableau.

Boucle while - lire ou modifier les éléments du tableau

La boucle while peut servir pour n’importe quelle boucle.

int[] tableau = {1, 2, 3, 4, 5};

int i = 0;
while (i < tableau.length) {
    System.out.println(tableau[i]);
    i++;
}

Boucle for - lire ou modifier les éléments du tableau

La boucle for est particuliĂšrement bien adaptĂ©e pour les tableaux car les trois opĂ©rations sur l’index du tableau dans la version while sont regroupĂ©es dans la dĂ©claration de la boucle for.

int[] tableau = {1, 2, 3, 4, 5};

for (int i = 0; i < tableau.length; i++) {
    System.out.println(tableau[i]);
}

Boucle for-each - lire seulement

La boucle for-each est une version spécialisée de la syntaxe for conçu spécifiquement pour traverser les collections, y compris les tableaux.

Dans cette boucle, on n’utilise pas les index du tableau - ils sont gĂ©rĂ©s automatiquement par Java. PlutĂŽt, on utilise une variable temporaire pour chaque Ă©lĂ©ment du tableau. Cette variable doit ĂȘtre du mĂȘme type que les Ă©lĂ©ments du tableau.

int[] tableau = {1, 2, 3, 4, 5};

for (int element : tableau) {
    System.out.println(element);
}

La ligne for (int element : tableau) se lit comme “pour chaque Ă©lĂ©ment de type int dans le tableau”.

Arrays

La classe Arrays de Java fournit des méthodes pratiques pour manipuler des tableaux.

toString()

Pour afficher les Ă©lĂ©ments d’un tableau sans Ă©crire un algorithme spĂ©cifique, vous pouvez utiliser la commande suivante :

Array.toString(tableau);

Comparez la sortie de cette commande avec la commande System.out.println(tableau); pour voir la différence.

sort()

Pour trier un tableau en ordre croissant, vous pouvez utiliser la commande suivante :

Arrays.sort(tableau);

Cette mĂ©thode modifie directement les Ă©lĂ©ments de tableau ce qu’on appelle un tri en place. Aucun nouveau tableau est gĂ©nĂ©rĂ©.

binarySearch()

Contexte : la recherche linéaire

Pour utiliser une recherche linéaire sur un tableau, on peut simplement le traverser élément-par-élément, comme ceci :

int recherche = 3;
boolean found = false;
for (int i = 0; i < tableau.length; i++) {
    if (tableau[i] == recherche) {
        found = true;
        break;
    }
}

S’il n’y a jamais d’égalitĂ© entre la valeur cherchĂ©e et un Ă©lĂ©ment du tableau, found restera false. Sinon, on change found Ă  true et on sort de la boucle.

La plupart des mĂ©thodes de recherche retourne un index valide si l’élĂ©ment est trouvĂ©, ou un index nĂ©gatif si l’élĂ©ment n’est pas trouvĂ©. L’algorithme pour ça est identique Ă  l’algorithme prĂ©cĂ©dent, mais on remplace le drapeau boolĂ©en avec un drapeau numĂ©rique :

int recherche = 3;
int found = -1;
for (int i = 0; i < tableau.length; i++) {
    if (tableau[i] == recherche) {
        found = i;
        break;
    }
}

Recherche binaire

Par contre, si on a beaucoup d’élĂ©ments Ă  chercher, une mĂ©thode plus efficace est la recherche binaire. Il y a une prĂ©condition, par contre : pour utiliser la recherche binaire, le tableau doit ĂȘtre triĂ©.

Voici comment on peut utiliser la recherche binaire avec Arrays :

int recherche = 3;
Arrays.sort(tableau);
int index = Arrays.binarySearch(tableau, recherche);

Pour plus de dĂ©tails sur les algorithmes de recherche et l’efficacitĂ© algorithmique, voir le cours ICS4U!

Exemple complet - faire la moyenne des Ă©lĂ©ments d’un tableau

Crédit : Hervice Ngouffo, 2024

Exercices

📚 Tester la comprĂ©hension

Quiz de vérification sur les tableaux et leurs index

đŸ› ïž Pratique

Vous rendre sur le site codingbat.com et vous créer un compte avec votre courriel écolecatholique.ca. Ajouter mon courriel dans la section Teacher Share afin de me montrer vos progrÚs.

  1. Travaillez d’abord 3-4 exercices dans la section “Warmup-1” pour vous familiariser avec le systùme :
    • la formulation des problĂšmes
    • les entrĂ©es sous forme de paramĂštres
    • les sorties en tant que valeurs de retour
    • les tests automatisĂ©s
    • les exemples de solutions
  2. Faites 3-4 exercices dans la section “Array-1” pour vous familiariser avec la structure des tableaux (index et length).
  3. Faites 3-4 exerices dans la section “Array-2” pour vous familiariser à traverser des tableaux (incluant l’utilisation de continue et break).

La section “Array-3” est plus avancĂ©e (matrices / tableaux de tableaux) et peut ĂȘtre considĂ©rĂ©e comme un dĂ©fi pour ce cours.

© 2022-2025 David Crowley