L'objectif des créateurs de Logo , Papert et Minski, était d'utiliser la puissance de l'outil informatique dans les tâches d'enseignement. Plus que tout autre langage, Logo a été conçu dans le but de démystifier les ordinateurs et la programmation. Tout adepte de Logo s'oppose naturellement à l'utilisation injustifiée des jargons et à toute tendance à faire de l'informatique un domaine à part. Logo est un langage issu de Lisp. Comme lui, c'est un langage fonctionnel. Comme lui, c'est un langage interprété, ce qui permet une utilisation directe sans passer par une phase de compilation.
Cet interpréteur Logo en français, bien qu'encore inachevé, fonctionne (presque) parfaitement. Il a été écrit en Javascript et vous pourrez l'éxécuter dans tout navigateur récent, sans installation ni module externe. L'affichage 3D a été testé sur Firefox 38 et Chrome 43. Vous pourrez en télécharger le code source sur ma page Github si vous souhaitez l'adapter à vos propres besoins. Pour vous faire une idée, voici quelques exemples de procédures Logo en français .
Executer Reinitialiser
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Gestion de la tortue Logo Commande Alias Description Exemples AVANCE n AV n Demande à la tortue d'avancer de n pas AVANCE 10 AV 5 * 3 ATTENDS n Demande à la tortue de faire une pause de n /60 de secondes. attends 100 BAISSECRAYON BC Abaisse le crayon de la tortue. BC BaisseCrayon CACHETORTUE CTO Masque la tortue. Cto CacheTortue CAP Renvoie l'orientation de la tortue Montre CAP DROITE n DR n TD n Demande à la tortue de pivoter de n degrés vers la droite Droite 90 TD 45 FIXECAP n Fixe le cap de la tortue (en degrés) FixeCap 90 FIXECOULEURCRAYON couleur FCC couleur Fixe la couleur du crayon. Les couleurs prédéfinies sont BLANC, BLEU, BRUN, CYAN, GRIS, JAUNE, MAGENTA, NOIR, ROUGE, VERT. FCC [ 64 128 0 ] FixeCouleurCrayon bleu FIXEPOS position Déplace la tortue à la position spécifiée. Une position est une liste de 2 nombres, les coordonnées X et Y. FIXEPOS [ -100 0 ] FIXEX n Fixe la position x de la tortue FixeX 100 FIXEXY n1 n2 Déplace la tortue à la position x=n1 et y=n2 FixeXY 0 0 FIXEY n Déplace la tortue à la position y = n FixeY 100 GAUCHE n GA n TG n Demande à la tortue de pivoter de n degrés vers la gauche Gauche 90 Tg 45 ORIGINE Remet la tortue en son état d'origine: place la tortue au centre de l'écran et réoriente la tortue vers le haut, c'est-à-dire avec un cap de 0 degrés. Origine RECULE n RE n Demande à la tortue de reculer de n pas Recule 10 RE 5 * 3
Fonctions numériques Commande Alias Description Exemples ARRONDI n Renvoie l'entier le plus proche de n Avance ARRONDI 20 / 3 COS n Renvoie le cosinus du nombre passé en paramètre COS 100 DIFFERENCE n1 n2 n3... - Renvoie la différence des nombres passés en paramètres (n1 - n2 -n3...) Gauche Difference 100 45 HASARD n Renvoie un nombre aléatoire compris entre 0 et n Droite HASARD 360 LOG10 n Renvoie le logarithme de n Recule Log10 100 MOINS n - Renvoie le négatif du nombre passé en paramètre avance 10 PI Renvoie le nombre PI Droite PI PRODUIT n1 n2 n3... * Renvoie le produit des nombres passés en paramètres (n1 * n2 * n3...) Produit 1 2 3 4 5 PUISSANCE n1 n2 ^ Renvoie n1 à la puissance n2 Recule Puissance 2 3 QUOTIENT n1 n2 / Renvoie le quotient des nombres passés en paramètre (n1 / n2) Quotient 12 4 RESTE n1 n2 % Renvoie le reste de la division entière de n1 par n2 Reste 10 3 RACINE n Renvoie la racine carrée du nombre passé en paramètre Racine 144 SIN n Renvoie le sinus du nombre passé en paramètre TG Sin 200 SOMME n1 n2 n3... + Renvoie la somme des nombres passés en paramètres Recule Somme 1 2 3 4 5
Fonctions de listes Commande Alias Description Exemples CHOIX liste Renvoie un élément au hasard de la liste passée en paramètre. Avance Choix [ 10 20 15 12 ] COMPTE liste Renvoie le nombre d'éléments de la liste. Montre Compte [ un petit lapin ] DERNIER liste Renvoie le dernier élément de la liste passée en paramètre. Avance Dernier [ 10 20 15 12 ] ENLEVE n liste Renvoie la liste sans l'élément n. Donne "lst Enleve 15 [ 10 20 15 12 ] INVERSE liste Renvoie la liste inversée. Donne "lst Inverse [ 5 4 3 2 1 ] ITEM n liste Renvoie le nième élément de la liste passée en paramètre. Avance Item 2 [ 10 20 15 12 ] LISTE n1 n2 n3... Renvoie la liste composée des éléments n1, n2, n3... fcc Liste 255 0 255 METSDERNIER n liste MD n liste Place l'élément n à la fin de la liste. Donne "lst MetsDernier 5 [ 1 2 3 4 ] METSPREMIER n liste MP n liste Place l'élément n au début de la liste. Donne "lst MetsPremier 1 [ 2 3 4 5 ] MELANGE liste Mélange les éléments de la liste. Donne "lst Melange [ Coeur Carreau Pique Trefle ] PREMIER liste PREM liste Renvoie le premier élement de la liste. Gauche Prem [ 45 90 135 180 225 ] SAUFDERNIER liste SD liste Renvoie la liste sans son dernier élement. Donne "lst SD [ 1 2 3 4 5 6 ] SAUFPREMIER liste SP liste Renvoie la liste sans son premier élement. Donne "lst SaufPremier [ 0 1 2 3 4 5 ] VIDE? liste Renvoie VRAI si la liste est vide. Montre Vide? [ ]
Fonctions logiques et de comparaisons Commande Alias Description Exemples EGAL? n1 n2 = Renvoie vrai si n1 = n2. Egal? 10 2*5 ET n1 n2 & Renvoie VRAI si n1 ET n2 sont vrai. ET (10>2) (2>5) NONEGAL? n1 n2 <> Renvoie vrai si n1 est different de n2. NonEgal? 10 2*5 OU n1 n2 | Renvoie VRAI si n1 OU n2 est VRAI. OU (10>2) (2>5) PLUSGRAND? n1 n2 > Renvoie vrai si n1 > n2. PlusGrand? 10 2*5 PLUSPETIT? n1 n2 < Renvoie vrai si n1 < n2. PlusPetit? 10 2*5
Structures de contrôle Commande Alias Description Exemples EXECUTE liste Execute les instructions comprises dans la liste. Execute [AV 10 TD 90] REPETE n liste Répète n fois les instructions de la liste. REPETE 4 [Avance 10 Droite 90] SI condition liste Si la condition est VRAI execute les instructions de la liste. SI (10>2) [RE 10 TD 20]
Choisissez un exemple : Formes de base Dessins simples Introductory Programming Using Logo Exemples de XLogo Triangles Dragon Arbres Courbes récursives A partir de données Au hasard Avec obstables Tests de base Charger dans l'éditeur
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Dans l'éditeur Logo, vous pouvez utiliser les touches Ctrl-Espace pour compléter automatiquement un mot.
Vous pouvez télécharger votre dessin à partir d'ici (en PNG) ou de là (en SVG) .
A propos du langage logo et de ses applications dans l'enseignement, vous pourrez trouver d'autres informations intéressantes sur le site d' Olivier Schmidt-Chevalier . Je vous conseille également l'excellent interpréteur Logo de Joshua Bell (en anglais mais bien meilleur que le mien pour ce qui est de la vitesse d'exécution !). Ces quelques pages à propos des tortues Jeulin sont aussi très intéressantes.
Il reste encore pas mal de chose à améliorer sur cette version. Notamment la gestion des erreurs et la visualisation 3D. Si vous avez le temps, jetez un oeil sur l'affichage 3D, je pense qu'il y a des choses sympas à faire de ce côté-là.