TP 5 - Procédures, des fonctions qui agissent
¶

A. Ridard
In [1]:
# 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.

No description has been provided for this image
In [2]:
# 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.

In [ ]:
# réponse

Définir une fonction à un paramètre parallelog(premier_angle) permettant de remplacer les deux fonctions parallelog1() et parallelog2().

In [ ]:
# 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.

No description has been provided for this image
Pour cela, nous allons d'abord résoudre plusieurs sous-problèmes.

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 .

In [3]:
# définition de la fonction
In [4]:
# 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
In [ ]:
# définition de la fonction

    
In [ ]:
# test de la fonction

fillcolor("blue")
parallelog_rubik(40,50,40)

exitonclick()
TurtleScreen._RUNNING = True
In [ ]:
# définition de la fonction
In [ ]:
# test de la fonction

ligne_carre(50,"red")

exitonclick()
TurtleScreen._RUNNING = True
In [ ]:
# définition de la fonction
In [ ]:
# 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.

In [ ]:
# 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
In [ ]:
# variables



# cube de Rubik



exitonclick()
TurtleScreen._RUNNING = True