en cours de rédaction
LOGO fait partie de la famille des langages orientés objet.
A l'origine n'existe que 2 types d'objets : les MOTS et les LISTES.
Les MOTS sont des chaînes de caractères. Formellement, les nombres ne sont que des mots particuliers dont la valeur est évaluée automatiquement. Les LISTES sont des suites ordonnées d'objets.
Un mot est signalé par un guillemet, une liste par des crochets. Si un mot n'est pas précédé d'un guillemet, il est évalué comme une procédure (voir ci-dessous).
Ces objets peuvent servir d'entrées - d'ARGUMENTS - à des OPÉRATIONS ou des COMMANDES.
Une OPÉRATION sert à créer un nouvel objet à partir des objets entrant (formellement des ARGUMENTS), qu'elle retourne à une autre opération ou à une COMMANDE. Une COMMANDE dit ce qu'il (l'ordinateur ou le robot) doit faire de cet objet.
Une ligne de programmation est et ne peut être que formulée qu'en terme d'INTRUCTION. Une instruction se compose impérativement d'une - et d'une seule - COMMANDE, suivie d'un objet ou d'une ou de plusieurs OPÉRATIONS qui retournent l'objet qu'elles créent à l'éventuelle opération qui la précède, ou à la commande.
C'est pourquoi taper simplement 5 + 5 (ou SOMME [5 5]) entraîne un message d'erreur du type "Ne sait que faire avec 10", puisque que l'instruction est incomplète du fait de l'absence de commande. De même ECRIS tout seul fera apparaître une message "Pas assez d'entrée pour..." puisque, cette fois-ci l'instruction est incomplète du fait de l'absence d'objet.
Par contre, dans l'instruction ECRIS 5 + 5 affiche 10, l'opération d'addition sur des mots directement évalués comme des nombres retournant son résultat à la commande d'affichage, De même, dans le micromonde "Tortue", AVANCE 5 + 5, fera se mouvoir le robot tortue de 10 pas. Par contre, ECRIS [5 + 5] produira un affichage du texte 5 + 5 puisque il s'agit d'afficher le contenu d'une liste signalée par les [...].
Un groupe d'instructions peut toutefois être écrit sur une même ligne. Sera, donc, licite :
AVANCE SOMME [5 5] TOURNEDROITE 360/10
La seule exception à la règle de commande unique réside dans l'emploi de la primitive REPETE qui accepte comme entrée une liste d'instructions.
REPETE 360 [AV 1 TD 1]
(formule du cercle en géométrie LOGO).
Soit une instruction qui commande de répéter 360 fois, deux instructions
Les mots prédéfinis dans le langage sont appelés PRIMITIVES du langage.
Ce langage de base peut s'enrichir de PROCÉDURES' créées par l'utilisateur. Une fois définie, ces procédures font faire partie intégrante du langage et obéissent aux mêmes règles d'écriture. Leurs définitions sont écrites et corrigée dans l'éditeur ED ou, dans certaines versions, définies directement à l'aide de la commande "POUR", suivie du nom de la procédure (ce qui facilite le passage de la commande directe vers la programmation)
Une procédure comprend trois partie : son nom, les commandes et opérations que son activation déclenchera et le mot FIN. Elle peut être définie comme nécessitant une ou plusieurs entrées qui, sont, en réalité des variables pouvant stocker localement des objets. Dans ce cas, leur utilisation exigera impérativement l'introduction d'objets. Taper un mot qui n'est pas une procédure ou une primitive sera signalé comme une erreur "ne sait comment..."
LOGO se présente comme un langage évolutif : les "primitives" ne sont, en réalité que des procédures build in.
Dès lors, en toute logique, une procédure doit pouvoir comprendre des procédures, y compris elle-même', ce qui confère à LOGO la puissance d'un langage récursif.
POUR RECURSION
RECURSION
FIN
est donc licite et crée une boucle sans fin.
Toujours aussi logiquement, une procédure peut être une opération en utilisation la primitive RETOURNE. Ainsi si on définit la procédure suivante :
POUR MULTIPLICATION :X :Y
RETOURNE PRODUIT [:X :Y]
FIN
ECRIS MULTIPLICATION 5 6
affichera 30
Force est de reconnaître qu'en réalité, peu de versions de Logo intègrent ces aspects.
Notation mathématique : préfixe ou infixe.
Exemple :
Formellement, seule le forme préfixe répond aux exigences de syntaxe comme quoi les objets suivent une opération à laquelle ils servent d'arguments. Tout comme l'interprétation directe d'un nombre, la forme infixe n'existe que parce que cette notation est familière.
Le terme "Tortue" relève d'une tradition née vers 1950 avec les premiers robots construits par le neurophysiologiste William Grey Walter, pionnier de la cybernétique avec ce qu'il appellera ses "tortoises".
A l'origine un robot de sol, la "tortue" est un robot sur l'écran, prêt à explorer son espace. Dans ce cas, le plus connu, elle se présente la plupart du temps sous la forme d’un triangle orienté dans la direction qu’elle va prendre. Elle traîne à l’arrière – et non derrière elle, la nuance est d’importance d’un point de vue pédagogique – un crayon qui lui permet de laisser des traces de son passage. Ce crayon peut être levé (LC) ou remplacé par une gomme. Avec l’évolution du matériel informatique, il pourra également prendre des couleurs différentes.
Au départ, ce robot occupe une position et une orientation précises. Au départ, ce seront le milieu (position 0,0) et le haut de l’écran, c’est-à-dire vers le « Nord », au cap de 0°.
On travaille, donc, en coordonnées polaires et non pas en coordonnées cartésienne, même si le langage comprend la possibilité d’utiliser ces dernières. La Tortue se déplace comme un navire, c’est-à-dire en prenant une direction relative et en parcourant une distance à partir d’un point et d’une orientation de départ.
Mieux, elle se déplace, en réalité sur une sphère, ce qui explique qu’en position normale, elle « ENROULE », c’est-à-dire que si elle disparaît par un côté de l’écran, elle réapparait à son opposé.
Le concept de la « géométrie Tortue » est issu des travaux du Logo Group du MIT et permet à l’apprenant d’explorer un univers géométrique en s’identifiant à la tortue. Ce que Papert appellera la « syntonie avec le corps »
ABELSON & DI SESSA, 1986.
Au départ, l’utilisateur lui donne des ordres simples, « militaires » : AVANCE, RECULE, DROITE, GAUCHE pour la faire se déplacer. Elle se déplace pas à pas et s’oriente par degré ; à chaque 360°, elle fait, donc, un tour complet sur elle-même (théorème du tour complet de la tortue). Du fait de son crayon, elle laisse une trace de son passage sur l’écran (sauf, bien sûr, si on lui a donné l’ordre de la lever).
Par la suite, ces ordres pourront être rassemblés dans des PROCÉDURES qui enrichiront le langage informatique et pourront, par conséquent, elles-mêmes être apellées dans d’autres procédures.
Dans un grand nombre d'interfaces graphique de Logo, l'écran est divisé en 2 parties afin de permettre de visualiser à la fois les instructions qui lui sont données et leurs résultats :
Exemple de définition de procédure : la procédure CARRE devra tracer un carré à l'écran. Le texte est tapé dans l'éditeur du LOGO, puis sauvé.
POUR CARRE AV 100 TD 90 AV 100 TD 90 AV 100 TD 90 AV 100 TD 90 FIN
ou plus simplement
POUR CARRE REPETE 4 [AV 100 TD 90] FIN
Emploi de CARRE dans une autre procédure :
POUR PLCARRE REPETE 36 [CARRE TD 10] FIN
Dans cet exemple,
Pour employer PLCARRE, il suffit de taper dans la zone de commande PLCARRE.
Le passage de paramètres à une procédure est possible.
POUR CARRE:LG REPETE 4 [AV:LG TD 90] FIN
Utilisation : CARRE 50 trace un carré de 50 pas de TORTUE.
Pour faire un CERCLE, il suffit de décrire le périmètre de celui-ci
X = 36 Y = 5 répète X [ TOURNEDROITE 360/X AVANCE Y ]
En réalité, il s'agira d'un polygone régulier à 36 côtés, cette formule ne s'applique qu'au versions LOGO où la Tortue ne peut tourner que par des angles de 10°. La rosace présentée en illustration peut donc s'écrire (KTurtle)
COULEURCRAYON 255, 0, 0 X = 36 Y = 5 répète X [ TOURNEDROITE 360/X répète X [ TOURNEDROITE 360/X AVANCE Y ] ]
pour un hexagone
REPETE 6[AV 100 TG 60]
Français | Commande ou opération | Anglais | Définition | |
---|---|---|---|---|
AV n ou AVANCE n | commande | FD n ou Forward n | la tortue avance de n pas | |
RE n ou RECULE n | commande | BK n ou Back n | la tortue recule de n pas | |
TD n ou TOURNEDROITE n (DR n, DROITE n) | commande | RT n ou RIGHT n | la tortue tourne de n degrés d'angle vers la droite | |
TG n ou TOURNEGAUCHE n (GA n, GAUCHE n) | commande | LT n ou LEFT n | la tortue tourne de n degrés d'angle vers la gauche | |
LC ou LEVECRAYON | commande | PU or PENUP | La tortue ne laisse pas de trace | |
BC ou BAISSECRAYON | commande | PD or PENDOWN | La tortue laisse sa trace (par défaut) | |
CT ou CACHETORTUE | commande | HT ou HIDETURTLE | la tortue n'est plus visible sur l'écran graphique | |
MT ou MONTRETORTUE | commande | ST ou SHOWTURTLE | La tortue est visible sur l'écran graphique | |
ENR ou ENROULE | commande | WRAP | Enroule l'écran graphique (valeur par défaut) | |
FEN | commande | WINDOWS | La tortue peut sortir du jardin et disparaître de l'écran graphique | |
CLOS | commande | FENCE | La tortue ne peut pas sortir du jardin | |
ORIGINE | commande | HOME | Retour au milieu du carré de salade | |
VE | commande | CS ou CLEARSCREEN | Efface toutes les traces et restaure l'état initial (tortue au centre et regardant vers le haut) | |
NETTOIE | commande | CLEAN | Efface toutes traces de l'écran graphique sans changer la position de la tortue | |
VT | commande | CT or CLEARTEXT | Efface l'écran de commande | |
FCC n | commande | SETPC n | Change la couleur du crayon, n est un entier positif | |
FCFG n | commande | SETBG n | Change la couleur du fond, n est un entier positif | |
FCB n | commande | ***** | Change la couleur des bords, n est un entier positif | |
FCAP n | commande | SETH ou SETHEADING | Fixe le cap de la tortue de maniere absolue, selon l'angle de n degrés | |
Ex : 0 CAP vers le haut de l'écran, 90 vers la droite, 180 en bas, 270 à gauche | ||||
FPOS [X Y] | commande | SETPOS [X Y] | Fixe la POSITION de la tortue avec une LISTE de 2 nombres entiers (id : coordonnées cartésiennes). | |
Ex : LC FPOS [50 35] BC ou avec des variables DONNE "X 50 DONNE "Y 35 FPOS PH :X :Y | ||||
CAP n | opération | HEADING | retourne l'orientation de la tortue exprimée en degrés | |
POSITION, POS | opération | POS | retourne la position de la tortue en coordonnées cartésiennes. |
Français | Anglais | Définition |
---|---|---|
n1 + n2 | n1 + n2 | Addition de nombres réels - Ex : EC 45.124 + 11 ou EC (+ 45 10 78 23) |
n1 - n2 | n1 - n2 | Soustraction de nombres réels - Ex :EC 5 - 1.09 |
n1 * n2 | n1 * n2 | Multiplication de nombres réels - Ex :EC 5 * 9 |
n1 / n2 | n1 / n2 | Division de deux nombres réels - Ex :EC 45 / 9 |
SOMME n1 n2 | SUM n1 n2 | Addition de nombres réels - Ex : EC SOMME 45 11 |
DIFF n1 n2 | - n1 n2 | Soustraction de nombres réels - Ex :EC DIFF 5 1 |
PROD ou PRODUIT n1 n2 | PRODUCT n1 n2 | Multiplication de nombres réels - Ex :EC PROD 5 9.45 |
DIV n1 n2 | QUOTIENT n1 n2 | Division de deux nombres réels - Ex :EC DIV 45 11 |
QUOTIENT n1 n2 | QUOTIENT n1 n2 | Division de deux nombres réels - Ex :EC DIV 45 11 |
RESTE n1 n2 | REMAINDER n1 n2 | Reste de la division |
ENT n | INT n | Renvoie la partie entière du nombre réel - Ex :EC ENT 55.75 → 55 |
ARRONDI n | ROUND n | Arrondit un nombre réel - Ex :EC ARRONDI 55.75 → 56 |
ABS n | ABS n | Renvoie la valeur un nombre réel - Ex :EC ABS -55 → 55 |
HASARD n | RANDOM n | Renvoie un nombre entier entre 0 et n-1 |
RC n ou racine n | SQR n | Renvoie la racine carré d'un nombre réel - Ex :EC RC 25 → 5 |
LOG n | LOG n | Renvoie le logarithme naturel d'un réel |
LOG10 n | LOG10 n | Renvoie le logarithme de base 10 d'un réel |
EXP n | EXP n | Renvoie l'exponentielle d'un réel |
SIN n | SIN n | Renvoie le sinus d'un réel n en degrés - Ex :SIN 30 |
COS n | COS n | Renvoie le cosinus d'un réel n en degrés |
TAN n | TAN n | Renvoie la tangente d'un réel n en degrés |
ATAN n | ATAN n | Renvoie tangente d'arc d'un réel n en degrés |
PI | PI | 3.141592… |
RADIANS n | RADIANS n | Convertit un angle en radians n en degrés |
DEGRES n | DEGRES n | Convertit un angle en degrés n en radians |