Previous Up Next

Chapitre 5  D’autres exemples d’activités

5.1  Le plan de la classe

Travail sur les coordonnées et sur la notion d’echelle.
Chaque élève est responsable du tracé de son bureau.

5.2  La croix de pharmacie

Faire le tracé d’une croix ayant la forme d’un plus.
Faire le tracé du contour externe d’une croix de pharmacie (les branches de la croix sont des carrés).
Faire le tracé de 4 croix emboitées à l’image des croix de pharmacie.
-Analyse d’un dessin en le décomposant en éléments pertinents.
-Essayer d’avoir une écriture consise.
-Première approche de la notion de paramètres.
-Première approche de la notion de boucle pour.

plus(a):={
repete(4,avance(a),recule(a),tourne_gauche);
}
croix(a,b):={
repete(4,avance(a),tourne_gauche,avance(b),tourne_gauche,avance(a),tourne_droite);
}
deplace(b):={
saute(b);pas_de_cote(-b);
}

Puis, on veut de plus que la position d’arrivée de la tortue soit la même que celle de départ, on tape :

plus(60);
deplace(10);
croix(60,20);
deplace(10);
croix(60,40);
deplace(10);
croix(60,60);
deplace(-30);

Puis on définit :

croix_pharmacie(a):={
plus(a);
deplace(a/6);
croix(a,a/3);
deplace(a/6);
croix(a,2*a/3);
deplace(a/6);
croix(a,a);
deplace(-a/2);
}

On remarque que plus(a) fait le même dessin que croix(a,0), l’écriture de la procédure plus est donc inutile. On veut de plus que la position d’arrivée de la tortue soit la même que celle de départ et on veut utiliser une boucle pour, on tape :

croix_pharmacie(a):={
pour n de 0 jusque 3 faire croix(a,n*a/3);deplace(a/6);fpour;
deplace(-2*a/3);
}

On peut aussi écrire une procédure récursive, mais on a alors besion de 2 paramètres a,b : cette procédure ne dessine rien si a<b et dessine les croix emboitées avec 10 pas d’écrt jusqu’a ce obtenir la croix(a,a).
On tape :

croix_pharma(a,b):={
si b<=a alors
croix(a,b);
deplace(10);
croix_pharma(a,b+20);
deplace(-10);
fsi
}

puis on tape :
croix_pharma(60,0)

5.3  Les polygones réguliers

Faire le tracé d’un triangle équilatèral, d’un carré, d’un hexagone, d’un octogone puis, d’un pentagone et d’un polygone régulier ayant n cotés.
Écrire la procédure des triangles équilatèraux de cotés de longueur a puis, celle des carrés de cotés de longueur a etc...
Écrire la procédure des polygones réguliers ayant n cotés de longueur a.
Le triangle équilatèral :

triequi(a):={
repete(3,avance(a),tourne_gauche(120));
}

Le carré :

ca(a):={
repete(4,avance(a),tourne_gauche);
}

L’hexagone :

hexa(a):={
repete(6,avance(a),tourne_gauche(60));
}

L’octogone :

octo(a):={
repete(8,avance(a),tourne_gauche(45));
}

Le polygone régulier à n cotés :

polyg(a,n):={
repete(n,avance(a),tourne_gauche(360/n));
}

5.4  Les toiles d’araignées

L’activité consiste à tracer des polygones réguliers emboités et de dessiner aussi les segmentes joignant le centre au sommets du polygone extérieur.

5.5  Le drapeau anglais

L’activité consiste à tracer un carré avec ses diagonales et ses médianes.
Au début, les dimensions du carré ne sont pas imposées.
On fait ensuite varier le coté du carré. Cette activité est double :
-travail sur les valeurs approchées,
-travail sur les procédures parametrées On choisit de faire partir la tortue en bas et à gauche du drapeau, on tape :

drapeau(a):={
repete(4,avance(a),tourne_gauche);
leve_crayon;
avance(a/2);tourne_gauche;avance(a/2);
baisse_crayon;
repete(4,avance(a/2),saute(-a/2),tourne_gauche);
tourne_gauche(45);
repete(4,avance(a*sqrt(2)/2),saute(-a*sqrt(2)/2),tourne_gauche);
tourne_droite(45);
leve_crayon;
recule(a/2);tourne_droite;recule(a/2);
baisse_crayon;
}

Ou encore, on choisit de faire partir la tortue au centre du drapeau, on tape :

carre_diag(a):={
repete(4,avance(a),tourne_gauche);
tourne_gauche(45);
avance(a*sqrt(2));
saute(-a*sqrt(2));
tourne_droite(45);
}
drapeau(a):={
repete(4,carre_diag(a/2),tourne_gauche);
}

ou encore

triang(a):={
repete(2,avance(a),tourne_gauche);
avance(a);
saute(-a);
tourne_gauche(45);
avance(a*sqrt(2));
tourne_gauche(135);
}
drapeau(a):={
repete(4,triang(a/2),tourne_gauche);
}

5.6  La famille des sapins et la proportionalié

1-ière séance
On dessine un triangle rectangle isocèle plein avec comme position de départ et d’arrivée de la tortue, le milieu de l’hypoténuse avec un cap dirigé selon la hauteur.

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).

igtortue/sapin.tex

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).
On demande maintenant de dessiner les sapins de la famille du sapin(50,40), c’est à dire ceux qui ont la même forme que lui à un agrandissement ou à une réducion près.
On demande aux enfants de remplir le tableau suivant :

ab
5 
10 
15 
20 
25 
30 
35 
40 
45 
5040
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 :

ab
155
2010
2515
3020
3525
4030
4535
5040

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).

5.7  La symétrie orthogonale

Activité réalisée dans une classe de CM2.
Les élèves viennent de faire des travaux pratiques de physique sur la réflexion de la lumière : fabrication de périscope, boite noire et image réfléchie par un miroir.
Ils ont observé comment un dessin tracé sur une feuille de papier se réfléchit dans un miroir, lorsqu’on pose ce miroir perpendiculairement à cette feuille.
Les symétriques de dessins faits sur un tableau noir muni d’un quadrillage sont réalisés aisément lorsque la droite symbolisant le miroir est une horizontale ou une verticale ou encore est inclinée de 45 ou de 135 degrés en passant par des nœud du quadrillage, mais le quadrillage est source d’erreur quand le symétrique d’un nœud n’est pas un nœud.

5.7.1  Première séance en informatique

Je dessine au tableau les dessins suivants :
un drapeau, un képi, une casserole :
igtortue/kepi.tex

Il faut que les enfants fasse dessiner à la tortue :

Voici ce que font la plupart des enfants : le tracé d’une droite D horizontale ou verticale puis le tracé d’un drapeau et de son symétrique. Il donne un nom à cette suite d’instruction par exemple exercice. Puis pour répondre à la consigne :
le miroir doit avoir une position quelconque, il tape :
efface; tourne_droite(30);exercice

5.7.2  Deuxième séance en informatique

On demande de définir une fonction objet qui dessine un objet avec au plus 5 traits. Puis on demande de refaire le même travail que lors de la première séance en dessinant le symétrique de objet par rapport à D mais la position de objet par rapport à la droite ne doit pas être figée.
Il faut donc prévoir une fonction place_objet qui place l’objet par rapport à la droite ainsi qu’une fonction place_objetsym qui place l’objet symétrique par rapport à la droite et une fonction objetsym qui dessine le symétrique de objet.

axe(c):={
pas_de_cote(100);
tourne_gauche(c);
avance(200);
recule(400);
avance(200);
};
objet():={
avance 30;
repete(2,avance 60,tourne_droite,avance 30,tourne_droite);
recule 30;
};
objetsym():={
avance(30);
repete(2,avance(60),tourne_gauche,avance(30),tourne_gauche);
recule(30);
};
place_objet(a,b):={
leve_crayon;
tourne_gauche;
avance a;
tourne_gauche b;
baisse_crayon;
};
replace_tortue(a,b):={
leve_crayon;
tourne_droite b;
recule a;
tourne_droite;
baisse_crayon;
};
place_objetsym(a,b):={
leve_crayon;
tourne_droite;
avance a;
tourne_droite b;
baisse_crayon;
};
retoursym(a,b):={
leve_crayon;
tourne_gauche b;
recule a;
tourne_gauche;
baisse_crayon;
};
exo(a,b,c):={
efface;
axe(c);
place_objet(a,b);
objet();
replace_tortue(a,b);
place_objetsym(a,b);
objetsym();
retoursym(a,b);
tourne_droite c;
pas_de_cote(-100);
};

Puis on tape : exo(30,40,20)

5.8  Feuille de TP

Voici la feuille d’un TP suivi d’une correction possible où l’on a utilisé pas_de_cote.

La tortue et la symétrie orthogonale par rapport à une droite

5.8.1  Exercice I

Voici les dessins d’un drapeau, d’un képi, d’une casserole :
igtortue/kepi.tex

1/ Écrire une procédure objet qui réalise l’un de ces dessins : on prendra soin de noter sur le dessin la position choisie pour le départ et l’arrivée de la tortue.

2/ On veut dessiner l’image de objet dans un miroir, pour cela :

5.8.2  Exercice II

1/ Refaire l’exercice précédent en écrivant les procédures suivantes :

2/ Comment peut-on écrire de façon automatique la procédure objetsym à partir de la procédure objet ?
Comment peut-on écrire de façon automatique la procédure place_objetsym à partir de la procédure place_objet ?

5.8.3  Corrections

Une solution pour l’exercice I peut être :

objet(a):={
avance(a);
repete(2,avance(2*a),tourne_droite,avance(a),tourne_droite);
recule(a);
};
objetsym(a):={
avance(a);
repete(2,avance(2*a),tourne_gauche,avance(a),tourne_gauche);
recule(a);
};
exo1():={
pas_de_cote(200);
objet(40);
pas_de_cote(-100);
tourne_droite(20);
avance(200);
recule(400);
avance(200);
tourne_droite(110);
saute(100);
tourne_gauche;
objetsym(40);
}

Les procédures de l’exercice II :

miroir():={
avance(200);
recule(400);
avance(200);
};
place_miroir(d):={
pas_de_cote(100);
tourne_gauche(d);
miroir();
}

Le paramètre d représente l’angle du miroir avec l’horizontale.
Le paramètre b représente la distance du départ de l’objet avec le miroir et le paramètre c représente son inclinaison par rapport au miroir.

place_objet(b,c):={
pas_de_cote(-b);
tourne_gauche(c);
};
replace_tortue(b,c):={
tourne_droite(c);
pas_de_cote(b);
};
place_objetsym(b,c):={
pas_de_cote(b);
tourne_droite(c);
}

On remarque que la procédure place_objetsym est inutile puisque :
place_objetsym(b,c)=place_objet(-b,-c).
À la fin pour remettre la tortue sur le miroir on utilisera replace_tortue(-b,-c) On peut aussi écrire la procédure objet2 qui réalise objet (resp objetsym) quand la valeur du deuxième paramètre est 1 (resp -1).

objet2(a,s):={
avance(a);
repete(2,avance(2*a),tourne_droite s*90,avance(a),tourne_droite s*90);
recule(a);
}

et alors objet(a):=objet2(a,1) et objetsym(a):=objet2(a,-1)

On écrit alors :

exo2(a,b,c,d):={
place_miroir(d);
miroir();
place_objet(b,c);
objet(a);
replace_tortue(b,c);
place_objetsym(b,c)
objetsym(a);
replace_tortue(-b,-c);
}

ou encore, si on suppose que le miroir est dessiné et que la tortue est sur le miroir, on peut utiliser la procédure suivante :

finexo2(a,b,c):={
place_objet(b,c);
objet2(a,1);
replace_tortue(b,c);
place_objet(-b,-c)
objet2(a,-1);
replace_tortue(-b,-c);
};
exo2(a,b,c,d):={
place_miroir(d);
miroir();
finexo2(a,b,c);
}

On tape par exemple :
exo2(40,100,20,-10) finexo2(-20,40,30) finexo2(...)


Previous Up Next