Algorithmique et programmation : 20 exercices corrigésmaths 4e — du geste seul au problème de contrôle
Vingt exercices façon Scratch, du bloc seul au petit problème, avec un rappel de cours avant chaque niveau. Suis chaque programme au brouillon, bloc par bloc, en notant la valeur des variables, puis ouvre la correction : elle montre la trace du programme et nomme le piège.
Un seul geste : exercices 1 à 8niveau 1
Un programme court. Tu le suis bloc par bloc, en notant la valeur de chaque variable.
Rappel de cours
- Une variable est une case qui porte un nom. « mettre a à 5 » ÉCRASE ce qu'elle contenait ; « ajouter 5 à a » part de l'ancienne valeur et lui ajoute .
- Une condition est vraie ou fausse. « > » veut dire STRICTEMENT plus grand ; « ≥ » veut dire plus grand OU égal.
- « si … alors … sinon » exécute UNE seule branche : celle du « alors » si la condition est vraie, celle du « sinon » si elle est fausse. Puis le programme continue en dessous.
1
Dans un jeu, la variable billes compte les billes d'un joueur. Que dit le lutin à la fin ?mettre billes à 20ajouter 6 à billesmettre billes à 9ajouter 6 à billesdire billesVoir la correction
Je suis la variable billes, bloc par bloc. « mettre billes à 20 » : billes vaut . « ajouter 6 » : . « mettre billes à 9 » ÉCRASE le : billes vaut . « ajouter 6 » : . Réponse : le lutin dit . ⛔ Le piège : tout additionner, . « mettre à » ne s'ajoute pas : il remplace.bloc billes mettre à 20 20 + 6 26 mettre à 9 9 + 6 15 2
Un élève veut ÉCHANGER les valeurs de a et de b. a) Que dit le lutin ? b) L'échange a-t-il réussi ? Sinon, corrige le programme.mettre a à 4mettre b à 10mettre a à bmettre b à adire adire bVoir la correction
Je note a et b après chaque bloc. Après les deux premiers blocs : a vaut et b vaut . « mettre a à b » : a prend la valeur de b, . Le est perdu. « mettre b à a » : b prend la valeur de a, qui vaut maintenant . a) Réponse : le lutin dit , puis . b) Non : b devait valoir . Je range d'abord a dans une troisième variable c : « mettre c à a », puis « mettre a à b », puis « mettre b à c ». Le lutin dit alors , puis . ⛔ Le piège : croire que « mettre a à b » échange les deux cases. Il COPIE b dans a, et l'ancien a est effacé.bloc a b a à 4 4 — b à 10 4 10 a à b 10 10 b à a 10 10 mettre a à 4mettre b à 10mettre c à amettre a à bmettre b à cdire adire b3
La variable v vaut . Pour chaque condition, dis si elle est vraie ou fausse. a) « v > 7 » b) « v ≥ 7 » c) « v < 9 » d) « v = 7 » e) « v + 8 > 15 »Voir la correction
v vaut : je remplace v par dans chaque condition. a) est faux : n'est pas STRICTEMENT plus grand que . b) est vrai : « ≥ » accepte l'égalité. c) est vrai. d) est vrai. e) , et est faux. Réponse : faux, vrai, vrai, vrai, faux. ⛔ Le piège : l'égalité. Avec « > », la valeur exacte du seuil donne toujours faux.condition avec v = 7 v > 7 faux v ≥ 7 vrai v < 9 vrai v = 7 vrai v + 8 > 15 faux 4
À la pression normale, l'eau gèle à °C. Que dit le lutin si on répond ? ? ?demander 'Température ?'si réponse ≤ 0 alorsdire 'glace'sinondire 'eau liquide'Voir la correction
Le programme teste « réponse ≤ 0 » : la condition est vraie si la réponse est plus petite que OU égale à . Avec : est vrai, le lutin dit « glace ». Avec : est vrai, le lutin dit « glace ». Avec : est faux, seule la branche « sinon » s'exécute : le lutin dit « eau liquide ». Réponse : « glace », « glace », « eau liquide ». ⛔ Le piège : le . « ≤ » inclut l'égalité : à °C pile, le programme dit « glace ». ⭐ À °C, ce programme dirait encore « eau liquide », alors que l'eau bout à °C : un programme ne sait que ce qu'on lui a écrit.réponse réponse ≤ 0 le lutin dit −4 vrai glace 0 vrai glace 15 faux eau liquide 5
Une piscine affiche ses tarifs avec ce programme (tarifs choisis pour l'exercice). Quel prix dit-il pour un enfant de ans ? De ans ? De ans ?mettre prix à 4demander 'Âge ?'si réponse < 6 alorsmettre prix à 2dire prixVoir la correction
Le prix est d'abord mis à . Le bloc du « si » peut le changer, mais seulement si la condition est vraie. ans : est vrai, le prix passe à . Le lutin dit . ans : est faux. Le bloc du « si » est sauté, le prix reste . Le lutin dit . ans : est faux, le prix reste . Réponse : €, €, €. ⛔ Le piège : croire qu'un « si » sans « sinon » arrête tout quand la condition est fausse. Le programme saute seulement le bloc du « si » et continue : « dire prix » s'exécute toujours.âge réponse < 6 prix (€) 3 vrai 2 6 faux 4 11 faux 4 6
Un manège accepte les personnes qui mesurent AU MOINS cm. Par quelle condition faut-il remplacer les pointillés : « t > 120 », « t ≥ 120 », « t < 120 » ou « t = 120 » ?demander 'Taille en cm ?'mettre t à réponsesi ... alorsdire 'tu peux monter'sinondire 'trop petit'Voir la correction
« Au moins » veut dire ou plus : est accepté. Je teste aux bornes, avec , et . « t > 120 » refuse : ce n'est pas elle. « t < 120 » et « t = 120 » refusent : ce n'est pas elles. « t ≥ 120 » refuse , accepte et . Réponse : « si t ≥ 120 alors ». ⛔ Le piège : écrire « t > 120 ». Un enfant qui mesure cm pile resterait au bord du manège.t t ≥ 120 le lutin dit 119 faux trop petit 120 vrai tu peux monter 121 vrai tu peux monter demander 'Taille en cm ?'mettre t à réponsesi t ≥ 120 alorsdire 'tu peux monter'sinondire 'trop petit'7
L'OMS conseille de se protéger du soleil dès que l'indice UV atteint . Ce programme n'alerte qu'à partir de . a) Modifie UN bloc pour suivre le conseil de l'OMS. b) Que dit le programme corrigé pour un indice de , de et de ?demander 'Indice UV ?'si réponse ≥ 6 alorsdire 'protège-toi'sinondire 'risque faible'Voir la correction
a) Seul le seuil change : je remplace « réponse ≥ 6 » par « réponse ≥ 3 ». Le reste du programme ne bouge pas. b) est faux : « risque faible ». est vrai : « protège-toi ». est vrai : « protège-toi ». Réponse : « risque faible », « protège-toi », « protège-toi ». ⭐ Avant la correction, l'indice donnait « risque faible » : c'est justement le cas que l'OMS veut couvrir. ⛔ Le piège : écrire « réponse > 3 ». À l'indice , où l'OMS conseille déjà de se protéger, l'alerte ne se déclencherait pas.demander 'Indice UV ?'si réponse ≥ 3 alorsdire 'protège-toi'sinondire 'risque faible'indice avant après 2 risque faible risque faible 3 risque faible protège-toi 5 risque faible protège-toi 8
Une gourde contient cL d'eau. À chaque pause, on en boit cL. Que dit le lutin après les pauses ?mettre gourde à 50répéter 4 foisajouter -7 à gourdedire gourdeVoir la correction
« ajouter -7 » enlève à chaque tour. La gourde part de . Tour 1 : . Tour 2 : . Tour 3 : . Tour 4 : . Contrôle : on a bu cL, et . Réponse : le lutin dit : il reste cL. ⛔ Le piège : lire « ajouter » et faire des additions, cL, plus que la gourde n'en contenait ! Ajouter un nombre négatif, c'est retirer.tour gourde départ 50 1 43 2 36 3 29 4 22
Type devoir : exercices 9 à 16niveau 2
Plusieurs questions qui s'enchaînent. Tu testes le programme, tu le corriges ou tu le complètes.
Rappel de cours
- Pour suivre un programme, je fais un tableau : une colonne par variable, une ligne par bloc ou par tour de boucle.
- « répéter jusqu'à » teste sa condition AVANT chaque tour, et s'arrête dès qu'elle est vraie.
- « au moins 12 » s'écrit « ≥ 12 », « au plus 12 » s'écrit « ≤ 12 », « plus de 12 » s'écrit « > 12 ».
- Pour vérifier un programme, je le teste AUX BORNES : juste en dessous du seuil, sur le seuil, juste au-dessus.
9
Aux États-Unis, les températures se donnent en degrés Fahrenheit (°F). Ce programme convertit des degrés Celsius (°C). a) Que dit le lutin avec ? b) Avec , la température où l'eau bout ? c) Avec ? Que remarques-tu ? d) Écris le calcul du programme avec la lettre .demander 'Degrés Celsius ?'mettre c à réponsemettre f à c * 9 / 5 + 32dire fVoir la correction
a) Le programme respecte les priorités : d'abord la multiplication et la division, de gauche à droite, puis l'addition. Avec : , puis , puis . Réponse : °F. b) Avec : , , . Réponse : l'eau bout à °F. c) Avec : , , . Réponse : °C, c'est aussi °F : les deux échelles se rejoignent là. d) Multiplier par puis diviser par , c'est multiplier par . Réponse : le programme calcule , soit . ⛔ Le piège : ajouter en premier, . L'ordinateur respecte les priorités, comme sur une copie.c × 9 ÷ 5 + 32 20 180 36 68 100 900 180 212 −40 −360 −72 −40 10
En Ligue 1, une victoire rapporte points, un match nul point, une défaite point. a) Complète le bloc « mettre pts à … ». b) Une équipe finit la saison avec victoires, nuls et défaites. Que dit le lutin ? c) Un élève a écrit « mettre pts à 3 * (v + n) ». Que dirait son programme ? Pourquoi est-ce faux ?demander 'Victoires ?'mettre v à réponsedemander 'Nuls ?'mettre n à réponsemettre pts à ...dire ptsVoir la correction
a) Chaque victoire vaut points : v victoires valent . Chaque nul vaut point : n nuls valent n points. Les défaites ne rapportent rien. Je complète : « mettre pts à 3 * v + n ». b) . Réponse : le lutin dit . c) Son programme dirait . Il donne points à chaque nul, au lieu de . ⛔ Le piège : les parenthèses. « 3 * (v + n) » multiplie AUSSI les nuls par ; sans parenthèses, seul v est multiplié.demander 'Victoires ?'mettre v à réponsedemander 'Nuls ?'mettre n à réponsemettre pts à 3 * v + ndire pts11
Dans un jeu de plateau, chaque lancer de dé rapporte des pièces : pour un six, sinon. a) On lance , , , , . Que dit le lutin ? b) Quel est le plus petit nombre de pièces possible en lancers ? Le plus grand ?mettre pièces à 0répéter 5 foisdemander 'Dé ?'si réponse = 6 alorsajouter 3 à piècessinonajouter 1 à piècesdire piècesVoir la correction
a) Je fais un tableau, une ligne par tour de boucle. À chaque tour, UNE seule des deux branches s'exécute. Tour 1 : , la condition est vraie, j'ajoute : pièces vaut . Tour 2 : , la condition est fausse, j'ajoute : . Tour 3 : : . Tour 4 : : . Tour 5 : : . Réponse : le lutin dit . b) Sans aucun six : . Avec cinq six : . Réponse : au moins pièces, au plus . ⛔ Le piège : exécuter les deux branches quand on fait six, pièces. On trouverait au lieu de .tour dé pièces 1 6 3 2 2 4 3 6 7 4 5 8 5 1 9 12
Une compagnie aérienne accepte en cabine les valises de kg AU PLUS (valeur choisie pour l'exercice). a) Que dit ce programme pour kg, kg et kg ? b) Quelle valise est mal traitée ? c) Corrige le bloc faux.demander 'Poids en kg ?'si réponse < 12 alorsdire 'en cabine'sinondire 'en soute'Voir la correction
a) est vrai : « en cabine ». est faux : « en soute ». est faux : « en soute ». Réponse : « en cabine », « en soute », « en soute ». b) « Au plus kg » veut dire kg ou moins : la valise de kg pile a droit à la cabine. Réponse : c'est la valise de kg qui est mal traitée. c) J'écris « si réponse ≤ 12 alors ». Je reteste aux bornes : et vont en cabine, en soute. ⛔ Le piège : tester seulement kg et kg. Le programme faux y répond juste : l'erreur ne se voit qu'au seuil exact.kg réponse < 12 réponse ≤ 12 11 vrai vrai 12 faux vrai 13 faux faux demander 'Poids en kg ?'si réponse ≤ 12 alorsdire 'en cabine'sinondire 'en soute'13
Le lutin part vers la droite et laisse une trace quand il avance. a) Quelle figure trace ce programme ? Donne ses dimensions. b) Quelle est la longueur totale du tracé ? c) Modifie le programme pour qu'il trace un carré de côté .stylo en position d'écriturerépéter 2 foisavancer de 80tourner à gauche de 90avancer de 30tourner à gauche de 90Voir la correction
a) Je suis le lutin : pas vers la droite, un quart de tour à gauche, pas vers le haut, un quart de tour à gauche. Puis la même chose une deuxième fois, et il revient à son point de départ. Réponse : un rectangle de pas sur pas. b) . Réponse : le tracé mesure pas. c) Un carré a côtés égaux : je répète fois « avancer de 50 » puis « tourner à gauche de 90 ». Le tracé mesure alors pas. ⛔ Le piège : garder « répéter 2 fois » avec un seul « avancer » dans la boucle. Le lutin ne tracerait que deux côtés du carré.80 sur 30, départ en vert stylo en position d'écriturerépéter 4 foisavancer de 50tourner à gauche de 9014
Léa a € et met € de côté chaque semaine. Elle veut s'acheter un casque de vélo à €. a) Que dit le lutin ? b) Combien Léa a-t-elle alors ? c) Son frère calcule et annonce semaines. A-t-il raison ?mettre argent à 35mettre sem à 0répéter jusqu'à argent ≥ 100ajouter 12 à argentajouter 1 à semdire semVoir la correction
a) Avant chaque tour, le programme teste « argent ≥ 100 ». Tant que c'est faux, il ajoute € et une semaine. L'argent passe à , , , , , puis . Après semaines, est faux : la boucle continue. Après semaines, est vrai : elle s'arrête. Réponse : le lutin dit . b) . Réponse : Léa a €. c) Non : en semaines, elle n'a que €. Il lui manque € : il faut une sixième semaine. ⛔ Le piège : arrondir à . Ici, il faut monter à l'entier SUIVANT : semaines ne suffisent pas.sem argent 1 47 2 59 3 71 4 83 5 95 6 107 15
Le pH dit si une solution est acide (moins de ), neutre () ou basique (plus de ). a) Que dit le lutin pour le jus de citron (pH environ ), l'eau pure () et l'eau de mer (pH moyen ) ? b) Combien de blocs « dire » s'exécutent à chaque fois ?demander 'pH ?'si réponse < 7 alorsdire 'acide'sinonsi réponse = 7 alorsdire 'neutre'sinondire 'basique'Voir la correction
Le deuxième « si » est RANGÉ dans le « sinon » du premier : il n'est testé que si le pH n'est pas plus petit que . a) Jus de citron, : est vrai. Le lutin dit « acide », et tout le « sinon » est sauté. Eau pure, : est faux, je passe au « sinon ». est vrai : « neutre ». Eau de mer, : est faux, puis est faux : « basique ». Réponse : « acide », « neutre », « basique ». b) Réponse : à chaque fois, UN SEUL bloc « dire » s'exécute. ⛔ Le piège : croire que pour le citron, le programme teste aussi « = 7 ». Le second test est dans le « sinon » : il ne tourne que si le premier est faux. ⭐ Le pH moyen des océans était d'environ avant l'ère industrielle. En absorbant du CO₂, l'océan devient moins basique : c'est l'acidification des océans.pH < 7 = 7 le lutin dit 2 vrai — acide 7 faux vrai neutre 8,1 faux faux basique 16
Un thermostat allume le chauffage quand la pièce est sous °C, la température conseillée dans les pièces à vivre. a) Que dit le programme pour , et °C ? b) Réécris-le avec une variable consigne, pour que le seuil se change en UN seul bloc. c) La nuit, on conseille °C dans les chambres. Quel bloc changes-tu ? Que dit alors le programme pour °C ?demander 'Température ?'si réponse < 19 alorsdire 'on chauffe'sinondire 'on arrête'Voir la correction
a) est vrai : « on chauffe ». est faux : « on arrête ». est faux : « on arrête ». Réponse : « on chauffe », « on arrête », « on arrête ». b) Je range le seuil dans une variable, en haut du programme : « mettre consigne à 19 », puis je teste « réponse < consigne ». Le programme dit exactement la même chose qu'avant. c) Je ne change qu'un bloc : « mettre consigne à 16 ». Avec : est faux. Réponse : le programme dit « on arrête ». ⭐ Une variable pour le seuil, c'est la molette d'un vrai thermostat : on la tourne, on ne réécrit pas le programme. ⛔ Le piège : un seuil écrit à plusieurs endroits. On en change un, on oublie l'autre. Avec une variable, il n'est écrit qu'UNE fois.mettre consigne à 16demander 'Température ?'si réponse < consigne alorsdire 'on chauffe'sinondire 'on arrête'
Problèmes : exercices 17 à 20niveau 3
Un programme plus long, plusieurs questions qui s'enchaînent. Fais tourner le programme au brouillon avant de répondre.
Rappel de cours
- Un problème se découpe : ce que le programme reçoit (demander), ce qu'il retient (les variables), ce qu'il décide (si), ce qu'il répète (répéter).
- Une variable qui compte se met à AVANT la boucle. Dans une boucle, l'ORDRE des blocs change le résultat.
- Après chaque modification, je refais tourner le programme sur un exemple dont je connais la réponse.
17Le comptage des hirondelles
Chaque printemps, des bénévoles comptent les couples d'hirondelles d'un village (relevé fictif) : , puis , , et . Ce programme compte les années de baisse. a) Que dit le lutin ? b) Un élève déplace « mettre avant à réponse » juste après le « demander » de la boucle. Que dit alors le lutin ? Pourquoi ? c) Complète le programme pour qu'il dise aussi la perte totale entre la première et la dernière année.demander 'Année 1 ?'mettre avant à réponsemettre baisses à 0répéter 4 foisdemander 'Année suivante ?'si réponse < avant alorsajouter 1 à baissesmettre avant à réponsedire baissesVoir la correction
a) La variable avant retient le nombre de l'année d'avant. À chaque tour, je compare le nouveau nombre à avant, PUIS je mets avant à jour. : baisse, baisses vaut . : faux. : baisse, . : baisse, . Réponse : le lutin dit . b) avant vaudrait déjà la réponse au moment du test : « réponse < avant » compare un nombre à lui-même, et c'est toujours faux. Réponse : le lutin dit . c) Je garde le premier nombre dans une variable : « mettre premier à réponse », au début. À la fin, réponse contient le dernier nombre : j'ajoute « dire premier - réponse ». Réponse : le lutin dit , puis : couples perdus en quatre ans. ⛔ Le piège : l'ORDRE des blocs dans la boucle. La mise à jour de avant doit venir APRÈS le test, sinon le programme a oublié l'année d'avant.année compté baisse ? baisses 2 480 oui 1 3 495 non 1 4 450 oui 2 5 410 oui 3 demander 'Année 1 ?'mettre avant à réponsemettre premier à réponsemettre baisses à 0répéter 4 foisdemander 'Année suivante ?'si réponse < avant alorsajouter 1 à baissesmettre avant à réponsedire baissesdire premier - réponse18La monnaie rendue
Une caisse automatique doit rendre € avec des billets de € et des pièces de €. Ce programme s'occupe des billets. a) Que dit le lutin ? b) Complète le programme pour qu'il rende ensuite des pièces de €, puis dise le nombre de pièces et ce qui reste. c) Que dit le programme complet si la caisse doit rendre € ?mettre reste à 13mettre billets à 0répéter jusqu'à reste < 5ajouter -5 à resteajouter 1 à billetsdire billetsdire resteVoir la correction
a) Tant que reste n'est pas plus petit que , la caisse donne un billet : reste perd , billets gagne . reste vaut , puis , puis . : la boucle s'arrête. Réponse : le lutin dit (billets), puis (euros qui restent). b) J'ajoute la même boucle pour les pièces : « mettre pièces à 0 », « répéter jusqu'à reste < 2 » avec « ajouter -2 à reste » et « ajouter 1 à pièces » dedans, puis « dire pièces » et « dire reste ». Avec €, reste passe de à . Réponse : le lutin dit , , puis (pièce) et (euro qui reste). c) Avec € : reste vaut , , , : billets. Puis , : pièce. Réponse : le lutin dit , , , puis : il ne reste rien, car . ⛔ Le piège : écrire « répéter jusqu'à reste ≤ 5 ». Avec €, la caisse s'arrêterait à € sans donner le dernier billet.tour reste billets 1 8 1 2 3 2 mettre reste à 13mettre billets à 0répéter jusqu'à reste < 5ajouter -5 à resteajouter 1 à billetsdire billetsdire restemettre pièces à 0répéter jusqu'à reste < 2ajouter -2 à resteajouter 1 à piècesdire piècesdire reste19Le pass ou le ticket
Dans une ville (tarifs choisis pour l'exercice), un ticket de bus coûte € et un pass mensuel €. Ce programme conseille un voyageur. a) Que dit-il pour , et trajets par mois ? b) Que représente la variable a ? c) Pour trajets, les deux choix coûtent-ils la même chose ? Modifie le programme pour qu'il dise « même prix » dans ce cas. d) À partir de combien de trajets le pass est-il moins cher ?demander 'Trajets par mois ?'mettre t à réponsemettre a à 2 * tsi a > 30 alorsdire 'prends le pass'sinondire 'garde les tickets'Voir la correction
a) trajets : a vaut , et est faux : « garde les tickets ». trajets : a vaut , et est faux : « garde les tickets ». trajets : a vaut , et est vrai : « prends le pass ». b) a est le prix du mois si l'on paie chaque trajet avec un ticket, à € le trajet. c) Oui : , le prix du pass. Dans le « sinon », je range un second test : « si a = 30 alors dire 'même prix' », avec « dire 'garde les tickets' » dans son « sinon ». d) Le pass est moins cher quand , c'est-à-dire quand t dépasse . Réponse : à partir de trajets, qui coûtent € en tickets. ⛔ Le piège : répondre . À trajets, les deux choix coûtent pareil : le pass n'est pas MOINS cher.trajets a le lutin dit 10 20 garde les tickets 15 30 même prix 20 40 prends le pass demander 'Trajets par mois ?'mettre t à réponsemettre a à 2 * tsi a > 30 alorsdire 'prends le pass'sinonsi a = 30 alorsdire 'même prix'sinondire 'garde les tickets'20L'escalier du lutin
Le lutin part vers la droite et laisse une trace. a) Dessine le tracé. Combien mesure-t-il ? b) Où arrive le lutin par rapport à son point de départ ? c) On veut un escalier de marches qui arrive au même endroit. Quelle longueur faut-il donner à chaque « avancer » ? Écris le programme. d) Combien mesure alors le tracé ? Que remarques-tu ?stylo en position d'écriturerépéter 3 foisavancer de 20tourner à gauche de 90avancer de 20tourner à droite de 90Voir la correction
a) Dans la boucle : pas vers la droite, un quart de tour à gauche, pas vers le haut, un quart de tour à droite pour repartir vers la droite. C'est une marche d'escalier, répétée fois. Le tracé mesure pas. b) Le lutin a fait pas vers la droite, et vers le haut. Réponse : il arrive pas plus à droite et pas plus haut. c) marches doivent monter de : chaque « avancer » vaut . Je change « répéter 3 fois » en « répéter 5 fois », et les deux « avancer de 20 » en « avancer de 12 ». d) . Réponse : le tracé mesure encore pas. ⭐ Avec marches de , on trouve toujours : l'escalier ressemble de plus en plus à une pente, mais il ne raccourcit jamais. ⛔ Le piège : tourner deux fois à gauche. Le lutin ferait demi-tour et tracerait un carré de côté au lieu de monter.3 marches de 20 : 120 pas 5 marches de 12 : 120 pas stylo en position d'écriturerépéter 5 foisavancer de 12tourner à gauche de 90avancer de 12tourner à droite de 90