TP 5 - Procédures, des fonctions qui agissent ¶
# on importe toutes les fonctions de la bibliothèque
from turtle import *
Exercice 1 (cube)¶
Compléter le programme suivant pour dessiner un cube à l'aide d'un carré et de deux parallélogrammes.
# cube
# on dessine le carré
for i in range(4):
forward(50)
left(90)
# on se positionne pour la suite
left(90)
forward() ###
right(90)
# on dessine le premier parallélogramme
for i in range(2):
forward(50)
left(50)
forward(40)
left(130)
# on se positionne pour la suite
forward() ###
right() ###
# on dessine le deuxième parallélogramme
for i in range(2):
forward(50)
left(140)
forward(40)
left(40)
exitonclick()
TurtleScreen._RUNNING = True
Définir une fonction carre() et deux fonctions parallelog1() et parallelog2() permettant de simplifier l'écriture du programme.
# réponse
Définir une fonction à un paramètre parallelog(premier_angle) permettant de remplacer les deux fonctions parallelog1() et parallelog2().
# réponse
Les fonctions simplifient l'écriture et la lecture d'un programme.
Elles nous invitent aussi à découper un problème en plusieurs sous-problèmes, chacun étant résolu par une fonction.
Exercice 2 (Rubik's cube)¶
L'objectif est de représenter le cube de Rubik.
Définir les fonctions suivantes qui permettront, au final, de représenter le cube de Rubik :
- carre_rubik(c) qui dessine un carre de côté c, rempli avec une couleur choisie en dehors de la fonction
- parallelog_rubik(a,c1,c2) qui dessine un parallélogramme de premier angle a et de côtés c1 et c2, rempli avec une couleur choisie en dehors de la fonction
- ligne_carre(c,color) qui revient au point de départ après avoir dessiné une ligne de trois carrés de côtés c, colorée en color
- ligne_parallelog(a,c1,c2,color) qui revient au point de départ après avoir dessiné une ligne de trois parallélogrammes de premier angle a et ...
Chacune de ces fonctions sera testée à l'aide de l'appel fourni.
Remarque : les paramètres utilisés dans un appel de fonction sont dits effectifs alors que dans une définition de fonction, ils sont qualifiés de formels .
# définition de la fonction
# test de la fonction
fillcolor("red") # la fonction prédéfinie fillcolor(), provenant de la bibliothèque turtle, est appelée avec le paramètre (effectif) "red"
carre_rubik(50) # quant à notre propre fonction carre_rubik(), elle est appelée avec le paramètre (effectif) 50
exitonclick()
TurtleScreen._RUNNING = True
# définition de la fonction
# test de la fonction
fillcolor("blue")
parallelog_rubik(40,50,40)
exitonclick()
TurtleScreen._RUNNING = True
# définition de la fonction
# test de la fonction
ligne_carre(50,"red")
exitonclick()
TurtleScreen._RUNNING = True
# définition de la fonction
# test de la fonction
ligne_parallelog(40,50,40,"blue")
exitonclick()
TurtleScreen._RUNNING = True
Compléter le programme suivant pour dessiner le cube de Rubik.
# cube de Rubik
speed(9)
for i in range(): ###
ligne_carre(50,'red')
left(90)
forward(50)
right(90)
for i in range(3):
ligne_parallelog(40,50,40,'blue')
left() ###
forward() ###
right() ###
forward(3*50)
right(180-40)
for i in range(3):
ligne_parallelog(,,,'green') ###
left(50)
forward(50)
right(50)
exitonclick()
TurtleScreen._RUNNING = True
Mettre en place un ensemble de variables permettant de modifier facilement les éléments suivants :
- la vitesse du tracé
- les dimensions du cube
- la perspective du dessin
- les couleurs des faces
# variables
# cube de Rubik
exitonclick()
TurtleScreen._RUNNING = True