# Chapitre 1 Les commandes primitives de la Tortue

## 1.1 Pour commencer

`Alt+d` fait apparaître l’écran `dessin tortue`, de positionner la tortue au pixel de coordonnées [100,100], de la diriger selon le cap 0 et de travailler en degrés pour toutes les commandes concernant la tortue et cela même si on a coché `radian` dans la configuration du `cas` (bouton qui rappelle la cofiguration choisie `Config : exact...`).

Le point [0,0] se trouve en bas à gauche, l’axe des y est dirigé vers le haut et le cap 0 est dirigé selon l’axe des x.
Les unités sont les pixels et la dimension de l’écran dépend de votre ordinateur (en plein écran le mien est de 270 × 240).
Le cap de la tortue est exprimé en degrés et ses valeurs sont celles du cercle trigonométrique : ces valeurs sont interprétées modulo 360.
On tape :

`Alt+d`

On obtient :

`l’écran de dessin avec la tortue au pixel de coordonnées [100,100], avec le cap 0`

On utilise ensuite les primitives qui permettent de déplacer la tortue et qui gérent son crayon.

## 1.2 La tortue et sa représentation

Après chaque commande la position d’arrivée de la tortue est représentée par un petit triangle isocèle de base 10 et de hauteur 17. Ce petit triangle ne fait pas partie du dessin, il bouge selon les instructions et peut être caché avec la commande `cache_tortue` ou rendu visible avec la commande `montre_tortue`. Si on veut dessiner la tortue pour montrer les positions intermédiaires ocupées par la tortue sur le dessin on tape :

    des_tor():={
    cache_tortue;
    tourne_gauche;
    avance 5;
    tourne_droite(180-180/pi*atan(3.4));
    avance(sqrt(25+17^2));
    tourne_droite(180-2*180/pi*atan(1/3.4));
    avance(sqrt(25+17^2));
    tourne_droite(180-180/pi*atan(3.4));
    avance 5;tourne_droite;
    montre_tortue;
    }:;

### 1.2.1 Pour voir la tortue : `montre_tortue`

`montre_tortue` n’a pas d’argument.
`montre_tortue` montre la tortue.
On tape :

`montre_tortue`

Ou on tape :

`montre_tortue()`

On obtient :

`On voit la tortue`

### 1.2.2 Pour cacher la tortue : `cache_tortue`

`cache_tortue` n’a pas d’argument.
`cache_tortue` cache la tortue.
On tape :

`cache_tortue`

Ou on tape :

`cache_tortue()`

On obtient :

`On ne voit plus la tortue`

### 1.2.3 Pour représenter la tortue selon un triangle vide ou plein :
`dessine_tortue`

`dessine_tortue` a comme argument 0 ou 1 (par défaut 1).
`dessine_tortue 0` permet de dessiner le petit triangle représentant la tortue.
`dessine_tortue` ou `dessine_tortue 1` permet de dessiner le petit triangle représentant la tortue en forme pleine.
`dessine_tortue` peut permettre de matérialiser les positions intermédiaires ocupées par la tortue, en particulier de marquer sur le dessin la position de départ de la tortue avec `dessine_tortue 1` et sa position d’arrivée avec `dessine_tortue 0`.
En effet lorsqu’on écrit une procédure qui réalise un dessin tortue, il est important de noter sur le dessin la position de départ et la position d’arrivée de la tortue pour pouvoir réutiliser correctement cette procédure. C’est pourquoi lorsqu’on traduit par un dessin ce que fait une procédure graphique, on représente la position de départ de la tortue par un triangle plein et la position d’arrivée de la tortue par un triangle non plein.
On tape :

`dessine_tortue`

Ou on tape :

`dessine_tortue 1`

On obtient :

`On voit la tortue sous la forme d’un petit triangle plein`

On tape :

`dessine_tortue 0`

On obtient :

`On dessine la tortue sous la forme d’un petit triangle`

Remarque
Les dessins associés à une procédure seront faits en utilisant un `dessine_tortue` au départ : ainsi le triangle plein représente la position de la tortue au départ et le triangle "vide" représente la tortue à l’arrivée. Si la tortue revient à son point de départ, on dit que la procédure est transparente : sur le dessin on ne verra donc que le triangle plein représentant la position de la tortue au départ et à l’arrivée.

## 1.3 La barre de boutons de l’écran `Tortue`

On trouve dans la barre de boutons de l’écran `Tortue` les principales primitives existantes de la tortue et un Menu `M`.

- Le Menu `M` permet d’avoir un maillage c’est à dire d’avoir un écran dont le fond est soit quadrillé à points (`quadrillage`), soit triangulé à points (`triangle`), soit sans maillage (`aucun`).
  Ce menu permet aussi d’imprimer l’écran `Tortue` et de le transformer soit en un fichier `.eps, .jpg, .pdf, .png` (`Previsualisation avec EPS et PNG`), soit en un fichier LaTex (`Previsualiser avec Latex`).
- Les primitives sont désignées soit par leurs deux premières lettres, soit par les initiales des mots composant les primitives comportant un souligné (`_`).
  On trouve :
  `av` pour `avance`
  `re` pour `recule`
  `td` pour `tourne_droite`
  `tg` pour `tourne_gauche`
  `pc` pour `pas_de_cote`
  `sa` pour `saute`
  `cr` pour `crayon`
  `ro` pour `rond`
  `di` pour `disque`
  `rp` pour `rectangle_plein`
  `tp` pour `triangle_plein`
  `ec` pour `ecris`
  `sg` pour `signe`
  `ef` pour `efface`
  Lorsqu’on appuie sur `av`, la commande `avance` s’inscrit dans la ligne de commandes : cette barre de boutons permet donc de saisir les commandes plus facilement. On appuie sue `Entree` et la tortue avance de 10 pas.
  Lorsqu’on appuie sur `cr`, on fait apparaitre la palette des couleurs lorsqu’on clique par exemple sur la couleur 123, la commande `crayon 123` s’inscrit dans la ligne de commandes puis, on appuie sur `Entree` et la tortue change sa couleur.
  Si on veut juste avoir le code d’une couleur, on peut aussi utiliser le menu `M->Couleur`.

Il faut aussi savoir que la touche tabulation de votre clavier (⇆) permet de compléter ce qui se trouve dans la ligne de commandes en les différentes instructions de `Xcas`.
Par exemple on tape :

`pas` `⇆`

On obtient :

`L’index de l’aide s’ouvre à pas. On sélectionne` `pas_de_cote` `et on appuie sur entree`

## 1.4 Les primitives de déplacement

Les commandes de cette section permettent de manipuler la tortue et son crayon.

### 1.4.1 Pour avancer : `avance`

`avance` a comme argument un réel `a` (ou aucun argument).
`avance a` fait avancer la tortue de `a` pas (par défaut `a=10`).
On tape :

`avance`

Ou on tape :

`avance 10`

Ou on tape :

`avance(10)`

On obtient :

`La tortue avance de 10 pas`

On tape :

`avance 30`

Ou on tape :

`avance(30)`

On obtient :

`La tortue avance de 30 pas`

Remarque
`avance -30` est identique à `recule 30`.

### 1.4.2 Pour reculer : `recule`

`recule` a comme argument un réel `a` (ou aucun argument).
`recule a` fait reculer la tortue de `a` pas (par défaut `a=10`).
On tape :

`recule`

Ou on tape :

`recule 10`

Ou on tape :

`recule(10)`

On obtient :

`La tortue recule de 10 pas`

On tape :

`recule 30`

Ou on tape :

`recule(30)`

On obtient :

`La tortue recule de 30 pas`

Remarque
`recule -30` est identique à `avance 30`.

### 1.4.3 Pour effacer un trait ou pour revenir au début : `efface`

`efface` admet un ou aucun argument.
Lorsque `efface` n’a pas d’argument.
`efface` efface l’écran et remet la tortue dans la position qu’elle avait lorsque on a démarré :la tortue a un crayon noir baissé est au pixel de coordonnées [100,100], avec un cap 0.
On tape :

`efface`

Ou on tape :

`efface()`

On obtient :

`la tortue au pixel de coordonnées [100,100], avec le cap 0`

Lorsque `efface` a un argument, `efface` fait reculer la tortue en effaçant, puis remet le crayon en noir. On tape :

`avance 50`

Ou on tape :

`efface 20`

On obtient :

`la tortue a un crayon noir et n’a avancé que de 30 pas`

Remarque
`efface(a)` réalise la suite d’instructions :
`crayon(gomme);recule(a);crayon(noir)`

### 1.4.4 Pour tourner à droite : `tourne_droite`

`tourne_droite` a comme argument un réel `a` (ou aucun argument).
`tourne_droite a` fait tourner (sans déplacement) la tortue à droite de `a` degrés (par défaut `a=90`).
On tape :

`tourne_droite`

Ou on tape :

`tourne_droite 90`

Ou on tape :

`tourne_droite(90)`

On obtient :

`La tortue a tourné à droite de 90 degrés`

On tape :

`tourne_droite 30`

Ou on tape :

`tourne_droite(30)`

On obtient :

`La tortue a tourné à droite de 30 degrés`

Remarque
`tourne_droite -30` est identique à `tourne_gauche 30`.

### 1.4.5 Pour tourner à gauche : `tourne_gauche`

`tourne_gauche` a comme argument un réel `a` (ou aucun argument).
`tourne_gauche a` fait tourner (sans déplacement) la tortue à gauche de `a` degrés (par défaut `a=90`).
On tape :

`tourne_gauche`

Ou on tape :

`tourne_gauche 90`

Ou on tape :

`tourne_gauche(90)`

On obtient :

`La tortue a tourné à gauche de 90 degrés`

On tape :

`tourne_gauche 30`

Ou on tape :

`tourne_gauche(30)`

On obtient :

`La tortue a tourné à gauche de 30 degrés`

Remarque
`tourne_gauche -30` est identique à `tourne_droite 30`.

### 1.4.6 Pour avancer ou reculer sans tracer : `saute`

`saute` a comme argument un réel `a` (ou aucun argument).
`saute a` fait avancer la tortue de `a` pas, sans laisser de traces et sans changer de cap (par défaut `a=10`).
Si `a` est négatif la tortue recule de `-a` pas, sans laisser de traces.
`saute 20` est identique à :
`leve_crayon,avance 20; baisse_crayon;`.
`saute -20` est identique à :
`leve_crayon,recule 20; baisse_crayon;`.
Remarque
Après un `saute` on est en `baisse_crayon`.
On tape :

`saute`

Ou on tape :

`saute 10`

Ou on tape :

`saute(10)`

On obtient :

`La tortue a avancé de 10 pas sans laisser de traces et sa position est marquée par un point`

On tape :

`saute 20`

Ou on tape :

`saute(20)`

On obtient :

`La tortue a avancé de 20 pas sans laisser de traces et sa position est marquée par un point`

Attention
`saute 20; saute 20; saute 20;` n’est pas identique à `saute 60` car à chaque saut la tortue laisse une trace !

### 1.4.7 Pour faire un bond à droite ou à gauche sans tracer : `pas_de_cote`

`pas_de_cote` a comme argument un réel `a` (ou aucun argument).
Si `a` est positif `pas_de_cote a` fait faire un bond de `a` pas à gauche de la tortue sans laisser de traces et sans changer de cap (par défaut `a=10`).
Si `a` est négatif `pas_de_cote a` fait faire un bond de `-a` pas à droite de la tortue sans laisser de traces et sans changer de cap.
`pas_de_cote 20` est identique à :
`leve_crayon,tourne_gauche,avance 20,baisse_crayon,tourne_droite`.
Remarque
Après un `pas_de_cote` on est en `baisse_crayon`.
On tape :

`pas_de_cote`

Ou on tape :

`pas_de_cote 10`

Ou on tape :

`pas_de_cote(10)`

On obtient :

`La tortue a fait 10 pas sur le coté gauche sans laisser de traces et sa position est marquée par un point`

On tape :

`pas_de_cote -20`

Ou on tape :

`pas_de_cote(-20)`

On obtient :

`La tortue a fait 20 pas sur le coté droit sans laisser de traces mais sa position est marquée par un point`

Attention
`pas_de_cote 20; pas_de_cote 20; pas_de_cote 20;` n’est pas identique à `pas_de_cote 60` car à chaque bond la tortue laisse une trace !

### 1.4.8 Pour faire un point

Il n’y a pas de commande spécifique pour faire un point, il suffit d’être en `baisse_crayon`.
Ainsi, `baisse_crayon` dessine un point là où se trouve la tortue.

### 1.4.9 Pour faire un cercle ou un arc de cercle: `rond`

`rond` a comme argument 1,2 ou 3 arguments.
Si `rond` a 1 argument : un nombre réel `r` (+/- le rayon).
`rond r` dessine le cercle de rayon `|r|` tangent à la tortue : la tortue trace le cercle :
si `r>0` en le parcourant dans le sens direct et
si `r<0` en le parcourant dans le sens indirect.
La position d’arrivée de la tortue est la même que sa postion de départ.
On tape :

`rond 20`

Ou on tape :

`rond(20)`

On obtient :

`Le dessin du cercle de rayon 20, tangent à la tortue qui indique le sens +`

On tape :

`rond -20`

Ou on tape :

`rond(-20)`

On obtient :

`Le dessin du cercle de rayon 20, tangent à la tortue qui indique le sens -`

Si `rond` a 2 arguments : un nombre réel `r` (+/- le rayon) et la mesure d’un angle en degrés `a`.
`rond(r,a)` dessine l’arc de cercle tangent à la tortue, de rayon `|r|` et de mesure `signe(r)*a` modulo 360 degrés compris entre la postion de départ et la position d’arrivée de la tortue.
À l’arrivée :
si `r>0` la tortue a tourné à gauche de `a` modulo 360 degrés c’est à dire : si `360>a>0` la tortue a tourné à gauche de `a` degrés ou à gauche de `a+360` degrés si `-360<a<0` par rapport à sa postion de départ et
si `r<0`, la tortue a tourné à droite de `a` modulo 360 degrés c’est à dire : si `360>a>0` la tortue a tourné à droite de `a` degrés ou a tourné à droite de `a+360` degrés si `-360<a<0` par rapport à sa postion de départ.
On tape :

`rond(20,90)`

Ou on tape :

`rond(20,-270)`

On obtient :

`Le dessin d’un quart de cercle tangent à la tortue et de rayon 20 et la tortue a tourné à gauche de 90 degrés`

On tape :

`rond(-20,90)`

Ou on tape :

`rond(-20,-270)`

On obtient :

`Le dessin d’un quart de cercle tangent à la tortue et de rayon 20 et la tortue a tourné à droite de 90 degrés`

Si `rond` a 3 arguments : un nombre réel `r` (+/- le rayon) et les mesures de 2 angles en degrés `a1` et `a2`.
`rond(r,a1,a2)` dessine l’arc de cercle `A1A2` tangent à la tortue, de rayon `|r|` et de mesure `a2-a1` modulo 360. Le point `A1` (resp `A2`) est le point défini à partir de la postion de départ de la tortue, par `rond(r,a1);` (resp `rond(r,a2);`) :
pour définir `A1` (resp `A2`) la tortue a tourné à gauche si `r>0` (ou à droite si `r<0` ) de `a1` modulo 360 (resp `a2` modulo 360) degrés par rapport à sa postion de départ.
On tape :

`rond(20,10,100)`

Ou on tape :

`rond(20,-350,-260)`

On obtient :

`Le dessin d’un quart de cercle tangent à la tortue et de rayon 20 et décalé de 10 degrés par rapport à la position-départ de la tortue et la tortue a tourné à gauche de 100 degrés.`

On tape :

`rond(-20,10,100)`

Ou on tape :

`rond(-20,10,-260)`

On obtient :

`Le dessin d’un quart de cercle tangent à la tortue et de rayon 20 et décalé de 10 degrés par rapport à la position-départ de la tortue et la tortue a tourné à droite de 100 degrés.`

Remarque
`rond(20,10,100)` est équivalent à :
`leve_crayon;``rond(20,10);``baisse_crayon;``rond(20,(100-10))`

## 1.5 La gestion du crayon

Les commandes de cette section permettent de manipuler le crayon.

### 1.5.1 Les couleurs du crayon : `crayon`

Les couleurs sont codées par un entier allant de 0 à 255 (au delà de 255 la couleur est noire) mais cela peut dépendre de votre configuration...
Les principales couleurs se trouvent dans le sous_menu `Crayon`, par exemple `crayon rouge`.
Les codes des différentes couleurs sont :
`noir` a pour code 0,
`rouge` a pour code 1,
`vert` a pour code 2,
`jaune` a pour code 3,
`bleu` a pour code 4,
`magenta` a pour code 5,
`cyan` a pour code 6,
`blanc` a pour code 7,
puis on a les dégradés des couleurs précédentes.
Il faut savoir que le fond de l’écran graphique est blanc de code 7 et que cette couleur est appelée `gomme`. Donc `gomme` (la couleur du le fond de l’écran) a pour code 7.
On peut voir les différentes couleurs disponibles en appuyant sur `cr` de la barre des boutons, il suffit alors cliquer sur la couleur desirée de code `n` pour que `crayon n` s’inscrive dans la ligne de commande.
Ou bien on tape :

    efface;
    cache_tortue;
    pour n de 0 jusque 88 faire
       rectangle_plein(3,10);
       avance(3);
       crayon(n);
    fpour;
    saute(-267);pas_de_cote(-20);
    pour n de 89 jusque 177 faire
       rectangle_plein(3,10);
       avance(3);
       crayon(n);
    fpour;
    saute(-267);pas_de_cote(-20);
    pour n de 178 jusque 255 faire
       rectangle_plein(3,10);
       avance(3);
       crayon(n);
    fpour;

ou encore en une seule ligne avec un `pour` :

    efface;
    cache\_tortue;
    pour n de 0 jusque 256 faire
    rectangle_plein(1,10);
    avance(1);
    crayon(n);
    fpour;

On obtient ainsi la palette des couleurs.

### 1.5.2 Pour changer la couleur du crayon : `crayon`

`crayon` a comme argument une couleur ou un entier représentant cette couleur ou aucun argument.
Quand `crayon` n’a pas d’argument, `crayon` renvoie la couleur du crayon (cf 1.6.1).
Quand `crayon` a un argument, `crayon` change la couleur du crayon.
On tape :

`crayon rouge`

Ou on tape :

`crayon(rouge)`

Ou on tape :

`crayon 1`

Ou on tape :

`crayon(1)`

On obtient :

`le tracé suivant sera en rouge`

On tape :

`crayon vert`

Ou on tape :

`crayon 2`

On obtient :

`le tracé suivant sera en vert`

On tape :

`crayon gomme`

Ou on tape :

`crayon 7`

On obtient :

`le tracé suivant sera selon la couleur du fond donc, en baisse_crayon, la tortue gomme les traits qui sont sur son passage`

### 1.5.3 Pour ne pas laisser de traces : `leve_crayon`

`leve_crayon` n’a pas d’argument.
`leve_crayon` permet de faire bouger la tortue sans qu’elle laisse des traces lors de ses déplacements.
On tape :

`leve_crayon`

Ou on tape :

`leve_crayon()`

On obtient :

`La tortue a 2 couleurs et se déplace sans traces`

### 1.5.4 Pour dessiner : `baisse_crayon`

`baisse_crayon` n’a pas d’argument.
`baisse_crayon` permet de faire bouger la tortue pour qu’elle laisse des traces lors de ses déplacements.
On tape :

`baisse_crayon`

Ou on tape :

`baisse_crayon()`

On obtient :

`La tortue a la couleur du crayon et se déplacera en laissant des traces`
`Un point sera dessiné à l’endroit de la tortue`

## 1.6 Les états de la tortue

### 1.6.1 Pour connaitre la couleur du crayon : `crayon`

`crayon` n’a pas d’argument ou a comme argument une couleur.
Lorsque `crayon` a un argument, `crayon` fixe la couleur du crayon de la tortue selon l’argument (cf 1.5.2).
Lorsque `crayon` n’a pas d’argument, `crayon` renvoie la couleur du crayon même si celui-ci est levé.
On tape :

`crayon`

On obtient :

`rouge`

### 1.6.2 Pour connaitre la position de la tortue : `position`

`position` n’a pas d’argument ou a comme argument un vecteur de coordonnées.
Lorsque `position` a un argument, `position` fixe la position de la tortue selon l’argument (cf 1.7.1).
Lorsque `position` n’a pas d’argument, `position` renvoie la position de la tortue.
On tape :

`position`

Ou on tape :

`position()`

On obtient par exemple comme réponse :

`[180.0,150.0]`

### 1.6.3 Pour connaitre le cap de la tortue : `cap`

`cap` n’a pas d’argument ou a comme argument un réel.
Lorsque `cap` a un argument, `cap` fixe le cap de la tortue selon l’argument (cf 1.7.2).
Lorsque `cap` n’a pas d’argument, `cap` renvoie le cap de la tortue c’est à dire la mesure en degrés de de l’angle Ox,MA (la tortue est sous la forme d’un petit triangle ABC isocèle de sommet A et M est le milieu de BC).
On tape :

`cap`

On obtient par exemple comme réponse :

`180.0`

## 1.7 Pour déplacer la tortue à l’aide des coordonnées

Les commandes de cette section permettent de mettre la tortue selon des coordonnées et un cap.
L’origine [0,0] du système de coordonnées cartésiennes se trouve en bas et à gauche de l’écran, et l’axe des y est dirigé vers le haut. L’unité est le pixel et la dimension de l’écran dépend de votre ordinateur.
Le cap de la tortue est exprimé en degrés et ses valeurs sont celles du cercle trigonométrique : ces valeurs sont interprétées modulo 360. Le cap 0 est dirigé selon l’axe des x.

### 1.7.1 Pour fixer sa position : `position`

`position` n’a pas d’argument ou a comme argument un vecteur de coordonnées.
Lorsque `position` n’a pas d’argument, `position` renvoie la position de la tortue (cf 1.6.2).
Lorsque `position` a un argument, `position` fixe la position de la tortue selon l’argument.
On tape :

`position [180,150]`

Ou on tape :

`position([180,150])`

On obtient :

`la tortue a la position [180,150], sans changer son cap`

### 1.7.2 Pour fixer son cap : `cap`

`cap` n’a pas d’argument ou a comme argument un réel.
Lorsque `cap` n’a pas d’argument, `cap` renvoie le cap de la tortue (cf 1.6.3).
Lorsque `cap` a un argument, `cap` fixe le cap de la tortue selon l’argument.
On tape :

`cap 180`

Ou on tape :

`cap(180)`

On obtient :

`la tortue est dirigée selon l’axe des x négatifs, sans changer sa position`

### 1.7.3 Pour diriger la tête de la tortue vers un point : `vers`

`vers` a 1 argument qui est la liste formée par les coordonnées du point ou 2 arguments qui sont les coordonnées du point.
`vers` fixe le cap de la tortue selon la direction donnée par l’argument.
On tape :

`vers(0,0)`

Ou on tape :

`vers [0,0]`

Ou on tape :

`vers([0,0])`

On obtient :

`la tortue est dirigée selon le point [0,0] qui est le point en bas et à gauche de l’écran`

## 1.8 Les figures pleines

Les commandes de cette section permettent de dessiner des figures pleines.

### 1.8.1 Pour dessiner un disque ou un secteur angulaire : `disque`

`disque` a 1,2 ou 3 arguments.
`disque` a les mêmes arguments que `rond` mais dessine le cercle plein.
Si `disque` a comme argument un nombre réel `r`.
`disque(r)` dessine un disque tangent à la position de la tortue, de rayon `|r|` et de couleur la couleur du crayon. La tortue indique le sens de parcours du bord du disque : ce sens est positif si `r>0` et négatif si `r<0`.
On tape :

`disque 20`

Ou on tape :

`disque(20)`

On obtient :

`On obtient un disque de rayon 20, tangent à la position de la tortue et situé à gauche de la position de la tortue.`

Si `disque` a 2 arguments un nombre réel `r` et la mesure d’un angle en degrés `a`.
`disque(r,a)` dessine de la couleur du crayon, un secteur angulaire tangent à la position de la tortue, de rayon `|r|`, d’angle `a`, compris entre la postion de départ et la position d’arrivée de la tortue.
La tortue au départ indique le sens de parcours du bord du disque : ce sens est positif si `r>0` et négatif si `r<0`.
À l’arrivée la tortue a tourné de `a` degrés par rapport à sa postion de départ, à gauche, si `r>0` et, à droite, si `r<0`.
On tape :

`disque(20,90)`

On obtient :

`On obtient un quart de disque situéà gauche de la tortue, tangent à la tortue, de rayon 20 et la tortue a tourné à gauche de 90 degrés`

On tape :

`disque(-20,90)`

On obtient :

`On obtient un quart de disque situéà droite de la tortue, tangent à la tortue, de rayon 20 et la tortue a tourné à droite de 90 degrés`

Si `disque` a 3 arguments un nombre réel `r` (le rayon) et les mesures `a1` et `a2` de 2 angles en degrés .
`disque(r,a1,a2)` dessine un secteur angulaire tangent à la tortue, de rayon `|r|` et d’angle `a2-a1` commençant à `a1` degrés par rapport à la position de la tortue.
La tortue au départ indique le sens de parcours du bord du disque : ce sens est positif si `r>0` et négatif si `r<0`.
À l’arrivée la tortue a tourné de `a2` degrés par rapport à sa postion de départ, à gauche, si `r>0` et, à droite, si `r<0`.
On tape :

`disque(20,10,100)`

On obtient :

`On obtient un quart de disque situéà gauche de la tortue, tangent à la position de la tortue, de rayon 20 et commencant à 10 degrés par rapport à la position de départ de la tortue.`

Remarque Pour dessiner un disque de rayon `r` et de centre la tortue on peut définir :
`disque_centre(r):=
avance(r);tourne_gauche; disque(r);tourne_droite; recule(r)` Pour dessiner un secteur d’angle `a` de rayon `r` et de centre la tortue on peut définir :
`secteur_centre(r,a):=
avance(r);tourne_gauche; disque(r,a);tourne_droite; recule(r)` Pour dessiner un secteur d’angle `a1` et `a2`, de rayon `r` et de centre la tortue on peut définir :
`secteurs_centre(r,a1,a2):=
avance(r);tourne_gauche; disque(r,a1,a2);tourne_droite; recule(r)`

### 1.8.2 Pour dessiner un rectangle plein : `rectangle_plein`

`rectangle_plein` a comme argument 1 ou 2 nombres réels.
Si il n’y a qu’un argument `a` `rectangle_plein(a)` dessine un carré plein de coté `a` et si il y a 2 arguments `a` et `b`, `rectangle_plein(a,b)` dessine un rectangle plein de cotés `a` et `b`.
Le carré ou le rectangle sont situés à gauche de la tortue : la tortue décrit le contour dans le sens direct et remplit la figure décrite.
On tape :

`rectangle_plein 20`

Ou on tape :

`rectangle_plein(20)`

On obtient :

`dessine un carré plein de coté 20 à gauche de la tortue`

On tape :

`rectangle_plein(20,20,50)`

On obtient :

`dessine un losange plein de côtés 20, délimitant un angle de 50 degrés à gauche de la tortue`

On tape :

`rectangle_plein(20,40)`

On obtient :

`dessine un rectangle plein de cotés 20 et 40 à gauche de la tortue`

On tape :

`rectangle_plein(20,40,-50)`

On obtient :

`dessine un parallélogramme plein de côtés 20 et 40, délimitant un angle de 50 degrés, à droite de la tortue`

### 1.8.3 Pour dessiner un triangle plein : `triangle_plein`

`triangle_plein` a comme argument 1 2 ou 3 nombres réels.
Si il y a un seul argument `a`, `triangle_plein` dessine un triangle équilatéral plein de coté `a`.
Si il y a deux arguments `a` et `b`, `triangle_plein` dessine un triangle rectangle plein de cotés `a` et `b`.
Si il y a trois arguments `a`, `b` et `t`, `triangle_plein` dessine un triangle plein de cotés `a` et `b` et formant un angle de `t` degrés.
On tape :

`triangle_plein 20`

Ou on tape :

`triangle_plein(20)`

On obtient :

`Un triangle équilatéral plein de cotés 20 à gauche de la tortue`

On tape :

`triangle_plein(20,40)`

On obtient :

`Un triangle rectangle plein de cotés 20 et 40 à gauche de la tortue`

On tape :

`triangle_plein(20,40,60)`

On obtient :

`Un triangle plein de cotés 20 et 40 formant un angle de 60 degrés à gauche de la tortue`

On tape :

`tortue():={
triangle_plein(17,5);tourne_droite;
triangle_plein(5,17); tourne_gauche;}`

On obtient :

`Un triangle plein qui dessine la tortue`

### 1.8.4 Pour remplir un polygone que l’on vient de tracer : `polygone_rempli`

`polygone_rempli` a comme argument un entier négatif `-n` strictement inférieur à -1.
`polygone_rempli -n` recherche les `n` positions précédentes de la tortue qui doivent former un polygone qui sera ensuite rempli.
Dans la pratique, on fait tracer à la tortue un polygone puis on compte le nombre d’instructions `n` utilisées pour faire ce polygone, puis on tape :
`polygone_rempli -n`.
Attention
`tourne_droite` ou `tourne_gauche` compte pour une position.
On tape :

`avance 40; tourne_gauche 120; avance 40; tourne_gauche 120; avance 40; polygone_rempli -5`

On obtient :

`Le dessin d’un triangle équilatéral plein de cotés 40`

Attention La tortue ici n’est pas revenue à sa position initiale.
On tape :

`repete(3,avance 50,tourne_gauche 120);
polygone_rempli -6`

On obtient :

`Le dessin d’un triangle équilatéral plein de cotés 50`

Attention La tortue ici est revenue à sa position initiale.

## 1.9 Pour écrire sur l’écran dessin tortue

### 1.9.1 Pour écrire une chaîne de caractères sur l’écran dessin tortue : `ecris`

`ecris` a 1,2 ou 4 arguments qui sont :
une chaîne de caractères, la taille de la fonte (par défaut 14), et les coordonnées du point où l’on veut écrire (par défaut ce sera là où se trouve la tortue).
Il faut noter que la chaîne de caractères peut s’écrire avec ou sans les `"`.
Attention
La commande `ecris` ne change pas la position de la tortue.
On tape :

`ecris("bonjour")`

Ou on tape :

`ecris(bonjour)`

On obtient :

`bonjour s’écrit là où se trouve la tortue avec la fonte 14`

On tape :

`ecris("bonjour",20)`

Ou on tape :

`ecris(bonjour,20)`

On obtient :

`bonjour s’écrit là où se trouve la tortue avec la fonte 20`

On tape :

`ecris("bonjour",20,30,10)`

Ou on tape :

`ecris(bonjour,20,30,10)`

On obtient :

`bonjour s’écrit à la place du point [30,10] avec la fonte 20 et la tortue là où elle était avant` `ecris``.`

### 1.9.2 Pour signer un dessin sur l’écran dessin tortue : `signe`

`signe` a un argument qui une chaîne de caractères.
`signe` écris la chaîne de caractères à la place du point [10,10] avec la fonte 20.
Il faut noter que la chaîne de caractères peut s’écrire avec ou sans les `"`.
On a donc :
`signe("Thomas")`=`ecris("Thomas",20,10,10)`.
On tape :

`signe("Thomas")`

Ou on tape

`signe(Thomas)`

On obtient :

`Thomas s’écrit en [10,-10] avec la fonte 20 et la tortue là où elle était avant` `signe``.`