Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Table des matières
Fonctions en tant que macros
Une macro est l'association d'un texte de remplacement à un identificateur, tel que l'identificateur est remplacé par le texte dans tout usage ultérieur.
Vous allez mieux comprendre ensuite
Problème
On souhaite réaliser avec le module turtle (Tortue) le dessin des 3 carrés rouges ci-contre – il ne faut pas dessiner la grille en bleu.
Je vous donne la structure de fichier de base, à compléter.
from turtle import *
# initialisation
speed(5)
shape("turtle")
pencolor("red")
pensize(2)
setheading(0)
# tracé - à compléter
# fin de la zone à compléter
exitonclick()
Complétez le programme et testez.
Utiliser des fonctions
Peut-être avez-vous déjà eu la bonne idée d'utiliser des fonctions. Dans ce cas, bravo. Comme il s'agit de bien vous faire comprendre, je poursuis en supposant que vous n'y avez pas pensé / n'avez pas su le faire.
Nous avons trois carrés de taille 100, identiques à tracer. Le tracer d'un carré peut se faire par exemple par :
forward(100) left(90) forward(100) left(90) forward(100) left(90) forward(100) left(90)
ou mieux :
for i in range(4):
forward(100)
left(90)
Dans les deux cas, on doit reproduire 3 fois ce morceau de code. On voit bien que ce n'est pas idéal.
Ce qu'il serait plus naturel de faire c'est :
se positionner, crayon levé, en (0,0) tracer un carré de taille 100 se positionner, crayon levé, en (20,20) tracer un carré de taille 100 se positionner, crayon levé, en (40,40) tracer un carré de taille 100
Aucune de ces lignes ne correspond à une instruction disponible dans le langage, même en tenant compte des fonctions supplémentaires apportées par la bibliothèque turtle.
Il faut les définir. Reprenez le programme en complétant la définition des fonctions.
Les fonctions doivent être définies avant qu'on les appelle. Elles sont donc définies en début de programme. Comme les fonctions utilisent des outils définis dans les bibliothèques, on appelle les bibliothèques encore avant.
from turtle import *
# définition fonctions
def tracer_carre(taille:int):
"""
taille: taille en pixels du côté du carré
"""
# à vous de compléter
def positionner_crayon_sans_tracer(x:int, y:int):
"""
x, y: coordonnées de la destination
amène le crayon à la position (x,y) sans tracer
"""
# à vous de compléter
# initialisations de l'espace de dessin
speed(5)
shape("turtle")
pencolor("red")
pensize(2)
setheading(0)
# programme principal
positionner_crayon_sans_tracer(0,0)
tracer_carre(100)
positionner_crayon_sans_tracer(20,20)
tracer_carre(100)
positionner_crayon_sans_tracer(40,40)
tracer_carre(100)
# fin
exitonclick()
voilà qui est plus simple à comprendre !
Les fonctions définies ici ne renvoies rien. Elles se contentent de faire quelque chose. De telles fonctions sont appelées procédures. En Python, si une fonction arrive à son terme sans qu'aucun return n'ait été rencontré, alors la fonction renvoie None ce que l'on peut comprendre comme “Rien”.
Exercices
Exercice 1
Inspirez-vous de ce qui précède pour tracer la figure ci-dessous.
Exercice 2
Cette figure est composées de carrés. Leur taille va diminuant en étant divisée à chaque fois par le nombre d'or : $\varphi = \frac{1 + \sqrt{5}}{2}$.
J'ai numéroté les carré pour que ce soit plus clair.
Exercice 3
Écrivez une fonction tracer_polygone_regulier(n, taille) dont on donne le nombre de côtés n (au moins 3) et la taille du côté.
