Algorithmique et programmation : 20 exercices corrigésmaths 5e — du geste seul au problème de contrôle
Vingt exercices en blocs Scratch, du bloc seul au petit problème : lire les blocs dans l'ordre, repérer les entrées et les sorties, calculer la valeur d'une expression, prévoir ce que dira le lutin avant de lancer le programme. Des fléchettes, un trajet à vélo, une pâte à crêpes, un robot aspirateur, une station météo, un cadenas, une tondeuse robot, un tour de magie. Un rappel de cours avant chaque niveau. Cherche d'abord au brouillon, puis ouvre la correction : étape par étape, avec le tableau de suivi des variables et le piège nommé.
Un seul geste : exercices 1 à 8niveau 1
Un programme court. Je le suis bloc par bloc, en notant la valeur de chaque variable.
Rappel de cours
- Un programme s'exécute dans l'ordre, de haut en bas, un bloc après l'autre.
- Une variable est une case qui porte un nom. « mettre x à 5 » remplace ce qu'elle contient ; « ajouter 5 à x » part de l'ancienne valeur et lui ajoute .
- L'entrée, c'est ce que le programme reçoit : la réponse tapée après un bloc « demander ». La sortie, c'est ce qu'il montre : le bloc « dire ».
- Dans Scratch, * veut dire × et / veut dire ÷. La machine respecte les priorités, comme sur une copie.
1
Dans un jeu de fléchettes sur tablette, un bonus final double le score. a) Que dit le lutin à la fin ? b) Un élève échange les blocs « ajouter 6 à score » et « mettre score à score * 2 ». Que dit alors le lutin ? c) L'ordre des blocs compte-t-il ?Voir la correction
Je lis les blocs de haut en bas, et je note la valeur de score après chaque bloc. a) score vaut , puis , puis . Le lutin dit . b) Avec les deux blocs échangés : score vaut , puis , puis . Le lutin dit . c) Mêmes blocs, autre ordre, autre résultat : l'ordre compte. ⛔ Le piège : croire qu'on peut ranger les blocs comme on veut. La machine les exécute dans l'ordre, de haut en bas, comme les étapes d'une recette. Réponse : a) ; b) ; c) oui, l'ordre compte.après le bloc score blocs échangés 1er 4 4 2e 10 8 3e 20 14 2
Une cycliste roule à km/h : elle met minutes pour faire km (vitesse choisie pour l'exercice). Ce programme calcule la durée d'un trajet, quand on tape la distance en km. a) Quelle est l'entrée du programme ? Quelle est sa sortie ? b) On répond . Que dit le lutin ? c) Le lutin a dit . Quelle distance avait-on tapée ?Voir la correction
a) L'entrée, c'est ce que le programme REÇOIT : la distance tapée au clavier, en km. Elle arrive dans « réponse » grâce au bloc « demander ». La sortie, c'est ce qu'il MONTRE : le nombre que dit le lutin, la durée du trajet en minutes. b) km vaut , puis minutes vaut . Le lutin dit : minutes de vélo. c) Je remonte le programme : le lutin dit fois la distance. La distance est donc . ⭐ Contrôle : . ⛔ Le piège : prendre la variable minutes pour une entrée. Elle est calculée PAR le programme : personne ne la tape. Réponse : b) ; c) on avait tapé km.distance tapée (km) le lutin dit (min) 12 48 7,5 30 3
Dans un programme, la variable x vaut . Quelle valeur donne chaque bloc opérateur ? a) « x * 4 − 9 » b) « (x + 3) * 2 » c) « x * x − 10 » d) « 3 * x + x »Voir la correction
Je remplace x par , puis je calcule comme en maths : d'abord les parenthèses, puis * et /, puis + et −. a) . b) . c) . d) . ⛔ Le piège du a) : calculer d'abord. La machine respecte les priorités : la multiplication passe avant la soustraction. ⭐ Dans Scratch, l'étoile * est le signe ×. Réponse : a) ; b) ; c) ; d) .bloc avec x = 7 x * 4 − 9 19 (x + 3) * 2 20 x * x − 10 39 3 * x + x 28 4
a) Prévois ce que dit le lutin si on répond , puis si on répond . b) Écris en une seule ligne le calcul fait avec . c) Léa écrit . Que trouve-t-elle ? Pourquoi est-ce faux ?Voir la correction
Je suis la variable n, bloc après bloc. Chaque calcul s'applique au résultat du bloc d'avant. a) Avec : n vaut , puis , puis . Le lutin dit . Avec : , puis . Le lutin dit . b) Le est fait AVANT le : en une ligne, il faut des parenthèses. . c) Léa trouve . Sans parenthèses, la multiplication passe d'abord : ce n'est plus l'ordre du programme. ⛔ Le piège : écrire le calcul en une ligne sans parenthèses. Le programme, lui, fait les blocs dans l'ordre. Réponse : a) et ; b) ; c) , c'est faux.réponse n + 5 n * 3 2 7 21 10 15 45 5
Le lutin part en regardant vers la droite. « tourner à gauche de 90° » lui fait faire un quart de tour vers la gauche. Programme A : avancer de 40 ; tourner à gauche de 90° ; avancer de 30. Programme B : tourner à gauche de 90° ; avancer de 40 ; avancer de 30. a) Les deux programmes ont-ils les mêmes blocs ? b) Où arrive le lutin avec chaque programme ? c) Combien de pas fait-il en tout, à chaque fois ?Voir la correction
a) Oui : les mêmes trois blocs, deux « avancer » et un « tourner ». Seul l'ordre change. b) Programme A : le lutin avance de pas vers la droite, puis fait un quart de tour à gauche : il regarde vers le haut. Il avance de pas vers le haut. Il arrive pas à droite et pas plus haut que son départ. Programme B : il tourne d'abord, et regarde vers le haut. Puis il avance de , puis de , toujours vers le haut. Il arrive pas plus haut, et pas du tout à droite. c) Dans les deux cas, il avance de pas. ⛔ Le piège : croire que les mêmes blocs mènent au même endroit. Tourner AVANT d'avancer change la direction de tous les pas qui suivent. Réponse : b) A : pas à droite et en haut ; B : pas en haut ; c) pas à chaque fois.6
Un train parcourt km en heures. Dans un programme, la variable d vaut et la variable t vaut . a) Que vaut le bloc « d / t » ? Que représente ce nombre ? b) Que vaut « t / d » ? Est-ce la vitesse du train ? c) On range « d / t » dans une variable v. Que vaut « d + v * 2 » ? Que représente ce nombre ?Voir la correction
Je remplace chaque variable par sa valeur : d par , t par . a) . Le train fait km en une heure : c'est sa vitesse, km/h. b) . Ce n'est pas la vitesse : c'est le temps, en heures, pour faire un seul kilomètre. c) v vaut . La multiplication passe d'abord : . C'est la distance parcourue si le train roule encore heures : km en tout. ⛔ Le piège du b) : croire que « d / t » et « t / d » donnent la même chose. Dans une division, l'ordre compte : n'est pas . Réponse : a) km/h ; b) , ce n'est pas la vitesse ; c) km.bloc valeur d / t 80 t / d 0,0125 d + v * 2 400 7
Un programme range un nombre dans x, puis le lutin dit la valeur de « x * 10 + 1 ». Réponds sans lancer le programme. a) Que dit le lutin si x vaut ? b) Si x augmente de , de combien augmente ce que dit le lutin ? c) Le lutin a dit . Que valait x ?Voir la correction
a) Je remplace x par : . Le lutin dit . b) Si x passe de à : . Le résultat augmente de : x est multiplié par , donc chaque unité de plus en donne de plus. c) Je remonte. Le lutin a dit : j'enlève d'abord le ajouté en dernier, il reste . Puis je divise par : . ⭐ Contrôle : . ⛔ Le piège du c) : défaire les calculs dans le même ordre, en divisant par d'abord. Pour remonter, on défait à l'ENVERS : le dernier calcul en premier. Réponse : a) ; b) de ; c) x valait .x x * 10 + 1 4 41 5 51 9 91 8
Une tablette chargée à % perd % de batterie par heure de vidéo (modèle choisi pour l'exercice). Le programme range dans la variable batterie, puis répète fois le bloc « mettre batterie à batterie − 15 », puis dit batterie. a) Que dit le lutin ? b) Combien de fois le bloc placé dans la boucle est-il exécuté ? c) Combien de tours de boucle faudrait-il pour que le lutin dise ?Voir la correction
a) La boucle refait fois le bloc qu'elle contient. Je suis la variable à chaque tour. Tour 1 : . Tour 2 : . Tour 3 : . Le lutin dit : il reste % de batterie après heures. b) fois : une fois par tour de boucle. c) La batterie doit perdre %, par paquets de : . Il faudrait tours. ⛔ Le piège : lire le bloc de la boucle une seule fois et répondre . « répéter 3 fois » refait TOUT ce qu'il contient, trois fois. Réponse : a) ; b) fois ; c) tours.heure batterie (%) départ 100 1 85 2 70 3 55
Type devoir : exercices 9 à 16niveau 2
Plusieurs questions sur un même programme. Je le fais tourner au brouillon avant de répondre.
Rappel de cours
- Pour suivre un programme, je fais un tableau : une colonne par variable, une ligne par bloc ou par tour de boucle.
- Un bloc utilise la valeur qu'a la variable AU MOMENT où il s'exécute, pas celle du départ.
- Pour remonter de la sortie à l'entrée, je défais les calculs à l'envers : le dernier en premier.
9
Pour une pâte à crêpes, on compte g de farine par personne (recette choisie pour l'exercice). a) Quelle est l'entrée du programme ? Quelle est sa sortie ? b) Que dit le lutin pour personnes ? Pour personnes ? c) Le lutin a dit . Pour combien de personnes est la recette ?Voir la correction
a) L'entrée est le nombre de personnes, tapé au clavier en réponse à la question. La sortie est ce que dit le lutin : la masse de farine, en grammes. b) Pour personnes : . Le lutin dit . Pour personnes : . Le lutin dit . c) Je remonte : le lutin dit fois le nombre de personnes. . ⭐ Contrôle : . ⛔ Le piège : répondre « farine » pour l'entrée. farine est une variable calculée par le programme : c'est la sortie qu'il prépare, pas ce qu'on lui donne. Réponse : b) g et g ; c) pour personnes.personnes farine (g) 4 240 9 540 7 420 10
Un robot aspirateur part d'un coin de la pièce en regardant vers la droite. Un pas vaut cm. Il exécute dans l'ordre : avancer de 30 ; tourner à gauche de 90° ; avancer de 20 ; tourner à gauche de 90° ; avancer de 10 ; tourner à droite de 90° ; avancer de 10. a) Dessine son trajet sur du papier quadrillé, un carreau pour pas. b) Quelle distance a-t-il parcourue, en pas, puis en mètres ? c) À la fin, est-il plus à droite ou plus à gauche que son départ ? De combien de pas ? d) Vers où regarde-t-il à la fin ?Voir la correction
a) Je suis le robot bloc par bloc, en notant vers où il regarde. Il avance de vers la droite. Un quart de tour à gauche : il regarde vers le haut. Il avance de . Encore un quart de tour à gauche : il regarde vers la gauche. Il avance de . Un quart de tour à DROITE : il regarde de nouveau vers le haut. Il avance de . b) pas. Un pas vaut cm : cm, soit m. c) Il est allé pas vers la droite, puis il est revenu de pas vers la gauche : . Il est pas plus à droite que son départ. d) À la fin, il regarde vers le haut. ⛔ Le piège : oublier qu'un « tourner » change la direction de TOUS les pas suivants. Après deux quarts de tour à gauche, « avancer » le fait revenir vers la gauche. Réponse : b) pas, soit m ; c) pas plus à droite ; d) vers le haut.11
Un site vend des carnets. Ce programme calcule le prix d'une commande, avec € de frais d'envoi (prix choisis pour l'exercice). a) Combien ce programme a-t-il d'entrées ? De sorties ? b) On tape (le prix d'un carnet), puis (la quantité). Que dit le lutin ? c) Un élève a écrit « mettre total à p * (q + 3) ». Que dirait son programme ? Pourquoi est-ce faux ?Voir la correction
a) Il y a deux blocs « demander » : deux entrées, le prix d'un carnet et la quantité. Il y a un seul bloc « dire » : une sortie, le prix à payer. b) p vaut et q vaut . La machine multiplie d'abord : , puis . Le lutin dit : on paie €. c) Avec les parenthèses : . Son programme ferait payer les € de frais comme carnets de plus, à € chacun. ⛔ Le piège : les parenthèses. « p * (q + 3) » multiplie AUSSI les frais d'envoi par le prix d'un carnet. Réponse : a) deux entrées, une sortie ; b) ; c) , c'est faux.p et q p * q + 3 p * (q + 3) 5 et 4 23 35 12
Une appli météo donne des conseils en été. On tape la température du jour, en degrés. Combien de messages dit le lutin, et lesquels, si on répond ? ? ?Voir la correction
Je lis les blocs dans l'ordre. « Bonjour » et « Bonne journée » sont EN DEHORS du « si » : ils sont dits à chaque fois. « Bois souvent » n'est dit que si la condition est vraie. Avec : est faux. Le lutin dit « Bonjour » puis « Bonne journée » : messages. Avec : est faux, car n'est pas STRICTEMENT plus grand que . Encore messages. Avec : est vrai. Le lutin dit « Bonjour », « Bois souvent », puis « Bonne journée » : messages. ⛔ Le piège : le pile. Avec « > », la valeur du seuil ne déclenche pas le conseil. ⚠️ Autre piège : croire que « Bonne journée » n'est dit que si la condition est fausse. Il est SOUS le « si », pas dedans : il est dit à chaque fois. Réponse : , et messages.degrés réponse > 30 messages 25 faux 2 30 faux 2 34 vrai 3 13
Quatre programmes rangent un nombre dans x, puis le lutin dit la valeur d'un bloc. A : « x * 2 + x » ; B : « x * 3 » ; C : « x + 2 * x » ; D : « (x + 2) * x ». a) Que dit chaque programme quand x vaut ? Quand x vaut ? b) Lesquels disent toujours la même chose ? Explique sans essayer d'autres nombres.Voir la correction
a) Je remplace x par dans chaque bloc, en respectant les priorités. A : . B : . C : . D : . Avec : A dit , B dit , C dit et D dit . b) A prend fois x, puis encore une fois x : cela fait fois x. C prend x, puis fois x : encore fois x. C'est exactement ce que calcule B. D, lui, multiplie x par x + 2, un nombre qui change avec x : avec et avec , il ne dit pas fois x. ⭐ Avec x égal à , D dit , comme les autres ! Un essai qui marche ne prouve rien : il faut une explication. ⛔ Le piège : lire C de gauche à droite, comme . Sans parenthèses, la multiplication passe d'abord. Réponse : A, B et C disent toujours la même chose ; D non.x A, B et C D 4 12 24 10 30 120 1 3 3 14
Ces quatre blocs doivent faire dire au lutin le périmètre d'un terrain rectangulaire de m sur m. Ils ont été mélangés. a) Remets-les dans le bon ordre, sous « quand drapeau vert cliqué ». b) Que dit alors le lutin ? c) Dans ton programme rangé, peut-on échanger les deux premiers blocs ?Voir la correction
a) Un bloc ne peut se servir d'une variable que si elle a déjà reçu sa valeur. Je range donc d'abord les deux mesures, puis le calcul, puis la sortie. L'ordre : « mettre long à 8 », « mettre larg à 5 », « mettre p à 2 * (long + larg) », « dire p ». b) p vaut . Le lutin dit : le périmètre est m. c) Oui : les deux premiers blocs rangent des valeurs dans deux cases différentes, et l'un ne se sert pas de l'autre. Le lutin dit encore . ⛔ Le piège : laisser « dire p » en premier, parce qu'il est en haut du tas. Le lutin parlerait avant que p soit calculé. Réponse : b) ; c) oui.15
Sacha a déjà € dans sa tirelire. Chaque semaine, pendant semaines, il y met la même somme. a) Combien de fois le lutin pose-t-il sa question ? b) On répond . Que dit le lutin ? c) Le lutin a dit . Qu'avait-on répondu ?Voir la correction
a) Le bloc « demander » est AU-DESSUS de la boucle : il n'est exécuté qu'une fois. Le lutin pose sa question une seule fois. b) tirelire vaut . La boucle ajoute quatre fois : , , , puis . Le lutin dit . c) Je remonte : la tirelire a reçu € en semaines, soit € par semaine. ⭐ Contrôle : . ⛔ Le piège : croire que le lutin pose sa question à chaque tour. Seuls les blocs rangés DANS la boucle sont répétés ; « réponse » garde la même valeur pendant les quatre tours. Réponse : a) une fois ; b) ; c) € par semaine.semaine tirelire (€) départ 20 1 35 2 50 3 65 4 80 16
Une feuille de papier a une épaisseur de mm. Chaque pliage en deux double l'épaisseur. Un programme range dans la variable e, répète fois le bloc « mettre e à e * 2 », puis dit e. a) Que dit le lutin ? b) Que dirait-il si la boucle répétait fois ? c) Tom annonce : « mm ». Où est son erreur ?Voir la correction
a) À chaque tour, e est remplacé par son double. Je suis e tour après tour. , puis , , , et . Le lutin dit : la feuille pliée fois fait mm. b) Deux tours de plus : , puis . Le lutin dirait mm. c) Tom double une seule fois, puis il multiplie par . La boucle, elle, double fois de suite, et chaque tour repart du résultat du tour d'avant : . ⛔ Le piège : confondre « répéter 5 fois : doubler » avec « multiplier par , puis par ». Réponse : a) mm ; b) mm.pliage épaisseur (mm) départ 0,1 1 0,2 2 0,4 3 0,8 4 1,6 5 3,2
Problèmes : exercices 17 à 20niveau 3
Un programme plus long, des questions qui s'enchaînent. Je fais un tableau de suivi, puis je réponds par des phrases.
Rappel de cours
- Je repère d'abord les entrées (les blocs « demander ») et les sorties (les blocs « dire »).
- Seuls les blocs rangés DANS une boucle sont répétés ; seuls ceux rangés DANS un « si » dépendent de la condition.
- Pour un lutin qui se déplace, je note à chaque bloc où il est et vers où il regarde.
17Le pluviomètre
Une station météo relève la pluie tombée chaque jour d'une semaine (relevé imaginé pour l'exercice) : ; ; ; ; ; ; mm. On tape ces sept nombres dans l'ordre. a) Combien le programme a-t-il d'entrées ? Quelle est sa sortie ? b) Que dit le lutin ? Que compte-t-il ? c) Le jour à mm est-il compté ? Pourquoi ? d) Quelle est la pluie totale de la semaine ? Le programme la donne-t-il ?Voir la correction
a) Le bloc « demander » est DANS la boucle : il est exécuté fois. Il y a entrées, une pluie par jour. La sortie est le nombre que dit le lutin à la fin. b) jours part de . Chaque jour, je teste « réponse > 5 ». : non. : oui, jours vaut . : non. : oui, . : non. : non. : oui, . Le lutin dit : c'est le nombre de jours où il est tombé plus de mm. c) Non : est faux. Un jour à mm pile n'est pas compté. d) mm. Le programme ne la donne pas : il COMPTE des jours, il n'additionne pas des millimètres. ⛔ Le piège : croire que le lutin dit la pluie. jours augmente de , pas de la réponse tapée. Réponse : b) jours ; c) non ; d) mm, que le programme ne donne pas.pluie (mm) > 5 ? jours 0 non 0 12 oui 1 5 non 1 8 oui 2 0 non 2 3 non 2 21 oui 3 18Le code du cadenas
Pour ouvrir un cadenas, il faut lire ce programme. Le code s'écrit avec les deux nombres dits par le lutin, l'un après l'autre. a) Que dit le lutin ? b) Quel est le code du cadenas ? c) On remplace « mettre a à 3 » par « mettre a à 5 ». Quel est le nouveau code ? d) Un élève affirme qu'au bloc « mettre b à a * 2 », a vaut encore . A-t-il raison ?Voir la correction
a) Je suis les deux variables, bloc après bloc. Chaque bloc utilise les valeurs du MOMENT. a vaut , b vaut . « mettre a à a + b » : a vaut . « mettre b à a * 2 » : a vaut maintenant , donc b vaut . « mettre a à b − a » : a vaut . Le lutin dit , puis . b) Le code est . c) Avec a à : a vaut , b vaut , puis a vaut . Le lutin dit , puis : le code devient . d) Non : quand ce bloc s'exécute, a ne vaut plus . Le bloc d'avant l'a remplacé par . ⛔ Le piège : garder en tête les valeurs du départ. Une variable ne garde que sa DERNIÈRE valeur. Réponse : a) puis ; b) ; c) ; d) non.bloc a b a à 3 3 — b à 7 3 7 a à a + b 10 7 b à a * 2 10 20 a à b − a 10 20 19La tondeuse robot
Une tondeuse robot tond une pelouse en allers et retours. Elle part en regardant vers la droite, et un pas vaut cm. a) Suis le premier tour de boucle et dessine le trajet. b) Quelle longueur la tondeuse parcourt-elle en tout ? Donne-la en pas, puis en mètres. c) Où arrive-t-elle par rapport à son point de départ ? d) Combien de tours de boucle faudrait-il pour qu'elle monte de pas ?Voir la correction
a) Premier tour : la tondeuse avance de vers la droite, tourne à gauche (elle regarde vers le haut) et avance de . Elle tourne encore à gauche (elle regarde vers la gauche) et revient de . Puis elle tourne à droite (vers le haut), avance de , et tourne encore à droite : elle regarde de nouveau vers la droite. Un tour de boucle trace un aller, une petite montée, un retour, une petite montée. b) Un tour : pas. Deux tours : pas. Un pas vaut cm : cm, soit m. c) Chaque retour annule l'aller : elle revient à la verticale de son départ. Chaque tour la fait monter de pas : elle arrive pas plus haut que son départ. d) Pour monter de pas, il faut tours : on remplace « répéter 2 fois » par « répéter 5 fois ». ⛔ Le piège : oublier les deux « tourner à droite ». Avec quatre quarts de tour à gauche, la tondeuse tournerait en rond sur un rectangle de pas sur . Réponse : b) pas, soit m ; c) pas plus haut ; d) tours.20Le nombre magique
Un magicien fait tourner ce programme devant le public. a) Que dit le lutin si on répond ? ? ? b) Que remarques-tu ? c) Explique pourquoi, sans essayer d'autre nombre. d) Quel bloc faut-il changer pour que le lutin dise toujours ?Voir la correction
a) Avec : x vaut , puis , puis , puis . Le lutin dit . Avec : , , , puis . Avec : , , , puis . b) Le lutin dit toujours , quel que soit le nombre choisi. c) Doubler puis prendre la moitié, c'est revenir au nombre de départ. Mais entre les deux, on a ajouté , et la moitié de est . Après « mettre x à x / 2 », x vaut donc le nombre de départ plus . Le dernier calcul enlève le nombre de départ : il reste . d) Pour qu'il reste , il faut ajouter le double de , soit : on change « ajouter 10 à x » en « ajouter 14 à x ». ⛔ Le piège : croire que le résultat dépend du nombre choisi, parce que les calculs du milieu changent. Seul le résultat final compte, et c'est toujours . Réponse : a) à chaque fois ; b) toujours ; d) « ajouter 14 à x ».réponse après / 2 le lutin dit 3 8 5 8 13 5 100 105 5