Outils pour utilisateurs

Outils du site


cours:prog_scratch_3

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
cours:prog_scratch_3 [2025/06/12 19:07]
mrcjl [Traduction du programme]
— (Version actuelle)
Ligne 1: Ligne 1:
-======Dessin de polygones réguliers [TP 3ème]====== 
-Cette activité est un bilan de plusieurs connaissances et compétences de cycle 4 et une ouverture à la programmation Python qui sera utilisée au lycée. 
  
-Après avoir découvert [[cours:progra10|"les bases du Python"]] nous allons aller un peu plus loin en reprenant une activité [[cours:progra6|"Dessin de polygones réguliers"]] vue lors de la découverte de la programmation en 5ème mais en réfléchissant à un algorithme plus évolué et programmant aussi en Python. 
- 
-=====Problème à résoudre===== 
-Nous voulons dessiner des polygones réguliers ayant un nombre de cotés x choisi par l'utilisateur de même que la longueur du coté. Les angles comme les cotés des polygones sont égaux et celui ci s'inscrit dans un cercle. Le cercle sera au centre de la zone de dessin, coordonnées (0,0). Pour la version Python, le cercle englobant sera dessiné en plus. 
-{{ :cours:polygones2.jpg?600 |}} 
- 
-=====1- Recherche de l'algorithme===== 
-====Éléments de solution==== 
-Nous savons que la somme des angles d'une figure fermée correspond à celle d'un cercle 360°. Pour la dessiner, il suffit donc de calculer l'angle correspondant (angle = 360 / coté) puis de répéter autant de fois que qu’il y a de coté la séquence : avancer de distance, tourner de angle. \\ 
-Il faut bien sur demander le nombre de coté voulu et leur longueur avant de vérifier si les réponses données sont cohérentes. 
- 
-**Le 1er problème** est de centrer la figure dans l’écran en utilisant des formules mathématiques ([[https://fr.wikipedia.org/wiki/Cercle|Cercle sur Wikipédia]]). \\  
-On remarque, sur les dessins ci dessus, que les cotés des figures correspondent aux cordes d'un cercle et qu'au moins un coté est horizontal. On détermine donc le point de départ du tracé (dans un repère, l’écran, l'abscisse est fonction de la corde et l'ordonnée du cosinus de l'angle par rapport à l'axe des ordonnées). 
- 
-**Le 2ème problème** consiste à déterminer la taille maximum du coté d'une figure. En effet, la taille de l'écran est fixe donc la longueur des cotés/codes des figures va devoir diminuer si le nombre de coté augmente. On trouve facilement le rayon du plus grand cercle tenant entier dans l'écran et de l'angle de chaque corde à dessiner est connu, il ne reste plus qu'a calculer la corde maximum autorisée. \\ 
-Une fois que la longueur du coté/corde choisi par l'utilisateur est validé, on peu calculer le rayon réel de la figure et commencer le tracé. 
- 
-**Pour information** :  
-  * la demi hauteur de l'écran est 160 pixels pour Scratch et Codabloc, elle est de 240 pixels pour Python. 
-  * Scratch et Codabloc ne possèdent pas de fonction pour dessiner des cercles, d'où l'absence de dessin du cercle inclus.  
- 
-====Écriture de l'algorithme==== 
-Écrivez VOTRE algorithme en utilisant correctement les indentations. N'importe qui l'utilisant peut arriver à tracer des polygones.  
- 
-Vous pouvez, lorsque vous avez terminé, le comparer à la solution type ci jointe. \\ 
-<wrap em>ATTENTION, il existe différentes façons d'exprimer une solution.</wrap> \\ 
-La solution type, qui fonctionne, doit être parfaitement comprise avant d'être comparée à la votre. Les différences doive être analysées pour voir si le même résultat final sera atteint ou s'il s'agit d'une erreur de conception. 
- 
-Les commentaires (lignes débutants par # vous aident à comprendre l'algorithme mais ne seront pas à traduire. 
-++++Solution type| 
-<code> 
-# Initialisation 
-Définir le rayon maximal (rmax) 
-Demander et noter le nombre de coté (3 < cote <= infini) 
-Si cote incorrect 
- Signaler l'erreur 
-sinon 
- Calculer l'angle (angle = 360 / cote) 
- Calculer la corde maxi (corde_max = 2 * rmax * sin(angle / 2) 
- Demander et noter la corde (10 < corde < corde_max) 
- Si corde incorrect  
- Signaler l'erreur 
- sinon 
- Calculer le rayon de la corde choisie (rayon = corde / 2 / sin(angle / 2)) 
- Calculer le point x (x = - corde / 2) 
- Calculer le point y (y = rayon * cos(angle /2) 
-# Tracé du polygone  
- Se placer au point (x, y) 
-                Poser le stylo sur la fenêtre 
- Répéter tant que cote > 0 
- Avancer de corde 
- Tourner vers la droite de angle 
- Diminuer cote de 1 (cote = cote – 1) 
-# Tracé du cercle, uniquement en Python 
- Relever le stylo 
-                Se positionner pour tracer le cercle englobant 
- Changer de couleur de stylo 
- Poser le stylo  
-                Tracer le cercle 
-</code> 
-++++ 
- 
-=====2- Traduction en Scratch ou Codabloc===== 
-====Prérequis==== 
-{{ :cours:scratch_fct_maths.jpg?100|}} 
-L'algorithme regroupe les blocs " Demander ... " et " Mettre variable à réponse " sur une seule ligne (méthode Python). 
- 
-Parmi les opérateurs Scratch et Codabloc, le dernier de la liste donne accès aux fonctions mathématiques. En bloc, l'unité des angles est le degré d'angle. 
- 
-Pour réaliser des dessins, le module Stylo est inclus dans Codabloc. (Pour l'inclure dans Scratch, il suffit de cliquer sur l'icône " Ajouter des extensions " en bas de la barre des catégories de blocs, puis de rechercher et ajouter le module Stylo.) 
-Par défaut, le stylo est en position relevée. Le poser pour dessiner. 
- 
-Scratch possède un rayon maximum de 160 pixels pour calcul de la corde maximum. 
- 
-====Utilisation du module stylo==== 
-Le stylo doit être relevé pour se déplacer sans écrire, posé sinon. Le couleur et la taille du trait peut être modifiée. 
- 
-Aller vers la droite correspond à s'orienter à 90° et avancer (0° pour aller vers le haut). 
- 
-Le stylo n'est pas capable de tracer des figures géométrique, cercle compris, à l'aide d'un seul bloc. C'est pour cela que la dernière partie de l'algorithme n'est pas traité en Scratch.  
- 
-====Traduction du programme==== 
-Traduisez votre algorithme et testez le. Si le programme fonctionne vous avez réussi. Sinon, vous pouvez essayer de trouver votre erreur en regardant la solution type ci dessous. 
- 
-++++Solution type| 
-{{ :cours:scratch_polygonnes.jpg?800 |}} 
-++++ 
- 
-=====3- Traduction en Python===== 
cours/prog_scratch_3.1749748038.txt.gz · Dernière modification: 2025/06/12 19:07 de mrcjl