Fonctions à plusieurs paramètres — approfondissement
Fonctions à plusieurs paramètres — approfondissement
Objectifs cantonaux : O1.6. Semaine dédoublée (×2, groupes A/B séparés).
Cours complet sur la plateforme Runestone de Cédric Donner : Passer des paramètres — approfondissement.
Vous savez déjà définir et appeler des fonctions à un ou plusieurs paramètres (S8). Cette séance approfondit ce qui se passe en mémoire lors de ces appels, puis enchaîne sur de la pratique.
Ce qui se passe en mémoire lors d’un appel
▷ Rappel — Tableau de paramètres
Lors de chaque appel d’une fonction, Python crée un tableau de paramètres qui stocke le nom et la valeur de chaque paramètre. Ce tableau est détruit dès que l’exécution de la fonction se termine.
def f(x):
print("x dans f() vaut", x)
def g(x):
print("x dans g() vaut", x)
f(2 * x)
def h(x):
print("x dans h() vaut", x)
g(x)
h(4)Les trois fonctions ont chacune un paramètre nommé x, mais il s’agit de trois emplacements mémoire différents, qui n’entrent jamais en conflit :
h(4)crée un tableau pourh, avecx = 4.happelleg(x), c’est-à-direg(4)— un nouveau tableau est créé pourg, avec son proprex = 4.gappellef(2 * x), c’est-à-diref(8)— un troisième tableau est créé pourf, avecx = 8.
Résultat affiché :
x dans h() vaut 4
x dans g() vaut 4
x dans f() vaut 8
Pratique — retrouver ce que dessine un programme
Avant de lancer ce programme sur l’ordinateur, dessinez sur papier ce qu’il va produire, en suivant chaque appel de fonction et chaque tableau de paramètres qu’il crée.
from gturtle import *
def carre(cote, couleur):
setPenColor(couleur)
for _ in range(4):
forward(cote)
right(90)
def fenetre(cote, couleur):
for _ in range(4):
carre(cote, couleur)
right(90)
def mystere(cote, couleur1, couleur2):
fenetre(2 * cote, couleur1)
forward(cote)
left(90)
forward(cote)
fenetre(cote, couleur2)
back(cote)
right(90)
back(2 * cote)
right(90)
forward(cote)
fenetre(cote, couleur2)
mystere(100, "blue", "red")Vérifiez ensuite votre dessin en exécutant réellement le programme.
Pratique — un escalier double
Définissez une fonction double_escalier(nombre_marches) qui dessine un escalier montant, puis redescendant, du même nombre de marches. Au total, le double escalier doit mesurer 500 pixels de large et 200 pixels de haut. Indication : utilisez penUp() / penDown() pour positionner la tortue sans dessiner avant de commencer.