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

 Retour

Page suivante