La tortue dont on parlera ici se déplace dans la fenêtre graphique en laissant une trace derrière elle. En lui donnant des instructions, il est possible de dessiner des merveilles.
Pour plus d’informations, voir cette page.
En mathématiques, on dit qu’on factorise Z dans Z×Y + 2×Z quand on écrit :
Z×Y + 2×Z = Z×(Y+2)
Explication des commandes :
(RAZ)
remet à zéro l’espace de travail et replace la tortue au centre de la fenêtre graphique, tournée vers le haut ;(AV 10)
signifie avance de 10 pixels ;(TD 45)
signifie tourne sur toi-même à droite avec un angle de 45 degrés.Faites en sorte que le programme suivant dessine un carré de 100 pixels de côté.
Maintenant que le programme dessine un carré de 100 pixels de côté, comment modifier le programme précédent pour dessiner un carré de 50 pixels de côté ?
Pour nous simplifier la vie, nous allons utiliser une variable. Elle va nous permettre d’éviter les répétitions.
Faites en sorte que le programme suivant dessine un carré de 100 pixels de côté.
L’idée est de ne faire apparaître le nombre 100 qu’une seule fois.
Maintenant que le programme dessine un carré de 100 pixels de côté, comment modifier le programme précédent pour dessiner un carré de 50 pixels de côté ?
Maintenant que la longueur du côté du carré est factorisée, la changer peut se faire en changeant une seule valeur. On a pu le faire grâce à la mise en place d’une variable.
Pour nous simplifier encore plus la vie, nous allons utiliser la commande Repeter
.
Elle va nous permettre d’éviter les répétitions.
Faites en sorte que le programme suivant dessine un carré de 100 pixels de côté.
Comment modifier le programme précédent pour dessiner un carré de 50 pixels de côté ?
Maintenant que la longueur du côté du carré est factorisée, la changer peut se faire en changeant une seule valeur. On a pu le faire grâce à la mise en place d’une boucle.
Dessinez trois carrés.
Vous pourriez avoir besoin des commandes (LC)
et (BC)
, qui permettent de lever et de baisser le crayon. Si la tortue a levé son crayon, elle ne laisse plus de trace derrière elle. Pour qu'elle dessine à nouveau, il faut utiliser (BC)
.
Grâce à Definir
, on peut stocker le code du carré dans une commande. La vraie syntaxe, dans le cas où la commande ne prend pas de paramètre, est :
(!!! "Pour définir :") (Definir (Un_carre) "Un texte pour la documentation." "Le nom de l’auteur." (!!! "Le code...") (Retourner la_valeur_de_retour) ) (!!! "Pour utiliser :") (Un_carre)
Ici, on peut omettre la doc, l’auteur et le Retourner
.
Comment dessiner des carrés de différentes tailles sur le même dessin ?
Dessiner :
Exemple de pile de carrés :
+-----+ | | | | +-----+ | | | | +-----+ | | | | +-----+
Créer une commande Pile
qui empile les carrés, et utilisez-la pour coder les deux empilements précédents. Vous aurez sans doute besoin de modifier Carre
.
Nous aurons besoin de paramétrer la commande. La syntaxe est assez semblable :
(!!! "Pour définir :") (Definir (Un_carre longueur) "Une texte pour la documentation." "Le nom de l’auteur." (!!! "Le code...") (Retourner la_valeur_de_retour) ) (!!! "Pour utiliser :") (Un_carre 100)
Avant de lancer le programme suivant, exécutez-le vous-même sur une feuille de papier à la place de la tortue !
Vérifiez ensuite si vous avez travaillé correctement.
Factoriser son code revient à le simplifier, le réduire, rassembler et centraliser des valeurs ou opérations qui se répètent
Nous avons vu trois façons de factoriser du code :
Declarer
, Affecter_a
) ;Repeter
, mais ça aurait pu être aussi avec Tant_que...Faire
ou Faire...Tant_que
) ;Definir
.Pour bien comprendre ce qu’il se passe lors de l’évaluation du code défini dans une commande, il faut comprendre les « environnements d’évaluation ».
Traces d’une session :
(Declarer n De_type "nombre") (Afficher n) (Declarer n De_type "nombre") (Affecter_a n 0) (Afficher n) (Declarer n De_type "nombre") (Affecter_a n 0) (Afficher n) (Affecter_a n 1) (Afficher n) (Declarer n De_type "nombre") (Affecter_a n 0) (Afficher n) (Affecter_a n 1) (Afficher n) (Definir (Affiche-STP!) (Afficher n) ) (Affiche-STP!) (Affecter_a n 2) (Affiche-STP!) (Declarer n De_type "nombre") (Affecter_a n 0) (Afficher n) (Affecter_a n 1) (Afficher n) (Definir (Affiche-le-double-STP!) (!!! "Attention, utilisation de variable globale") (Afficher (* 2 n)) ) (Affiche-le-double-STP!) (Affecter_a n 2) (Affiche-le-double-STP!) (Definir (Affiche-le-double-STP! n) (!!! "Attention, utilisation de variable globale") (Afficher (* 2 n)) ) (Affiche-le-double-STP! 10) (Affiche-le-double-STP! 100)
Diagrammes :
+-----+--------+ | nom | valeur | <-- environnement global +-----+--------+ | a | 1 | | b | 17 | | ... | ... | | | | +-----+--------+
Cet environnement est remplacé par un autre quand on est « dans » une commande.
+-----+--------+ | nom | valeur | <-- environnement d’exécution d’une commande +-----+--------+ | a | 1 | | b | 10 | <-- si b est passé en paramètre c’est cette valeur qui est utilisée, la valeur globale n’est pas vue | x | -5 | | y | 42 | | ... | ... | | | | +-----+--------+
Vocabulaire :
Sans paramètres:
(Definir (Carré) (AV 40) (TD 90) ... ) (Carré) (Carré)
Avec paramètres :
(Definir (Carré longueur) <-- paramètre formel (AV longueur) (TD 90) ... ) (Carré 100) <-- paramètres effectifs (Carré 50)