Lycée Léonard de Vinci Section STS IG - AR Cours/TD 3 26 Septembre Objectifs Tableau Structure de données complexes Un tableau est une collection de données de type compatibles. Exemple : notes : tableau[100] d'entier // déclaration d'une variable de type collection d'entiers Vocabulaire : Soit notes un tableau en mémoire. Variable de type tableau éléments du tableau notes : [0, 3, 11, 4, 5 , 5, 5, 6, 17, 0, 15] index: 0 1 2 3 4 5 6 7 8 9 10 indices du tableau (les indices désignent la position des éléments) ATTENTION : ne pas confondre indice (position) d'un tableau avec un de ses éléments ! Les fonctions courantes sur un tableau sont (CRUD) : Create : c'est l'instruction de déclaration et/ou d'initialisation Ex: (php) : $notes = array() // tableau à zéro éléments (java) : int[ ] notes; // déclaration d'un tableau d'entier notes = int[100]; // initialisation (100 éléments, initialisés à 0) Retrieve : sur une liste non triée, il faut parcourir un à un les éléments. Pour cela il faut connaître le nombre d'éléments du tableau : Ex: (php) count($notes) 1 (java) notes.length ATTENTION : il faut parfois distinguer la capacité physique du tableau (donnée par les fonctions count ou length) d'une capacité logique (le nombre d'éléments réellement géré par l'application à un instant donné) Update : Une mis à jour d'un élément d'un tableau nécessite 3 opérations 1. obtenir la valeur actuellement par son indice 2. modifier cette valeur 3. affecter la nouvelle valeur dans le tableau à l'indice donné Ex 1: (php) $notes[0] = $notes[0] + 1; (java) notes[0] = notes[0] + 1; Ex 1bis: (php) $notes[0] += 1; (java) notes[0]++; Delete : Une opération complexe, on distingue souvent deux versions : 1/ suppression logique on remplace sa valeur par une valeur « nulle » que l'on évitera lors de recherches. 2/ suppression physique on tasse d'une position vers la gauche, les éléments à droite de l'élément à supprimer, ce qui a pour effet d'écraser la valeur à supprimer, et de diminuer de 1 le nombre d'éléments dans le tableau. 2 EXERCICES 1/ Réservations (algo avec taille physique == taille logique) On souhaite calculer le nombre de réservés à un séminaire. Pour cela, un sous-programme est conçu. A partir de son squelette (ci-après), compléter le tableau Puis, compléter le programme : • Structure de données tableauPlaceReserve[0..RESERVERMAX-1] : tableau de booléen // l'indice est le numéro de chaise, // la valeur à l'indice indique si la place est réservée ou non • Algorithme Fonction nbRéservés (donnée tabRes [0..TAILMAX-1] : tableau de boolén) : entier Début i : entier x : entier x ←0 Fin 3 2/ Réservations (algo avec taille physique != taille logique) On souhaite calculer le nombre de réservés à un séminaire. Pour cela, un sous-programme est conçu. A partir de son squelette (ci-après), compléter le tableau Puis, compléter le programme : • Structure de données tableauPlaceReserve[0..TAILMAX-1] : tableau de booléen // l'indice est le numéro de chaise, // la valeur à l'indice indique si la place est réservée ou non • Algorithme Fonction nbRéservés (donnée tabRes [0..TAILMAX-1] : tableau de boolén, nbPlaces : entier) : entier Début i : entier x : entier x ←0 Fin 4