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