TP 1: Familiarisation avec Edupython

publicité
TP 1: Familiarisation avec Edupython
Informatique pour tous, première année
Julien Reichert
Au cours de l’année, les TP réalisés dans le cadre de l’enseignement de l’informatique pour tous nécessiteront
l’écriture de programmes en Python. Il est bien entendu possible de réaliser cela seul sur un éditeur de texte, mais
de nombreuses solutions sont faites pour faciliter la vie lors des différentes étapes de l’élaboration de programmes,
ne serait-ce que la coloration syntaxique qui permet de détecter les coquilles les plus flagrantes et les erreurs de
parenthésage.
Dans ce lycée, les ordinateurs disposent de l’IDE (sigle anglais s’explicitant en français « environnement de développement intégré ») Edupython, qui est en outre bien documenté 1 . L’objectif de ce TP est de manipuler ce logiciel
et de découvrir Python par la même occasion.
Pour commencer, Edupython propose de gagner du temps lorsque l’on souhaite utiliser le module turtle : dans le
menu, en choisissant un nouveau fichier, il est possible de cliquer sur « tortue », ce qui crée un nouveau fichier
contenant deux lignes d’en-tête important les fonctions de la bibliothèque lycée (regroupant de nombreux modules
utiles, et préchargeant en gros toutes les fonctions mathématiques utilisables en lycée, mais pas seulement) et
le module turtle, renommé pour le script tortue, c’est-à-dire qu’au lieu de préfixer les fonctions du module par
« turtle. », il faut les préfixer par « tortue. ». En outre, la dernière ligne, tortue.mainloop(), affiche le résultat
du corps du fichier dans une fenêtre séparée où la tortue opère.
Les commandes de base sont tortue.forward(x) et tortue.back(x), où x est le nombre de pixels du déplacement,
tortue.left(a) et tortue.right(a), où a est l’angle de rotation, tortue.up() et tortue.down() pour lever ou
baisser le crayon. D’autres commandes permettent de tracer une figure géométrique directement, notamment les
cercles, qui seraient laborieux autrement.
Voici un ensemble de commandes pratiques : tortue.hideturtle() et tortue.showturtle() pour masquer ou
afficher la tortue, tortue.speed(vitesse) pour régler la vitesse (un entier de 1 à 10, il est inutile de tenter plus),
tortue.pencolor(couleur) qui prend en argument soit un nom anglais de couleur entre guillemets 2 soit trois
réels entre 0 et 1 indiquant respectivement les degrés de rouge, de vert et de bleu 3 , tortue.pensize(taille) pour
modifier l’épaisseur du dessin, tortue.bgcolor(couleur) pour changer la couleur de fond.
La syntaxe des conditionnelles et boucles en Python est la suivante : “if ...:” 4 représente le « si », “for ...in
...:” représente le « pour » et nécessite de donner une liste et non deux seuils 5 et “while ...:” représente le
« tant que ». Dans tous les cas, il faut aller à la ligne et faire ce qu’on appelle indenter : décaler toutes les lignes du
corps de chaque boucle ou conditionnelle d’au moins une espace, et d’autant d’espaces à chaque ligne (sauf quand
on imbrique d’autres boucles ou conditionnelles).
1. http://download.tuxfamily.org/edupython/EduPython1.0.pdf
2. En Python, on utilise les apostrophes, les guillemets ou les triplets de guillemets, avec quelques nuances
3. Le code RGB est un classique de la manipulation d’images en informatique, il est en général donné par trois entiers entre 0 et 255.
4. Attention : le double point est obligatoire ; en outre, le respect de la casse (minuscules et majuscules, en français courant) est
important : par exemple, écrire If au lieu de if déclencherait une erreur.
5. En pratique, la liste générique est range(n) qui contient les entiers de 0 à n − 1 inclus. On peut donner un autre argument, l’entier
de départ, à range, voire un troisième qui serait le pas.
1
Exercice 1 : Réécrire avec la syntaxe de Python les programmes permettant de tracer les figures des deux premiers
exercices du TP 0.
Exercice 2 : Recopier les exemples donnés dans la documentation d’Edupython, en constatant le cas échéant à quel
point une erreur dans l’indentation change tout.
Exercice 3 : À partir des exemples donnés, modifier les instructions pour obtenir des variantes des dessins précédents.
Le but est d’anticiper le résultat, voire d’obtenir un résultat choisi à l’avance. Les seules limites sont celles de
l’imagination (ou pas). 6
Pour créer une variable, il suffit de l’affecter, c’est-à-dire la mettre du côté gauche d’un simple signe égal 7 . La
première valeur de la variable, qu’elle conservera jusqu’à son éventuelle réaffectation, est alors ce qu’il y a du côté
droit du signe égal. À ce moment-là, toutes les occurrences du nom de la variables seront remplacées par la valeur
en question pour Python.
Pour définir une fonction, on utilise la syntaxe suivante : “def nom_de_la_fonction(arguments):” puis, comme
pour les boucles, on indente toutes les lignes correspondant à la définition. Par exemple, on peut écrire la fonction
dessinant n lignes de taille m pixels espacées de k pixels ainsi :
def imprime_lignes(n,m,k):
for i in range(n):
tortue.forward(m)
tortue.back(m)
tortue.right(90)
tortue.up()
tortue.forward(k)
tortue.down()
tortue.left(90)
Le retour à l’indentation normale délimite la définition de la fonction. Appeler imprime_lignes avec trois valeurs
entières donnera le dessin correspondant une fois tortue.mainloop() ajouté.
Pour tirer un nombre au hasard, on utilise les fonctions du module random, également dans la bibliothèque lycée.
La fonction random() retourne un réel entre 0 inclus et 1 exclu (sachant que de toute façon la probabilité de tomber
sur zéro pile est nulle), la fonction randint(a,b) retourne un entier entre a et b inclus, et la fonction uniform(a,b)
retourne un réel entre a et b, dans tous les cas suivant une loi (discrète ou continue suivant le cas) équirépartie.
D’autres fonctions dans le module permettent de manipuler les lois normales, etc.
Exercice 4 : Écrire une séquence d’instructions permettant d’obtenir une ligne de 400 pixels (si possible assez épaisse)
avec un dégradé de couleur, d’abord d’une couleur précise vers le noir (triplet (0,0,0)), puis vers le blanc (triplet
(1,1,1), puis d’une couleur à l’autre (penser aux barycentres).
Exercice 5 : Écrire une séquence d’instructions permettant d’obtenir un cercle dont les 8 secteurs angulaires de 45
degrés sont d’une couleur aléatoire. Pour le plaisir, on peut combiner cet exercice avec le précédent pour obtenir 8
dégradés.
Exercice 6 : Écrire une séquence d’instructions pour simuler une marche aléatoire de la tortue et voir ses déplacements. On pourra envisager pour condition d’arrêt la sortie d’un carré centré en l’origine et de côté entre 20 et 40
unités au choix.
6. Le web regorge d’exemples de programmes utilisant le module turtle et donnant des dessins magnifiques. . .
7. La variable créée par une boucle for n’a d’existence que dans la boucle dans certains langages, mais Python fonctionne différemment. Pour autant, mieux vaut rester attentif.
2
Téléchargement