Algorithmique et Scratch 4ème : 11 exercices corrigés

Ces exercices corrigés de Scratch et d'algorithmique en 4ème demandent de prévoir un résultat, suivre les variables et expliquer une erreur. Le cours sur les conditions, les variables et le débogage sert de guide.

Aucune installation n'est nécessaire pour raisonner sur les scripts décrits. Les programmes de calcul font le lien avec les équations du premier degré et permettent de vérifier une conjecture par le calcul littéral.

Suivre la valeur d’une variable

Une table de trace note l'état des variables après chaque instruction et rend visibles les remplacements successifs.

Exercice 1 : Affectations successives

Facile

Un script met x à 55, ajoute 33 à x, puis met x à 2×x12\times x-1.

  1. Donner la valeur après chaque instruction.
  2. Donner la valeur finale.
  3. Expliquer la différence entre « ajouter à x » et « mettre x à ».
Indication

Chaque instruction utilise la valeur actuelle de la variable, puis la remplace si elle contient une affectation.

Voir le corrigé
  1. Les valeurs successives sont 55, 88, puis 2×81=152\times8-1=15.
  2. La valeur finale est 1515.
  3. « Ajouter à x » modifie la valeur par un incrément ; « mettre x à » remplace entièrement l'ancienne valeur par le résultat calculé.

Exercice 2 : Deux variables qui échangent mal

Moyen

Le script met a à 44, b à 99, puis a à b et enfin b à a.

  1. Construire la trace des deux variables.
  2. Donner les valeurs finales.
  3. Expliquer pourquoi elles ne sont pas échangées.
  4. Proposer une correction avec une variable temp.
Indication

Après la troisième instruction, l'ancienne valeur de a est déjà perdue.

Voir le corrigé
  1. On a d'abord (a,b)=(4,9)(a,b)=(4,9), puis (9,9)(9,9), enfin (9,9)(9,9).
  2. Les deux valeurs finales sont 99.
  3. L'affectation a = b écrase 44 avant qu'elle soit copiée.
  4. Utiliser temp = a, puis a = b, puis b = temp donne (9,4)(9,4).

Exercice 3 : Trace d’une accumulation

Moyen

On met somme à 00. Pour ii allant de 11 à 44, on ajoute 2i+12i+1 à somme.

  1. Compléter une table avec ii, terme ajouté et somme.
  2. Donner la somme finale.
  3. Écrire le calcul numérique condensé.
  4. Prévoir la somme si la boucle allait jusqu'à 55.
Indication

Les termes ajoutés sont 3,5,7,93,5,7,9.

Voir le corrigé
  1. Les lignes sont (1,3,3)(1,3,3), (2,5,8)(2,5,8), (3,7,15)(3,7,15), (4,9,24)(4,9,24).
  2. La somme finale vaut 2424.
  3. Le calcul est 3+5+7+9=243+5+7+9=24.
  4. Pour i=5i=5, on ajoute 1111, donc la somme devient 3535.

Comprendre conditions et branchements

Une condition sélectionne une branche ; il faut tester la frontière et les cas de part et d'autre.

Exercice 4 : Positif, négatif ou nul

Facile

Un programme demande un nombre nn. Si n>0n\gt 0, il affiche « positif » ; sinon, si n<0n\lt 0, il affiche « négatif » ; sinon il affiche « nul ».

  1. Prévoir l'affichage pour 77, 3-3 et 00.
  2. Expliquer pourquoi deux tests sont nécessaires.
  3. Donner un jeu de tests minimal.
Indication

Le second « sinon » couvre le seul cas qui n'est ni strictement positif ni strictement négatif.

Voir le corrigé
  1. Les affichages sont positif, négatif et nul.
  2. Le premier test sépare le positif du reste ; le second distingue le négatif du zéro.
  3. Un nombre positif, un nombre négatif et zéro forment un jeu minimal couvrant les trois branches.

Exercice 5 : Réduction selon un montant

Moyen

Un script applique 10%10\% de réduction si le montant mm est supérieur ou égal à 8080 €, sinon aucune réduction.

  1. Donner le prix final pour m=75m=75, m=80m=80 et m=120m=120.
  2. Expliquer l'importance du signe « supérieur ou égal ».
  3. Écrire une expression par morceaux en langage courant.
  4. Proposer un test de frontière.
Indication

Le montant 8080 appartient à la branche réduite.

Voir le corrigé
  1. Les prix finaux sont 7575 €, 7272 € et 108108 €.
  2. Avec un simple signe supérieur, 8080 € ne bénéficierait pas de la remise.
  3. Si m80m\geq80, on paie 0,9m0{,}9m ; sinon on paie mm.
  4. Tester 79,9979{,}99, 8080 et 80,0180{,}01 contrôle la frontière.

Exercice 6 : Condition toujours vraie

Difficile

Pour classer un angle aa, un script teste : si a<90a\lt 90, afficher « aigu » ; sinon si a>90a\gt 90 ou a<180a\lt 180, afficher « obtus » ; sinon afficher « autre ».

  1. Tester a=90a=90, a=120a=120 et a=200a=200.
  2. Repérer l'erreur logique.
  3. Corriger la seconde condition.
  4. Ajouter un contrôle pour une mesure invalide.
Indication

Avec « ou », la proposition a>90a\gt 90 ou a<180a\lt 180 couvre presque tous les nombres.

Voir le corrigé
  1. 9090, 120120 et même 200200 passent dans la branche obtus selon ce script.
  2. La condition utilise « ou » au lieu de vérifier simultanément 90<a<18090\lt a\lt 180.
  3. Il faut tester a>90a\gt 90 et a<180a\lt 180.
  4. Avant le classement, on peut refuser a0a\leq0 ou a180a\geq180 pour un angle intérieur de triangle.

Raisonner sur les boucles

Une boucle répète un bloc ; son nombre d'itérations et la mise à jour des variables déterminent le résultat.

Exercice 7 : Répéter un déplacement

Facile

Un lutin part en (0;0)(0;0). Il répète 66 fois : avancer de 1010 pas, tourner de 6060^\circ.

  1. Calculer la distance totale parcourue.
  2. Identifier la figure fermée obtenue.
  3. Donner l'angle total de rotation.
  4. Expliquer pourquoi le lutin revient à son orientation initiale.
Indication

Six côtés égaux et six rotations extérieures de 6060^\circ forment un hexagone régulier.

Voir le corrigé
  1. La distance totale vaut 6×10=606\times10=60 pas.
  2. La figure est un hexagone régulier.
  3. L'angle total vaut 6×60=3606\times60^\circ=360^\circ.
  4. Une rotation complète ramène le lutin à son orientation initiale.

Exercice 8 : Boucle et compteur

Moyen

On met n à 11. On répète 44 fois : mettre n à 3n13n-1.

  1. Construire la suite des valeurs.
  2. Donner la valeur finale.
  3. Comparer avec le script qui répète trois fois seulement.
Indication

Chaque nouvelle valeur devient l'entrée de l'itération suivante.

Voir le corrigé
  1. Les valeurs sont 12514411\to2\to5\to14\to41.
  2. Après quatre répétitions, n=41n=41.
  3. Après trois répétitions, la valeur serait 1414. Une itération de plus ne signifie pas ajouter une constante ; elle applique encore 3n13n-1.

Exercice 9 : Boucle qui ne termine pas

Difficile

Un script met xx à 1010, puis répète jusqu'à x=0x=0 l'instruction « ajouter 33 à xx ».

  1. Calculer les premières valeurs.
  2. Expliquer pourquoi la boucle ne s'arrête pas.
  3. Proposer une correction pour atteindre 00.
  4. Donner une condition plus robuste si le pas ne divisait pas la valeur initiale.
  5. Tester la correction.
Indication

La variable s'éloigne de zéro. Même en retranchant 33, partir de 1010 ne donne jamais exactement 00.

Voir le corrigé
  1. Les valeurs commencent par 10,13,16,1910,13,16,19.
  2. Elles augmentent et ne peuvent atteindre 00.
  3. Avec « retirer 22 à xx », on obtient 10,8,6,4,2,010,8,6,4,2,0.
  4. Pour un pas quelconque, on peut répéter jusqu'à x0x\leq0, puis traiter un éventuel dépassement.
  5. La correction par pas de 22 s'arrête après cinq itérations.

Construire et déboguer un programme de calcul

Le calcul littéral permet de prouver ce qu'un script semble produire sur quelques essais.

Exercice 10 : Deux programmes équivalents

Moyen

Programme A : choisir xx, ajouter 44, multiplier par 33, retrancher 1212. Programme B : choisir xx, multiplier par 33.

  1. Tester les deux programmes pour x=5x=5.
  2. Traduire A par une expression.
  3. Réduire cette expression.
  4. Conclure pour tout xx.
Indication

Développez 3(x+4)123(x+4)-12.

Voir le corrigé
  1. Les deux programmes donnent 1515 pour x=5x=5.
  2. A donne 3(x+4)123(x+4)-12.
  3. 3x+1212=3x3x+12-12=3x.
  4. A et B sont donc équivalents pour toute valeur de xx, et pas seulement pour le test choisi.

Exercice 11 : Deviner un nombre

Difficile

Un script demande un nombre xx, calcule 5x75x-7, puis affiche 3838.

  1. Écrire l'équation associée.
  2. Retrouver xx.
  3. Vérifier dans le script.
  4. Modifier la dernière constante pour que x=10x=10 produise 3838.
Indication

La sortie impose 5x7=385x-7=38.

Voir le corrigé
  1. L'équation est 5x7=385x-7=38.
  2. 5x=455x=45, donc x=9x=9.
  3. 5×97=457=385\times9-7=45-7=38.
  4. Pour obtenir 3838 à partir de x=10x=10, il faut calculer 5x125x-12, car 5012=3850-12=38.