Nous avons vu l'Editeur Logo, nous connaissons POUR et FIN, nous savons
réaliser plusieurs dessins ou figures. Afin d'aller plus loin, nous
allons introduire les paramètres. Les enfants ayant des aînés
peuvent connaître les x, y et autres de l'algèbre (c'est simple
: x + y = z ; si x est 5 et y est 2 ; z est =à ?!... Les enfants
trouvent si vous calez !). Pour nous, la variable est l'argument de l'action
désirée. On avance d'un certains nombre de pas ; ce nombre
de pas est "l'argument" de l'action d'avancer. Je parle aussi
de boîte ; tous les enfants savent qu'il existe différentes
boîtes (ayant donc un nom : boîte à sel, à sucre,
à farine, d'allumettes. Et chacun sait qu'une boîte peut soit
être vide, soit - non pas être pleine, mais contenir une certaine
quantité de ce qu'elle a à contenir.
(http://sly.vivien.free.fr/collec/collec_home.htm)
(http://le90mman.free.fr/coldossier79.htm)
(http://elefantehiesel.multimania.com/boites/boites.htm)
Par exemple, si je veux créer à nouveau la primitive AVANCE, ou la traduire en anglais, je devrais faire ceci :
POUR FORWARD :PAS ;;pas est l'argument de avance (ceux qui avancent
en centimètres n'ont plus
;;qu'à s'installer sur le divan d'un psychanalyste !...)
AV :PAS
FIN
Pour aller plus loin, ailleurs : (/clsommai.html)
cliquer sur Refaire - "Master"
Si, au sortir de l'Editeur, je lance Forward (entrée), je reçois
un message d'erreur ; c'est évident : je n'ai rien mis dans la boîte.
Tu as déjà avancer de rien toi ?!... Donc, je lance Forward
58 et le compte est bon ! Je tourne, je change la couleur et je lance un
Forward 202 ; génial, rien à dire !
Je puis réaliser un carré avec ce Forward ? Mais oui ! Ton Forward deviendra la sous-procédure de ton programme réalisant le(s) carré(s) ! Attention : le mot carré existe déjà (carré de 5 = 25 (http://carredas.free.fr/)) en Logo, donc, il faut lui donner un autre nom ; tant il est vrai que s'il y a 2 Gérard dans ta classe, il n'y a qu'un Gérard Colucci ; nous sommes bien d'accord ?
(http://perso.wanadoo.fr/thierry.leloup/Coluche/coluche.html)
POUR KARRE :PAS
REPETE 4 [FORWARD :PAS TD 90]
FIN
Et ce n'est, évidement, pas tout ; je puis utiliser ce que j'ai déjà appris les séances précédentes !
POUR ROSAK :NB :PAS ;;nombre de carrés dans la rosace
REPETE :NB [KARRE :PAS TD 360 / :NB] ;;la fameuse règle !
FIN
Suivant les enfants, on peut demander d'écrire une procédure paramétrée par polygone régulier étudié, puis une pour les rosaces de ces polygones (dans une pages précédentes, j'ai donné à l'animateur la procédure réalisant tous les polygones et toutes les rosaces), ou, justement, d'imaginer cette fameuse procédure réalisant, à elle seule, tous les polygones. On peut, aussi, une fois la notion de procédure paramétrée assimilée, passer à autre chose comme l'incrémentation et son contraire. Incrémenter c'est ce que nous faisons chaque année lors de notre anniversaire ; décrémenter, c'est le compte à rebours précédent le lancement des fusées comme chacun a pu en voir au moins un à la télévision.
(http://www.linux-france.org/prj/jargonf/I/increacutementer.html)
(http://www.olf.gouv.qc.ca/ressources/bogue/fiches/8384710.htm)
(http://www.stjbosco.cs-soreltracy.qc.ca/nasa.htm)
Incrémenter ; des carrés de plus en plus grand :
POUR KARREPG :PAS
SI :PAS > 180 [STOP]
AV :PAS
KARREPG :PAS + 10 ;;voir Spirale, page suivante pour expliciter ce "rappel"
qui n'est pas
;;différent qu'un appel ni un lancement de procédure ...
FIN
Décrémenter ; des carrés de plus en plus petits :
POUR KARREPP :PAS
SI :PAS < 10 [STOP]
AV :PAS
KARREPP :PAS - 10
FIN
Les deux procédures permettent de bien observer la différence, si on laisse la Tortue pendant qu'elles se réalisent. Pour la démonstration, on peut ajouter un ATTENDS afin de ralentir l'exécution (ATTENDS 120, ou selon la puissance de votre machine ; à placer après les AV :PAS, donc : juste avant les appels récursifs). Mieux encore : ajouter un ECRIS :PAS avant les AV.
Seulement voila : il nous faut expliciter les tests !... Afin de ne pas
vous faire piéger, je vous invite à
commencer par la procédure qui s'incrémente (avec un écran
normal : sans Fenêtre ni Enroule !). Au moment où la Tortue
va sortir de l'écran, Logo vous affiche un message d'erreur. Là,
vous faites remarquer que la procédure est mal écrite puisque
c'est Logo qui l'arrête et pas vous dans le programme tel que vous
l'avez conçu. Que manque-t-il ? Une condition d'arrêt : "je
veux que la Tortue stop avant de sortir de l'écran". Vous avez
vu le conditionnel (temps de conjugaison) à l'école ?
Par quel mot commence une phrase au conditionnel ? ... "Si j'aurais
su, j'aurais pas venu" (La Guerre des boutons) (http://www.cinemaniacs.be/pages/critique/AGUERRE.htm)
(http://morillon.citeweb.net/La_guerre_des_boutons.htm)
Si, donc, bien ! Quel est le second membre important (implicite) d'une
proposition conditionnelle ? Je traduis "en bon français"
la phrase citée ci-dessus et j'ai : "Si j'avais su alors
je ne serais pas venu". Nous avons trouvé le 'alors'.
Et là, on voit l'élégance, la joliesse de Logo par
rapport à d'autres langages qui testent avec des 'tant que' ; style
: "Tant que je ne savais pas, alors je venais" ... Les
matheux ne parlent-ils pas français ? Une remarque,
Jean-François L. ?...
Pardon ? Ah oui : j'ai prononcé le mot 'récursif' plus
haut ; c'était pour toi, collègue ! Tu n'es pas obligé
d'en parler aux enfants. Pourtant, tu pourrais le faire. C'est quoi la récursivité
? Une boucle ? Un serpent qui se mord la queue, tu trouves que c'est récursif,
toi ?
(http://www.rigoler.com/jeux/the_znake/znake.htm)
; 'puré' : il est 'duraille' celui-là !...
Un peu de sérieux, S.V.P. ! La récursivité, donc
: (http://www.enseignement.polytechnique.fr/profs/informatique/Francois.Morain/PolyTC/www-main009.html)
(http://www.angelfire.com/pa/mswlogoinfo/actirec3.html)
; tiens donc ?!...
(http://www.ens-lyon.fr/~lprylli/hanoi/hanoi.html)
; génial ! Et ma version :
(/clsommai.html) ; cliquer sur La
tour de Hanoï.
"Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément."
Nicolas BOILEAU (1636-1711)
(http://poesie.webnet.fr/poemes/France/boileau/2.html)
En d'autres termes : c'est à toi de voir si tu te sens d'expliciter
cette notion à tes enfants. Pour Seymour Papert, le (tout) mot exact
peut être nommé à un enfant ; il suffit de bien savoir,
ensuite, le mettre à sa portée. Ce n'est pas mon propos, ici.
Nous allons donc, à la page suivante, continuer à montrer
avec/par des exemples.
© Olivier Schmidt-Chevalier - 2001 |