Activités préparatoires#
Les types construits
Activité 1 Des données en vrac#
ranger, retrouver, modifier : trois façons de regrouper
Durée : 25 min · Par binômes, sans machine
Consignes
-
Matériel : le cahier (toutes les réponses et tous les dessins s’y font), un crayon, quelques papillons adhésifs (post-it).
-
Jusqu’ici, une variable rangeait une seule valeur. Voici trois « tas » de données qui vont ensemble : il s’agit de décider comment les ranger pour bien s’en servir ensuite.
| Tas 1 : une carte d’identité | Tas 2 : une liste de courses | Tas 3 : les casiers de la classe |
|---|---|---|
| « Durand », « Léa », 2009, « Monaco » (nom, prénom, année de naissance, ville de naissance) |
pain, lait, pommes, beurre (écrits au fil de la semaine) |
Léa : casier 112 Hugo : casier 87 Inès : casier 245 |
Exercice 1 — Retrouver une information #
Recopier sur le cahier le tableau ci-dessous : il sert pour les questions 1 à 3.
-
Pour retrouver une information dans chaque tas, que dit-on le plus naturellement : « la troisième » (une position) ou « celle de Hugo » (une étiquette) ? Compléter la 1re ligne du tableau.
-
Ce tas va-t-il changer après sa création ? Si oui, donner un exemple de changement ; si non, expliquer pourquoi il ne doit pas changer. Compléter la 2e ligne.
-
L’ordre des éléments compte-t-il ? (Que se passe-t-il si on échange deux éléments ?) Compléter la 3e ligne.
| Tas 1 (identité) | Tas 2 (courses) | Tas 3 (casiers) | |
|---|---|---|---|
| on retrouve par… | |||
| va changer ? | |||
| l’ordre compte ? |
Corrigé
1–3. Réponses attendues (les justifications comptent plus que les mots) :
| Tas 1 (identité) | Tas 2 (courses) | Tas 3 (casiers) | |
|---|---|---|---|
| on retrouve par… | la position (le 1er = nom, le 3e = année…) | la position (ou on parcourt toute la liste) | l’étiquette (le prénom) |
| va changer ? | non : l’année de naissance ne change pas, et ne doit pas changer | oui : on ajoute, on raye | oui : un élève arrive, change de casier |
| l’ordre compte ? | oui : échanger nom et prénom change le sens | peu (mais on peut vouloir l’ordre du magasin) | non : on cherche par prénom |
Exercice 2 — Des rangées et des tiroirs #
On propose deux façons de ranger : une rangée de cases numérotées à partir de 0, ou des tiroirs étiquetés.
-
Reproduire les deux dessins sur le cahier, puis ranger le tas 2 dans la rangée de cases et le tas 3 dans les tiroirs. Que lit-on dans la case numéro 2 ?
-
On ajoute « œufs » à la liste de courses, puis on raye « lait ». Que devient la rangée ? Les numéros des cases changent-ils ?
-
Hugo change de casier : il prend le 90. Qu’efface-t-on sur le dessin ? Peut-on avoir deux tiroirs étiquetés « Hugo » ? Que faudrait-il faire si deux élèves s’appelaient Léa ?
-
La carte d’identité se range aussi dans une rangée de 4 cases. Mais personne ne doit pouvoir écrire « 2010 » à la place de « 2009 » par erreur. Comment le représenter sur le dessin ?
Corrigé
4. Cases 0 à 3 : pain, lait, pommes, beurre. La case numéro 2 contient pommes (et non lait : on numérote à partir de 0, convention déjà vue avec les chaînes et range).
5. On ajoute une case à la fin (« œufs », case 4) ; rayer « lait » fait glisser pommes, beurre et œufs d’un cran vers la gauche : leurs numéros changent (pommes passe de 2 à 1). La rangée s’allonge ou raccourcit : elle est modifiable.
6. On efface 87 dans le tiroir « Hugo » et on écrit 90 ; l’étiquette ne bouge pas. Deux tiroirs « Hugo » : non, on ne saurait plus lequel ouvrir — une étiquette doit être unique. Deux Léa : il faut une étiquette qui les distingue (« Léa D. » et « Léa M. », ou un numéro d’élève).
7. Un cadenas, une rangée « plastifiée » ou « sous verre » : on peut lire les cases, pas y écrire. Toute idée de « figé » convient.
Exercice 3 — Une étiquette, ou deux ? #
En Python, une variable est plutôt une étiquette (un post-it) collée sur une feuille, avec une flèche vers cette feuille. Le soir, Maman écrit la liste de courses et y colle l’étiquette maman. Papa dit « c’est aussi ma liste » et colle l’étiquette papa sur la même feuille.
-
Papa barre « pain » et écrit « brioche » à la place. Que lit Maman sur sa liste ?
-
Prédire, puis vérifier. Voici la même histoire en Python. Écrire sur le cahier ce qu’affiche la dernière ligne avant de l’exécuter (le professeur l’exécute ensuite au tableau), puis noter à côté le résultat obtenu.
maman = ["pain", "lait", "pommes"] papa = maman papa[0] = "brioche" print(maman) -
Que faudrait-il faire, avec les feuilles de papier, pour que Papa puisse modifier sa liste sans toucher à celle de Maman ? Dessiner la nouvelle situation sur le cahier (étiquettes, flèches, feuilles).
Corrigé
8. Maman lit brioche, lait, pommes : il n’y a qu’une feuille, avec deux étiquettes dessus.
9. Python affiche :
[’brioche’, ’lait’, ’pommes’]. Beaucoup d’élèves prédisent [’pain’, ’lait’, ’pommes’], car ils pensent que papa = maman « copie » la liste : c’est exactement la confusion que l’activité doit faire apparaître.
10. Il faut photocopier (ou recopier) la feuille et coller l’étiquette papa sur la copie : deux feuilles, une flèche chacune. En Python, on fabriquera cette copie avec une compréhension (que l’on verra dans le cours) : papa = [x for x in maman] ; Maman garde alors [’pain’, ’lait’, ’pommes’].
Exercice 4 — Mettre des mots #
-
Recopier et compléter : « Pour choisir comment regrouper des données, on se pose deux questions : est-ce qu’on retrouve un élément par sa …… ou par une …… ? Est-ce que la collection va …… après sa création ? »
-
Recopier et compléter : « Une variable n’est pas une boîte qui contient la valeur : c’est une …… qui …… vers un objet. Deux variables peuvent désigner …… objet. »
Corrigé
11. « …par sa position (un indice) ou par une étiquette (une clé) ? Est-ce que la collection va changer (être modifiée) après sa création ? »
12. « …c’est une étiquette (un nom) qui pointe vers un objet. Deux variables peuvent désigner le même objet. »