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).
croix_pharma(a,b):={ si b<=a alors croix(a,b); deplace(10); croix_pharma(a,b+20); deplace(-10); fsi }puis on tape :