Lycée Léonard de Vinci Section STS IG

publicité
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
Téléchargement