Aller au contenu
Mathactiv

Le calcul mental, actif et sans stress

Variables Scratch : défi n°2, programmer un rectangle pas à pas

Ce deuxième défi sur les variables Scratch vous propose de programmer un rectangle dont la longueur et la largeur sont choisies par l'utilisateur. Vous trouverez l'énoncé, une démarche progressive puis la correction commentée bloc par bloc, avec le calcul du périmètre et de l'aire en prime.

Mains d'un collégien programmant un rectangle avec des blocs Scratch sur un ordinateur portable

L'énoncé du défi n°2

Au niveau 1, vous avez appris à créer une variable, à lui donner une valeur et à l'afficher sur la scène. Le niveau 2 franchit une étape : les variables ne servent plus seulement à ranger un nombre, elles pilotent un dessin et alimentent des calculs.

Énoncé : écrivez un programme Scratch qui demande à l'utilisateur la longueur puis la largeur d'un rectangle, mémorise ces deux valeurs dans des variables, trace le rectangle avec le stylo, puis annonce son périmètre et son aire.

Le défi est réussi lorsque le programme remplit toutes les conditions suivantes :

  • un clic sur le drapeau vert efface la scène et repart de zéro ;
  • le rectangle tracé correspond exactement aux dimensions saisies ;
  • aucun nombre n'est écrit en dur dans les blocs de déplacement : tout passe par les variables ;
  • le lutin annonce le périmètre et l'aire dans une phrase complète, par exemple « Le périmètre vaut 360 ».

Comptez une séance courte si les bases sont acquises, un peu plus si l'extension Stylo est une découverte.

Les variables Scratch : ce qu'il faut savoir avant de commencer

Une variable est une petite boîte nommée dans laquelle le programme range une valeur pour la réutiliser plus tard. Dans Scratch, elle se crée depuis la catégorie orange Variables, avec le bouton « Créer une variable ». Choisissez un nom explicite (longueur, largeur, périmètre, aire) plutôt que « a » ou « ma variable » : la relecture du script sera bien plus simple.

Si ces notions sont encore fragiles, un cours sur les variables et boucles permet de les consolider avant d'attaquer le défi.

« Mettre à » ou « ajouter à » ?

Deux blocs modifient une variable, et les confondre est une source d'erreurs très courante :

  • mettre longueur à (120) remplace l'ancienne valeur par la nouvelle ;
  • ajouter (10) à longueur augmente la valeur actuelle de 10, ou la diminue si le nombre est négatif.

Pour ce défi, seul « mettre à » est utile : chaque valeur provient d'une saisie ou d'un calcul, jamais d'un cumul.

Le bloc « réponse »

Le bloc « demander ... et attendre », rangé dans la catégorie Capteurs, affiche une zone de saisie. Ce que l'utilisateur tape est stocké dans « réponse », une variable spéciale écrasée à chaque nouvelle question. C'est précisément pour cela qu'il faut recopier la réponse dans une variable à vous juste après l'avoir obtenue.

Comment faire un rectangle sur Scratch, sans variable d'abord

Avant d'introduire les variables, tracez un rectangle aux dimensions fixes. Ajoutez l'extension Stylo grâce au bouton situé en bas à gauche de l'éditeur, puis assemblez ce premier script :

  1. quand le drapeau vert est cliqué ;
  2. effacer tout ;
  3. relever le stylo, puis aller à x : -150 y : 100 ;
  4. s'orienter à 90 (le lutin regarde vers la droite) ;
  5. stylo en position d'écriture ;
  6. avancer de 120 pas, puis tourner de 90 degrés vers la droite ;
  7. avancer de 60 pas, puis tourner de 90 degrés vers la droite ;
  8. avancer de 120 pas, puis tourner de 90 degrés vers la droite ;
  9. avancer de 60 pas, puis tourner de 90 degrés vers la droite ;
  10. relever le stylo.

Repérer la répétition

Les lignes 6 et 7 se retrouvent à l'identique aux lignes 8 et 9. Un rectangle, c'est donc deux fois le même motif : un côté, un virage, le côté voisin, un virage. Remplacez ces quatre lignes par une boucle répéter 2 fois contenant « avancer de 120, tourner de 90, avancer de 60, tourner de 90 ». Le script raccourcit et la structure de la figure saute aux yeux.

Choisir un bon point de départ

La scène mesure 480 pas de large sur 360 de haut, avec l'origine au centre. En partant du point (-150 ; 100) et en tournant vers la droite, le lutin dessine vers le bas, ce qui laisse de la place pour des rectangles assez grands. Un pas correspond à un pixel de la scène.

La démarche : faire entrer les variables dans le dessin

Le rectangle fixe fonctionne, mais il ne trace qu'une seule figure. L'objectif est maintenant de rendre le programme général. Avancez par petites étapes et testez après chacune d'elles.

  1. Créez deux variables, longueur et largeur.
  2. Initialisez-les à la main en haut du script : mettre longueur à 120, mettre largeur à 60. Lancez : le dessin doit être identique au précédent.
  3. Remplacez les nombres de la boucle par les blocs ronds orange longueur et largeur, glissés dans les cases « avancer de ». Modifiez les valeurs initiales (200 et 50, par exemple) et vérifiez que le rectangle suit.
  4. Remplacez l'initialisation par des questions : demander « Quelle est la longueur ? » et attendre, puis mettre longueur à réponse ; même chose pour la largeur.
  5. Ajoutez les calculs : créez les variables périmètre et aire, puis remplissez-les avec les blocs verts de la catégorie Opérateurs.
  6. Faites parler le lutin avec le bloc « regrouper », qui colle un texte et une valeur dans une même phrase.

Cette progression a un intérêt pédagogique fort. À l'étape 2, le programme fait exactement la même chose qu'avant, mais il est déjà prêt à changer : on comprend concrètement qu'une variable sépare la donnée de la méthode.

Correction pas à pas : le programme Scratch du rectangle

Le script complet

  1. quand le drapeau vert est cliqué
  2. effacer tout
  3. relever le stylo
  4. aller à x : -150 y : 100
  5. s'orienter à 90
  6. demander « Quelle est la longueur du rectangle ? » et attendre
  7. mettre longueur à (réponse)
  8. demander « Quelle est la largeur du rectangle ? » et attendre
  9. mettre largeur à (réponse)
  10. stylo en position d'écriture
  11. répéter 2 fois : avancer de (longueur), tourner de 90 degrés, avancer de (largeur), tourner de 90 degrés
  12. relever le stylo
  13. mettre périmètre à (2 * (longueur + largeur))
  14. mettre aire à (longueur * largeur)
  15. dire (regrouper « Le périmètre vaut » et périmètre) pendant 2 secondes
  16. dire (regrouper « L'aire vaut » et aire)

Le rôle de chaque variable

VariableCe qu'elle contientBloc qui la remplit
longueurla dimension horizontale saisiemettre longueur à (réponse)
largeurla dimension verticale saisiemettre largeur à (réponse)
périmètrela somme des quatre côtésmettre périmètre à (2 * (longueur + largeur))
airela surface intérieure, en pixels carrésmettre aire à (longueur * largeur)
réponsela dernière saisie, écrasée à chaque questiondemander ... et attendre

Pourquoi cette correction fonctionne

Trois points méritent l'attention. D'abord, chaque « demander » est immédiatement suivi de son « mettre ... à réponse » : la longueur est sauvegardée avant que la seconde question n'écrase la réponse. Ensuite, la boucle répète deux fois le couple longueur puis largeur, ce qui reproduit la définition du rectangle : côtés opposés de même longueur et quatre angles droits. Enfin, les calculs ne dépendent que des deux variables, pas de la position du lutin : ils pourraient aussi bien être placés avant le tracé.

À la ligne 13, soignez l'emboîtement : le bloc « + » se glisse à l'intérieur du bloc « * ». Dans le cas contraire, Scratch calcule 2 * longueur puis ajoute la largeur, et le résultat est faux. Pour un rectangle de 120 sur 60, le lutin doit annoncer 360 pour le périmètre et 7 200 pour l'aire. Vérifier ces valeurs de tête est un excellent réflexe de calcul mental.

Les erreurs fréquentes et comment les corriger

  • Rien ne se dessine : le stylo n'a pas été posé, ou l'extension Stylo n'a pas été ajoutée. Vérifiez la présence de « stylo en position d'écriture » avant la boucle.
  • Un trait parasite relie l'ancienne position du lutin au rectangle : le stylo était baissé pendant le « aller à ». Relevez-le avant de déplacer le lutin.
  • Les dessins s'empilent à chaque clic : il manque « effacer tout » en début de script.
  • Un carré apparaît à la place du rectangle : les deux questions ont été posées à la suite, puis les deux variables ont reçu « réponse ». Elles contiennent alors toutes deux la dernière saisie.
  • La figure ne se referme pas : un virage manque dans la boucle, ou l'angle n'est pas de 90 degrés. Dans un rectangle, le lutin tourne toujours d'un angle droit.
  • Le rectangle est déformé ou tronqué au bord de la scène : les dimensions sont trop grandes pour le point de départ. Avec le départ proposé, gardez une longueur inférieure à 390 et une largeur inférieure à 280, ou déplacez ce point.
  • Les valeurs grossissent d'un lancement à l'autre : « ajouter à » a été utilisé à la place de « mettre à ».
  • La phrase est collée (« Le périmètre vaut360 ») : ajoutez une espace à la fin du texte placé dans « regrouper ».

Variantes selon le niveau des élèves

En fin de primaire ou en 6e

Restez sur le rectangle fixe, puis introduisez une seule variable, côté, pour tracer un carré avec « répéter 4 fois ». Ajoutez « attendre (0.5) secondes » après chaque déplacement, avec un point décimal comme l'exige Scratch : voir le lutin dessiner lentement aide à relier chaque bloc à un côté de la figure.

En 5e

Le défi tel qu'il est posé convient bien : il réunit variables, boucle, saisie de l'utilisateur et formules de périmètre et d'aire déjà connues. Proposez aux plus rapides d'afficher l'unité dans la phrase grâce à un second bloc « regrouper » imbriqué dans le premier.

En 4e et en 3e

  • Tester une condition : si longueur = largeur, alors dire « C'est un carré ! ».
  • Contrôler la saisie : avec « répéter jusqu'à », reposer la question tant que la valeur n'est pas comprise entre 1 et 300.
  • Généraliser aux polygones réguliers : une variable nombre de côtés, un angle de 360 / nombre de côtés et une boucle « répéter (nombre de côtés) fois ».
  • Dessiner des rectangles emboîtés : placer le tracé dans une boucle et utiliser « ajouter 20 à longueur » et « ajouter 20 à largeur » pour obtenir des figures de plus en plus grandes. C'est le bon moment pour réintroduire « ajouter à ».

Quelle que soit la variante, gardez la même règle d'or : un nombre susceptible de changer mérite une variable, et une variable bien nommée vaut mieux qu'un long commentaire.

Questions fréquentes

Comment faire un rectangle sur Scratch ?

Ajoutez l'extension Stylo, posez le stylo, puis utilisez une boucle « répéter 2 fois » contenant « avancer de la longueur », « tourner de 90 degrés », « avancer de la largeur » et « tourner de 90 degrés ». Pensez à effacer la scène et à placer le lutin avant de commencer le tracé.

Quelle est la différence entre « mettre à » et « ajouter à » dans Scratch ?

« Mettre à » remplace la valeur de la variable par une nouvelle valeur. « Ajouter à » augmente la valeur actuelle du nombre indiqué. Pour enregistrer une saisie ou le résultat d'un calcul, c'est donc « mettre à » qu'il faut utiliser.

Pourquoi mon programme dessine-t-il un carré au lieu d'un rectangle ?

Le plus souvent, les deux questions ont été posées l'une après l'autre avant d'enregistrer les réponses. Or « réponse » ne garde que la dernière saisie. Placez « mettre longueur à réponse » juste après la première question, puis faites de même pour la largeur.

À partir de quel niveau proposer ce défi sur les variables ?

Le défi complet convient bien en 5e, une fois la création de variables et les boucles découvertes. En 6e, on peut se limiter au rectangle fixe puis au carré avec une seule variable. En 4e et en 3e, les conditions et les polygones réguliers prolongent naturellement l'exercice.