CHRONOS et LIP
(-; Vous avez lu les conventions ? Il vaudrait mieux !... ;-)
Pour la partie Chronos de ce chapitre, il faudrait avoir à sa disposition
d'anciennes versions de Logo : celle de LCSI
pour Apple, celle d'ACT Informatique pour Goupil PC. Avec celles-ci, il
était possible de réaliser les aiguilles tour à tour
visibles et invisibles qui, en plus, "tournaient", et dont il
ne demeurait aucune trace intempestive. Et ce, de manière "naturelle"
(ce qui est un des atout de la pédagogie Logo). Avec le Logo de Profil,
c'est une autre histoire et je veux bien que vous me la racontiez ... Moi,
ci-dessous, j'ai choisis une "astuce" disons, désespérée
...
En ce qui concerne la version de JFL ; disons
que Windows ne permet pas ce genre de choses ...
Et alors, on passera directement à la partie LIP ...
Le temps qui passe :
POUR CADRAN ;;avec minutes et 1/4 d'heures
REPETE 60 [LC AV 90 BC AV 4 LC RE 94 TD 6 BC]
REPETE 4 [LC AV 92 BC AV 8 LC RE 100 TD 90 BC]
FIN
POUR AIG ;;la trotteuse
SI EGAL? :X 59 [FCC 0 POINT] ;;mais quelles sont les 2 couleurs
retenues
;;sachant que je travail toujours sur fond noir ?
SI EGAL? :X 60 [DONNE "X 0 FCC 1 POINT TD 6]
SI EGAL? :Y 3600 [RECYCLE DONNE "Y 0 DONNE "E :E + 1 POINT2 :E]
FCC 1 AV 80 ATTENDS 220 FCC 0 RE 80 FCC 1 TD 6 CPT CPTB ATTENDS 220
;;vérifier la valeur des ATTENDS. Vu celle choisie ici, la
valeur des AV et l'utilisation de RECYCLE,
;;quelles étaient : la résolution de mon écran, la
vitesse de l'horloge de mon UC, l'époque où j'écrivais
cette
;;version de cette ensemble de procédures ?!... ;-)
AIG
FIN
POUR POINT ;;les minutes. Attention
: depuis, ce mot est devenue une PRIMITIVE Logo
;;et, contrairement à moi ici, "fait" dans le pixel.
LC AV 104 BC AV 10 LC RE 114 BC
FIN
POUR POINT2 ;;les heures
LC FPOS [-20 120] FCAP 0 TD 90 AV :E TG 90 BC
FCC 1 AV 20 RE 20
LC FPOS [0 0] BC
FIN
POUR CPT
DONNE "X :X + 1
FIN
POUR CPTB
DONNE "Y :Y + 1
FIN
POUR CHRONOS ;;le voici enfin !...
VE CT CADRAN
DONNE "X 0 DONNE "Y 0 DONNE "E 0
AIG
FIN
Pour CHRONOS, on peut ajouter 3, 6, 9 et 12 aux endroits idoines avec
le TT (TORTUETEXTE). Exemple :
LC FCAP [0 125] BC TT 12
Je parle d'une possibilité qu'offrait le FLOGO d'Atari ...
L'heure s.v.p. :
Eh bien non : je ne vais ni tout recopier, ni jouer au Copier/Coller
... Ces deux procédures figurent déjà dans la Page
Logo & Lip à Horloge dans le Contenu
de Papy Logo auquel je vous renvoie. Hypertextuel, non ?!... :-)
Vous voulez vraiment la version écrite pour MO5 de Thomson ? Allez, je ne suis pas 'chien' et vous renvoie à une version plus récente. Elle se trouve à Musique dans l'incontournable Contenu.
Autres jeux sur les listes (certaines procédures sont déjà des primitives du langage) :
Attention : déjà
dit ailleurs (mais où ?!...), lorsque vous lisez :FOO
et/ou "BAR, vous lisez bien :FOO et "BAR ;
sans espace après les : ou les ". C'est QUUX claire, non ;-)
POUR COMPTER :LISTE
SI VIDE? :LISTE [RENDS 0] [RENDS + 1 COMPTER SP :LISTE] ;;SP pour
saufpremier
FIN
?ECRIS COMPTER [A Z E R T Y U I O P] retourne 10
POUR OCCUR :X :LISTE
SI VIDE? :LISTE [RENDS 0] [SI EGAL? :X PREMIER :LISTE !
[RENDS + 1 OCCUR :X SP :LISTE] [RENDS OCCUR :X SP :LISTE]]
FIN
?ECRIS OCCUR "A "BANANE retourne 2
POUR EFFACE :EL :LISTE ;;élément
SI VIDE? :LISTE [RENDS []] [SI EGAL? PREMIER :LISTE :EL !
[RENDS EFFACE :EL SP :LISTE] [RENDS METP PREM :LISTE !
EFFACE :EL SP :LISTE]]
;;[] liste vide, NIL en LISP - METP pour METPREMIER
FIN
?ECRIS EFFACE "A [A B C D] retourne B C D
POUR REMPLACE :E1 :E2 :L
SI VIDE? :L [RENDS []] [SI EGAL? :E1 PREM :L [RENDS METP :E2 !
REMPLACE :E1 :E2 SP :L] [RENDS METP PREM :L REMPLACE :E1 :E2 !
SP :L]]
FIN
?REMPLACE "A "B [A B C D] retourne B B C D
Histoire de B.D. :
Attention : P_Logo DOS ne connait pas RETOUNE et lui péfère RENDS utilisée dans les procédures ci-dessus ; je ne "corrige" pas celles ci-dessous puisque d'autres versions du langage (JFL, XLogo) respectent le RETOURNE. De même, PREMIER et DERNIER deviennent PREM et DER en P_Logo...
POUR DISMOI :LIST :NOM ;;merci Alberto !
SI VIDE? :LIST [RETOURNE [JE NE SAIS PAS]]
SI EGAL? :NOM PREMIER :LIST [RETOURNE PREMIER SP :LIST] !
[RETOURNE DISMOI SP :LIST :NOM]
FIN
POUR EXEMPLE
DONNE "COLOMBIE [HAB 28000000 PROD [MAIS BLE CAFE RIZ] !
ETHNIES [INDIEN METIS BLANC NOIR MULATRE]]
FIN
?ECRIS DISMOI :COLOMBIE "RELIGIONS retourne
JE NE SAIS PAS
?ECRIS DISMOI :COLOMBIE "HAB retourne 28000000
;;chiffre début années 1980...
Je ne définirais point ce que sont les palindromes ; il y a des encyclopédies et des moteurs de recherches pour cela. Je mentionnerais uniquement une source de 'palindromes de répliques' dans un dialogue : le "Canon cancrizans" dans Gödel, Escher, Bach de Douglas Hofstadter (ouvrage figurant en bibliographie).
Des outils :
POUR INVERSEM :M ;;mot
SI VIDE? :M [RETOURNE "] ;;mot vide et liste vide,
ce n'est pas la même chose...
RETOURNE MOT DERNIER :M INVERSEM SD :M ;;saufdernier
FIN
?ECRIS INVERSEM "OLIVIER retourne REIVILO
POUR INVERSEL :L ;;liste
SI VIDE? :L [RETOURNE []]
RETOURNE PHRASE DERNIER :L INVERSEL SD :L
FIN
?ECRIS INVERSEL [A Z E] retourne E Z A
D'un outil à un autre :
POUR PALINDROME :M
SI EGAL? :M INVERSEM :M [RETOURNE "VRAI] [RETOURNE "FAUX]
FIN
?ECRIS PALINDROME "TOTO retourne FAUX
?ECRIS PALINDROME "UBU retourne VRAI
De plus en plus récursif :
POUR PALIN :N ;;pourquoi passer des lettres aux chiffres
(nombres) ? Car je "fais de l'informatique"
;;avec un Computer, un Bilgisayar,
banane :-)
SI PALINDROME :N [ECRIS :N STOP]
ECRIS PH PH PH PH :N "PLUS INVERSEM :N "EGAL SOMME :N INVERSEM
:N
PALIN :N + INVERSEM :N
FIN
?PALIN 78 retourne :
78 PLUS 87 EGAL 165
165 PLUS 561 EGAL 726
726 PLUS 627 EGAL 1353
1353 PLUS 3531 EGAL 4884
4884
?;;LOGO vous rend la main - gentil,
non !?!...
Dédié à Umberto ECO !
Ce programme doit tout à Dominique (lors de son passage par DiaInformatica).
Il est possible de le réaliser de manières différentes
(à chercher - si vos solutions "tournent" et que vous me
les envoyiez, je les afficherais en ces pages).
Il est aussi possible de l'inclure dans un programme plus vaste capable
de vous dire si votre mot est un PALINDROME et, avec FACT,
combien de solutions sont nécessaires ; sachant, avec COMPTE,
combien de lettres composent votre mot !
Tous ces mots sont soit des Primitives, soit à chercher dans (par)
le Sommaire en bas (fin)de page.
POUR ANA :MOT
SI LISTE? :MOT [STOP]
NAGRA " :MOT COMPTE :MOT
FIN
POUR NAGRA :X :Y :Z
SI :Z = 0 [STOP]
SI COMPTE :Y = 1 [ECRIS MOT :X :Y]
NAGRA MOT :X PREMIER :Y SP :Y COMPTE SP :Y
NAGRA :X MOT SP :Y PREMIER :Y :Z - 1
FIN
Tenter un ANA "BAR - Attention
= "BAR est ce que vous mettez dans le :MOT de ANA et n'a rien
à voir avec la Primitive MOT utilisée dans la procédure
NAGRA. Ce programme et celui que je propose quelques lignes plus haut ont
parfaitement tournés sous le PLogo pour Atari ; toutefois, lors de
vos premiers tests, ne tentez pas de jouer avec un mot de plus de trois
lettres...