tri(a):={ triangle_plein(a,a); tourne_droite; triangle_plein(a,a); tourne_gauche; }On dessine un sapin formé de 2 triangles tri de dimensions 50 et 40 pas de tortue et décalés de 40 pas de tortue, avec comme position de départ et d'arrivée de la tortue le milieu de l'hypoténuse avex un cap dirigé selon la hauteur de tri(50).
Pour faire le dessin dans l'écran de géométrie :
//dessin du triangle qui represente la tortue tortue_g(a):={ [triangle_rectangle(a,a+0.1,2),triangle_rectangle(a,a+0.2*i,0.5)]; } //dessin du triangle rectangle isocele d'hypothenuse 2a tri_g(a,l):={ [triangle_rectangle(a,a+l,1),triangle_rectangle(a,a+i*l,1)]; } sapin_g(a,l1,l2):={ [triangle_rectangle(a,a+l1,1),triangle_rectangle(a,a+i*l1,1),triangle_rectangle(a+i*l2,a+i*l2+l2,1),triangle_rectangle(a+i*l2,a+2*i*l2,1)]; }puis
tortue_g(-3); tri_g(-3,1); legende(-3.5-0.5*(i),"tri(50)"); tortue_g(0); sapin_g(0,0.8,1); legende(-0.5-0.5*(i),"sapin(50,40)");
Revenons à la tortue, on écrit la procédure sapin :
sapin():={ tri(50); avance(40); tri(40); recule(40); }
2-ième séance
On demande d'écrire à partir de sapin une procédure paramétrée avec
2 paramètres a et b : a pour 50 et b pour
40.
On écrit en classe en expliquant :
sapin(a,b):={ tri(a); avance(b); tri(b); recule(b); }On a donc fait dessiner la dernière fois sapin(50,40).
a | b |
5 | |
10 | |
15 | |
20 | |
25 | |
30 | |
35 | |
40 | |
45 | |
50 | 40 |
55 | |
60 | |
70 | |
80 | |
90 | |
100 |
Les enfants remplissent tous le tableau au début en se servant
systématiquement de l'addition ils écrivent :
a | b |
15 | 5 |
20 | 10 |
25 | 15 |
30 | 20 |
35 | 25 |
40 | 30 |
45 | 35 |
50 | 40 |
Mais lorsqu'il testent sapin(20,10) ils n'obtiennent qu'un seul triangle
et s'apercoivent que'il y a une erreur....et ils sont alors obligés de
procéder par essais et erreurs ...mais cela est quelquefois difficile car il
n'y a guére de différence entre sapin(45,35) et sapin(45,36).
Il faut donc demander :
si a=100 que vaut b ?
si a=25 que vaut b ?
si a=5 que vaut b ?
si a=10 que vaut b ?
si a=20 que vaut b ?
Comment écrire cette famille avec un seul paramètre ?
On veut arriver à l'écriture de la procédure :
famille_sapin(k):={ sapin(5*k,4*k); }Ainsi le sapin(50,40) est le même que famille_sapin(10).