-
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) Les procédures d'Olivier
Schmidt-Chevalier.

-
- 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, 3 outils d'Olivier Schmidt-Chevalier d'après un modèle
- par Seymour Papert
(référence : Le LOGO sur APPLE - Harold Abelson -
- Cedic/Nathan, 1984):

- Pour télécharger le texte de
programmation LOGO, cliquer ici
.
-
- 2) Les procédures de
Jean-François Lucas.

-
-
a) L'économiseur d'écran:
-
-
Pour télécharger le texte de
programmation LOGO, cliquer ici
.
-
- b) Une fonction graphique:

- Pour télécharger le texte de
programmation LOGO, cliquer ici
.
- (déjà visible à la page des Images
mathématiques )
-
- c) Des ellipses concentriques:

- Pour télécharger le texte de
programmation LOGO, cliquer ici
.
-
- d) Une rosace:

- Pour télécharger le texte de
programmation LOGO, cliquer ici
.
-
- e) De la symétrie:

- Pour télécharger le texte de
programmation LOGO, cliquer ici
.
-
- f) D'autres symétries:

- Pour télécharger le texte de
programmation LOGO, cliquer ici
.
-
- g) Une grille:

- Pour télécharger le texte de
programmation LOGO, cliquer ici
.
-
- h) Une oeuvre picturale moderne:

- Pour télécharger le texte de
programmation LOGO, cliquer ici
.
-
- i) Une spirale:

- Pour télécharger le texte de
programmation LOGO, cliquer ici
.
-
- j) Un arbre (récursif):

- Pour télécharger le texte de
programmation LOGO, cliquer ici
.
-
- k) Un escargot:

- Pour télécharger le texte de
programmation LOGO, cliquer ici
.
3) 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 .
-
- 4) 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.
-
- 5) 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 >>