TD — Séance 4 — Les tableaux
Parcourir, chercher, corriger, concevoir
Désigner une case par un indice calculé, dérouler à la main des parcours et des recherches dans un tableau, repérer et corriger un indice hors bornes ou une case écrasée trop tôt, puis écrire et vérifier ses propres algorithmes à tableaux. Les traces se remplissent comme dans le CM : une ligne par pas, le numéro de la ligne exécutée, l’état des variables et des cases après le pas (souligner la valeur qui change), le résultat du test, et ce qu’écrit Écrire ; un arrêt sur erreur s’écrit « arrêt » avec sa cause.
Exercice 1 : deux parcours successifs
Une boulangerie de Saint-Louis note le nombre de baguettes vendues avant 8 heures pendant cinq jours. L’algorithme suivant calcule la moyenne, puis compte les jours qui la dépassent.
Relever, pour chaque tour de la première boucle,
V[i]et la valeur desaprès le tour.\(i\) V[i]saprès le tour1 2 3 4 5 Quelle valeur reçoit
moyà la ligne 8 ? Relever ensuite, pour chaque tour de la seconde boucle,V[i], le résultat du test de la ligne 11 et la valeur decaprès le tour.\(i\) V[i]V[i] > moycaprès le tour1 2 3 4 5 Qu’écrit la ligne 15 ?
Qu’écrit l’algorithme si la ligne 11 devient Si
V[i]\(\geq\)moyAlors ?Combien de fois chaque case de
Vest-elle lue pendant l’exécution ? Pourquoi la moyenne ne peut-elle pas être comparée aux cases dans la première boucle ?
Exercice 2 : indices et cases
Après les instructions \(\texttt{n}\leftarrow5\),
T : tableau[1..n] déntiers,T\(\leftarrow\)[5, 3, 8, 1, 6]et \(\texttt{i}\leftarrow2\), donner la valeur de chacune des expressions suivantes, ou l’indice hors bornes qu’elle demande.Expression Valeur, ou indice hors bornes T[i]T[i + 3]T[n - i]T[n - i + 1]T[T[4]]T[T[2] + 3]T[i - 2]T[n div 2]T[i] + 1T[i + 1]On considère l’algorithme suivant. Donner le contenu des quatre cases de
Uaprès chaque affectation d’une case (lignes 3, 5 et 6).Ligne exécutée U[1]U[2]U[3]U[4]Que se passe-t-il si la ligne 2 devient Pour
kde 0 à 4 Faire ? À quel pas l’exécution s’arrête-t-elle ?
Exercice 3 : recherche avec arrêt
Au centre d’examen de Thiès, le tableau D contient les numéros de table des candidats d’une salle, dans l’ordre des rangées. Un même numéro peut figurer deux fois par erreur de saisie.
Pour l’entrée 108, relever \(i\),
D[i],poset le résultat du test à chaque exécution de la ligne 7.Test iD[i]posTest de la ligne 7 1 2 3 4 5 Pour chacune des entrées 108, 296 et 500, donner le nombre de comparaisons faites par la ligne 8 et ce qu’écrit la ligne 13.
xComparaisons (ligne 8) Écrit 108 296 500 La ligne 7 devient TantQue \(i\leq n\) Faire. Qu’écrit l’algorithme pour l’entrée 108 ? Combien de comparaisons fait-il ? Quelle position rend-il, en général ?
Modifier l’algorithme pour qu’il rende la dernière position de \(x\), en gardant l’arrêt dès que \(x\) est trouvé. Tracer la nouvelle version pour l’entrée 108 et compter ses comparaisons.
Exercice 4 : deux décalages fautifs
Au guichet de la poste de Kaolack, le tableau F contient les numéros des tickets en attente, dans l’ordre d’arrivée.
Partie A. Quand le premier client est servi, chacun avance d’une place et la dernière place se libère (0).
Donner le contenu de
Faprès chaque tour. Que se passe-t-il au tour 5 ?Tour \(i\) F[1]F[2]F[3]F[4]F[5]1 2 3 4 5 Corriger l’algorithme par un seul changement, puis donner le contenu final de
F.
Partie B. Un client prioritaire, ticket 9, doit être placé en tête ; chacun recule d’une place.
Donner le contenu de
Faprès chaque tour, puis à la fin. Quels numéros ont disparu ?Tour \(i\) F[1]F[2]F[3]F[4]F[5]2 3 4 5 Corriger la ligne 4 seule. Donner le contenu final. Quel numéro est perdu, et pourquoi ne peut-il pas en être autrement avec un tableau de 5 cases ?
Exercice 5 : conception
Cheikh relève chaque jour, à Matam, la température maximale.
Partie A. Écrire un algorithme qui lit \(n\) (\(n\geq2\)), puis \(n\) températures rangées dans un tableau, et écrit la plus forte hausse d’un jour au suivant (différence entre la température d’un jour et celle de la veille, éventuellement négative) et le jour où elle se termine. Numéroter les lignes ; une instruction par ligne.
Algorithme :
Tracer l’algorithme pour \(n=5\) et les températures 30, 34, 33, 39, 37. Les colonnes de variables et de cases sont à nommer.
Pas Ligne Test Écrit Tracer l’algorithme pour le cas limite \(n=2\) et les températures 35 et 32. Combien de tours fait la boucle de recherche de la hausse ?
Pas Ligne Test Écrit
Partie B. Le tableau T de \(n\) cases est déjà rempli. Écrire un algorithme qui écrit 0 si T est rangé par ordre croissant (chaque case inférieure ou égale à la suivante), et sinon le plus petit indice \(i\) tel que T[i] \(>\) T[i + 1]. La boucle doit s’arrêter dès qu’un tel indice est trouvé. Justifier le choix de la boucle et de sa condition.
Algorithme :
Tracer l’algorithme pour
T\(\leftarrow\)[3, 5, 4, 8], puis pour le cas limite d’un tableau d’une case,T\(\leftarrow\)[7].Pas Ligne Test Écrit Pas Ligne Test Écrit
Exercice 6 : tableau des effectifs
Un sondage de quartier, aux Parcelles Assainies, demande à huit habitants de noter un service de 1 à 5. Le tableau R contient les réponses ; l’algorithme compte, dans E, le nombre de réponses de chaque valeur.
Donner, pour chaque tour de la boucle des lignes 8 à 10,
R[k]et le contenu deEaprès le tour.\(k\) R[k]E[1]E[2]E[3]E[4]E[5]1 2 3 4 5 6 7 8 Qu’écrit l’algorithme ? Pourquoi la somme des cases de
Evaut-elle \(n\) ?On supprime les lignes 5 à 7. À quel tour et sur quelle case l’exécution s’arrête-t-elle ? Pourquoi ?
On remet les lignes 5 à 7, et une réponse 6 est saisie à la place de la sixième réponse. Que se passe-t-il ? Proposer une protection qui ignore les réponses hors de 1 à 5.
Pour cette séance
Le cours
Les slides