LogoPlus 
                           et
                  les autres versions 
                           du
                     langage LOGO.

 

Comme cela a été écrit dans une autre page, la conception de LogoPlus s'est appuyée sur l'analyse des versions qui ont été développées dans les années quatre-vingts, au moment du Plan Informatique pour Tous (Logo Thomson, Logo  Goupil, MicraLogo, Logo Apple ...). Le développement de LogoPlus s'est amélioré en le faisant fonctionner  sur des exemples de procédures LOGO écrits pour d'autres versions très diverses telles que PLogo, JFLogo (aujourd'hui introuvable) et XLogo. Le concept des fenêtres, appliqué à Logoplus rend cette version plus actuelle que les versions qui ont été utilisées dans l'Education Nationale. Les nombreuses procédures téléchargeables depuis les pages de ce site démontrent que Logoplus mérite pleinement le titre de version du langage LOGO (et c'est la seule version qui soit entièrement pensée en Français et pour promouvoir une syntaxe de programmation en Français). A signaler enfin une version réduite (et gratuite) du langage LOGO, intitulée M-LOGO, tournée vers le graphisme et développée également par un enseignant, Didier Mauré, laquelle est téléchargeable avec quelques exemples depuis son site . Le fait de développer une version LOGO est assez difficile pour mériter d'être encouragé.
1) Des exemples de procédures LOGO.

                                                       

 
a) Une procédure sur les tables de multiplication.
    Pour télécharger le texte de programmation LOGO, cliquer ici .
 
b) Un village:
Pour télécharger le texte de programmation LOGO, cliquer ici .
c) Des motifs graphiques:
   Pour télécharger le texte de programmation LOGO, cliquer ici .
 
d) Sur la symétrie:
   Pour télécharger le texte de programmation LOGO, cliquer ici .
 
e) Un système solaire:
  Pour télécharger le texte de programmation LOGO, cliquer ici .
 
f) Un cadre géométrique:
  Pour télécharger le texte de programmation LOGO, cliquer ici .
 
g) Un voilier solaire:
  Pour télécharger le texte de programmation LOGO, cliquer ici .
 
h) Un poisson:
  Pour télécharger le texte de programmation LOGO, cliquer ici .
 
i) Un motif graphique aléatoire:
Pour télécharger le texte de programmation LOGO, cliquer ici .
 
j) Une orange:
    Pour télécharger le texte de programmation LOGO, cliquer ici .
 
k) Dessiner, Diriger, Tracer.
 
 Pour télécharger le texte de programmation LOGO, cliquer ici .
 

                                                             

 
 l) L'économiseur d'écran:
Pour télécharger le texte de programmation LOGO, cliquer ici .
 
m) Une fonction graphique:
 Pour télécharger le texte de programmation LOGO, cliquer ici .
(déjà visible à la page des Images mathématiques )
 
n) Des ellipses concentriques:
Pour télécharger le texte de programmation LOGO, cliquer ici .
 
o) Une rosace:
Pour télécharger le texte de programmation LOGO, cliquer ici .  
 
p) De la symétrie:
Pour télécharger le texte de programmation LOGO, cliquer ici .
 
q) D'autres symétries:
 Pour télécharger le texte de programmation LOGO, cliquer ici .
 
r) Une grille:
 Pour télécharger le texte de programmation LOGO, cliquer ici .  
 
s) Une oeuvre picturale moderne:
Pour télécharger le texte de programmation LOGO, cliquer ici .
 
t) Une spirale:
Pour télécharger le texte de programmation LOGO, cliquer ici .
 
u) Un arbre (récursif):
Pour télécharger le texte de programmation LOGO, cliquer ici .
 
v) Un escargot:
 Pour télécharger le texte de programmation LOGO, cliquer ici .

2) La version M-LOGO de Didier Mauré:

 
Malheureusement, il semble que cette version soit "gelée" et qu'aucune amélioration ne sera plus apportée à M-LOGO .
 
3) Que veut dire LogoPlus 100% français?
 
Certains messages Internet envoyés pour faire connaître LogoPlus précisaient que c'est une version 100% française du langage LOGO. Cette expression a suscité chez certaines personnes beaucoup d'émoi et une clarification peut être nécessaire. En fait, par l'expression 100% français, il faut d'abord comprendre que le code-source de LogoPlus a été entièrement écrit sans aucune aide des pionniers-constructeurs du langage LOGO (Feurzeig, Papert...). Le code-source américain d'origine n'a ainsi pas été requis pour développer LogoPlus. Pourtant, cette version réalise des prouesses, notamment sur le traitement des listes, lequel a été accéléré grâce à des algorithmes spécialement écrits à cette intention. Ensuite, un soin particulier a été fait pour permettre aux utilisateurs (les élèves) d'écrire un texte de programmation avec des primitives complètes, pour rapprocher davantage LogoPlus de leur langue maternelle, même si des abréviations ont été implémentées plus tard. Cette expression est donc pleinement justifiée mais comme elle a été mal comprise, il faut simplement la remplacer par le mot francophone, qui est plus significatif et moins sujet à des dérives partisanes.
 
4) La primitive EXEC .
 
Il existe dans P_Logo, une primitive EXEC qui permet de "passer" des consignes à la tortue alors qu'un programme LOGO est déjà en train de s'exécuter. Bien que cette possibilité soit risquée d'un point de vue programmation  (LOGO ne peut pas vérifier la validité de la consigne reçue), LogoPlus peut, dans une certaine mesure, être doté de cette possibilité, à la condition de placer dans l'éditeur le texte de programmation suivant qui émule la fonction EXEC de ces versions. Seule contrainte tout de même: les arguments des consignes transmises doivent être directement calculables, car ils ne sont pas complètement analysés. Voici ce texte, qui peut être étendu à d'autres primitives:
 
POUR EXEC :L
TESTE LISTE? :L // On teste pour savoir si la consigne est suivie d'un argument. //
SIFAUX [ // Il n'y a pas d'argument; //
SI ( :L = "EFF ) OU ( :L = "EFFACE ) EFF
SI ( :L = "EFFTXT ) OU ( :L = "EFFACETEXTE ) EFFTXT
SI ( :L = "ORIGINE ) ORIGINE
SI ( :L = "DEROULE ) DEROULE
SI ( :L = "STOP ) STOP
SI ( :L = "MT ) OU ( :L = "MONTRETORTUE ) MT
SI ( :L = "CT ) OU ( :L = "CACHETORTUE ) CT
SI ( :L = "BC ) OU ( :L = "BAISSECRAYON ) BC
SI ( :L = "LC ) OU ( :L = "LEVECRAYON ) LC
]
SIVRAI [ // Il y a un argument. //
SI (( PREM :L ) = "AV ) OU (( PREM :L ) = "AVANCE ) [
DONNE "argument DER :L
TESTE NOMBRE? :argument
SIFAUX SI (( ITEM :argument 2 ) = ": ) DONNE "argument DETRUIS :argument
// On vérifie s'il s'agit d'un nom de variable ou d'un argument numérique. //
TESTE NOMBRE? :argument
SIFAUX DONNE "argument CHOSE "argument
SI NOMBRE? :argument AV :argument
]
SI (( PREM :L ) = "RE ) OU (( PREM :L ) = "RECULE ) [
DONNE "argument DER :L
TESTE NOMBRE? :argument
SIFAUX SI (( ITEM :argument 2 ) = ": ) DONNE "argument DETRUIS :argument
// On vérifie s'il s'agit d'un nom de variable ou d'un argument numérique. //
TESTE NOMBRE? :argument
SIFAUX DONNE "argument CHOSE "argument
SI NOMBRE? :argument RE :argument
]
SI (( PREM :L ) = "TD ) OU (( PREM :L ) = "TOURNEDROITE ) [
DONNE "argument DER :L
TESTE NOMBRE? :argument
SIFAUX SI (( ITEM :argument 2 ) = ": ) DONNE "argument DETRUIS :argument
// On vérifie s'il s'agit d'un nom de variable ou d'un argument numérique. //
TESTE NOMBRE? :argument
SIFAUX DONNE "argument CHOSE "argument
SI NOMBRE? :argument TD :argument
]
SI (( PREM :L ) = "TG ) OU (( PREM :L ) = "TOURNEGAUCHE ) [
DONNE "argument DER :L
TESTE NOMBRE? :argument
SIFAUX SI (( ITEM :argument 2 ) = ": ) DONNE "argument DETRUIS :argument
// On vérifie s'il s'agit d'un nom de variable ou d'un argument numérique. //
TESTE NOMBRE? :argument
SIFAUX DONNE "argument CHOSE "argument
SI NOMBRE? :argument TG :argument
]
SI (( PREM :L ) = "FCAP ) OU (( PREM :L ) = "CAP ) [
DONNE "argument DER :L
TESTE NOMBRE? :argument
SIFAUX SI (( ITEM :argument 2 ) = ": ) DONNE "argument DETRUIS :argument
// On vérifie s'il s'agit d'un nom de variable ou d'un argument numérique. //
TESTE NOMBRE? :argument
SIFAUX DONNE "argument CHOSE "argument
SI NOMBRE? :argument FCAP :argument
]
SI (( PREM :L ) = "FIXEX ) [
DONNE "argument DER :L
TESTE NOMBRE? :argument
SIFAUX SI (( ITEM :argument 2 ) = ": ) DONNE "argument DETRUIS :argument
// On vérifie s'il s'agit d'un nom de variable ou d'un argument numérique. //
TESTE NOMBRE? :argument
SIFAUX DONNE "argument CHOSE "argument
SI NOMBRE? :argument FIXEX :argument
]
SI (( PREM :L ) = "FIXEY ) [
DONNE "argument DER :L
TESTE NOMBRE? :argument
SIFAUX SI (( ITEM :argument 2 ) = ": ) DONNE "argument DETRUIS :argument
// On vérifie s'il s'agit d'un nom de variable ou d'un argument numérique. //
TESTE NOMBRE? :argument
SIFAUX DONNE "argument CHOSE "argument
SI NOMBRE? :argument FIXEY :argument
]
SI (( PREM :L ) = "TRAIT ) [
DONNE "argument DER :L
TESTE NOMBRE? :argument
SIFAUX SI (( ITEM :argument 2 ) = ": ) DONNE "argument DETRUIS :argument
// On vérifie s'il s'agit d'un nom de variable ou d'un argument numérique. //
TESTE NOMBRE? :argument
SIFAUX DONNE "argument CHOSE "argument
SI NOMBRE? :argument TRAIT :argument
]
SI (( PREM :L ) = "FCC ) OU (( PREM :L ) = "COULEURTORTUE ) [
DONNE "argument DER :L
TESTE NOMBRE? :argument
SIFAUX SI (( ITEM :argument 2 ) = ": ) DONNE "argument DETRUIS :argument
// On vérifie s'il s'agit d'un nom de variable ou d'une couleur. //
TESTE NOMBRE? :argument
SIFAUX DONNE "argument CHOSE "argument
TESTE ( NOMBRE? :argument ) OU ( COULEUR? :argument )
SIVRAI FCC :argument
]
SI (( PREM :L ) = "FCFG ) OU (( PREM :L ) = "COULEURFOND ) [
DONNE "argument DER :L
TESTE NOMBRE? :argument
SIFAUX SI (( ITEM :argument 2 ) = ": ) DONNE "argument DETRUIS :argument
// On vérifie s'il s'agit d'un nom de variable ou d'une couleur. //
TESTE NOMBRE? :argument
SIFAUX DONNE "argument CHOSE "argument
TESTE ( NOMBRE? :argument ) OU ( COULEUR? :argument )
SIVRAI FCFG :argument
]
SI (( PREM :L ) = "VERS ) [
TESTE LISTE? :L
SIVRAI [
DONNE "argument DETRUIS DER :L
VERS :argument
]
SIFAUX [
DONNE "argument SP :L TRANSFORME :argument
DONNE "argument ITEM :argument 1
TESTE LISTE? :argument
SIFAUX SI (( ITEM :argument 2 ) = ": ) DONNE "argument DETRUIS :argument
// On vérifie s'il s'agit d'un nom de variable ou d'une liste. //
SI LISTE? :argument VERS :argument
]
]
SI (( PREM :L ) = "VA ) [
TESTE LISTE? :L
SIVRAI [
DONNE "argument DETRUIS DER :L
VA :argument
]
SIFAUX [
DONNE "argument SP :L TRANSFORME :argument
DONNE "argument ITEM :argument 1
TESTE LISTE? :argument
SIFAUX SI (( ITEM :argument 2 ) = ": ) DONNE "argument DETRUIS :argument
// On vérifie s'il s'agit d'un nom de variable ou d'une liste. //
SI LISTE? :argument VA :argument
]
]
SI (( PREM :L ) = "POINT ) [
TESTE LISTE? :L
SIVRAI [
DONNE "argument DETRUIS DER :L
POINT :argument
]
SIFAUX [
DONNE "argument SP :L TRANSFORME :argument
DONNE "argument ITEM :argument 1
TESTE LISTE? :argument
SIFAUX SI (( ITEM :argument 2 ) = ": ) DONNE "argument DETRUIS :argument
// On vérifie s'il s'agit d'un nom de variable ou d'une liste. //
SI LISTE? :argument POINT :argument
]
]
]
FIN
EFFTXT EFF
ECL [ Tape STOP p o u r terminer. ]
TANTQUE 5 < 6
[
DONNE "consigne LISLISTE
EXEC :consigne
]

Pour télécharger le texte de programmation LOGO, cliquer ici .

Haut de page >>

Retourner à la page d'accueil >>

(pour nos amis germanophones)
Rückkehr >>