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 erreurArrayIndexOutOfBoundsException. 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 avectableau.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 bouclewhileou une bouclefor-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 unintpeut ĂȘ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.
- 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
- Faites 3-4 exercices dans la section âArray-1â pour vous familiariser avec la structure des tableaux (index et
length). - Faites 3-4 exerices dans la section âArray-2â pour vous familiariser Ă traverser des tableaux (incluant lâutilisation de
continueetbreak).
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.