TP tortue
Merci à Guillaume Huard pour la conception de ce TP.
0 - Préambule
Dans cette séance, nous écrirons nos programmes en Python, il va vous
falloir les évaluer pour pouvoir tester vos solutions. La méthode la
plus pratique consiste à utiliser un IDE (Environnement de Développement
Intégré) :
- Écrire son programme
Un programme Python est constitué pour grande partie
de fonctions :
def f(x): ...
À l'intérieur d'un même fichier, si on souhaite rassembler plusieurs fonctions
formant une unité cohérente (par exemple servant à résoudre un même
problème), on peut séparer ces fonctions du reste du code par le
commentaire spécial #%% qui délimite un bloc. Ce dernier
n'a aucune incidence sur l'exécution du code, mais la plupart des IDE
savent les reconnaître et en tirer parti.
- Évaluer son programme
Une fois vos fonctions écrites, il faut les faire évaluer par
l'interpréteur interactif présent dans l'IDE. Selon ce dernier, cela
peut prendre tout ou partie des formes suivantes :
- Enregistrer et évaluer le fichier dans son intégralité
- Sélectionner une portion de code et l'évaluer
- Évaluer le bloc dans lequel se situe le curseur
Dans tous les cas, il faut être conscient que l'évaluation d'une
fonction ne fait que la rendre utilisable, aucun code n'est encore
réellement exécuté
- Exécuter son programme
Il est recommandé pour cette étape de faire directement appel aux
fonctions dans l'interpréteur interactif, avec des paramètres bien
choisis pour les tester.
Il reste toutefois possible de placer des appels aux fonctions dans le
code source (lorsqu'un test doit être réévalué plusieurs fois, ou qu'il
demande une mise en place particulière) mais il faut alors en plus
préciser (au moyen d'un print) qu'on souhaite afficher la
valeur renvoyée par la fonction.
1 - La tortue
Pour accéder à la tortue Python, écrivez en début de fichier
from turtle import *
et exécutez cette ligne une fois (ce qui sera normalement suffisant
pour toute votre session de travail).
Ce module fournit des primitives simples permettant de dessiner dans
une fenêtre au moyen d'une tortue (virtuelle) à la Logo. Ce module
dispose d'une documentation détaillée comme tous ceux
de la librairie standard de Python.
L'état de la tortue est défini par
- la position du stylo (levé ou baissé) ;
- ses coordonnées dans la fenêtre graphique : le centre O du
repère est au centre de la fenêtre, l'axe des x est orienté vers la droite, celui des y
vers le haut ;
- son orientation (ou cap) par rapport à l'axe Ox, exprimé par un angle en degrés dans le sens trigonométrique.
Les principales primitives de manipulations de la tortue sont les suivantes :
- up() et down() qui modifient l'état du
stylo (ces fonctions n'ont pas de paramètre) ;
- forward(L) qui déplace la tortue de la distance L dans la
direction de son cap (donner un L négatif pour reculer, ou
utiliser backward(L)) ;
- goto(x, y) qui place la tortue au point de
coordonnées (x, y) sans changer son cap ;
- left(a) et right(a) qui ajoutent ou
soustraient l'angle a (en degrés) au cap courant ;
- setheading(a) qui oriente la tortue dans la
direction a (toujours mesurée par rapport à Ox) ;
- delay(d) permet de choisir le temps écoulé (en
millisecondes) entre deux mises à jour du dessin, et donc indirectement
de choisir la vitesse du tracé
La tortue trace un trait lors de ses déplacements, c'est-à-dire lors des appels
aux méthodes
forward et goto, lorsque le stylo est baissé.
Le fichier Un_Segment.py contient un
programme utilisant ce module pour tracer un simple segment.
Un autre programme, contenu
dans SegmentsAlignes.py, trace 20
segments en diagonale de couleurs différentes avant de tout effacer et
de recommencer dans l'autre sens.
2 - Exercices
Créez un programme pour tracer ...
-
N rayons à partir de l'origine comme par exemple sur la figure ci-dessous (pour N=8) :
-
un ensemble de carrés disposés en rectangles : le dessin est paramétré par le nombre de lignes, le nombre de carrés par ligne et la longueur du côté
des carrés.
- un ensemble de carrés disposés en triangle (paramétré par le nombre de lignes et le côté des carrés).
- des segments "glissants" :
- des triangles dans des triangles...
- un cube :
... et pour ceux qui auraient tout terminé, quelques dessins complémentaires...