Chapitre 6

Introduction au LOGO


L'objectif de ce chapitre est de vous faire prendre contact avec LOGO. Assorti d'exemples, il est complété d'un guide des commandes disponibles mais n'est ni un cours exhaustif, ni un guide de référence. Il existe pour cela toute une série de publications AMSOFT et d'autres ouvrages.

Sujets abordés:

Qu'est-ce que le LOGO?

Le LOGO peut vous aider à devenir un programmeur, que vous ayez ou non des notions d'informatique. C'est un langage puissant qui devient de plus en plus populaire en raison de sa simplicité.

Vous vous servez de « procédures » pour construire les différentes parties de votre programme. Le Dr. LOGO a sa propre collection de « procédures » appelées « primitives » que vous utiliserez également pour programmer.

Dans les années 70. une équipe de chercheurs en informatique et d'éducateurs dirigés par Seymour Papert mit au point le LOGO et sa petite tortue graphique pour permettre à de très jeunes enfants de programmer un ordinateur. La tortue est pour ces jeunes apprentis. comme le dit Papert, un « objet pour penser ». un outil pour apprendre d'une façon différente. En forme de tète de flèche, elle peut être déplacée sur l'écran à l'aide de commandes simples.

 

Dr. LOGO

Le Dr. LOGO est une version très élaborée du LOGO. Elle a été spécialement adapté à l'ordinateur individuel AMSTRAD afin de le rendre encore plus simple à programmer. Des extensions ont permis d'y inclure la possibilité d'utiliser les puissantes facultés sonores du CPC6128 tandis que la correction des programmes est facilitée par le pavé de gestion du curseur.

 

Préparons-nous 

Pour mettre en service le Dr. LOGO, insérez une copie de la face 1 d'une des disquettes système dans l'unité de disquette et tapez:

|cpm

Lorsque le message A > apparait, retirez la disquette et insérez une copie de la face 3 (DR LOGO & HELP).

Pour lancer le Dr. LOGO, tapez:

SUBMIT LOGO3

Au bout dc quelques secondes, un message de bienvenue s'affiche, suivi d'un point d'interrogation.

Dr. LOGO sous CP/M 2.2

Remarque

La version du Dr. LOGO stockée sur la face 4 d'une des disquettes système a été prévue pour une utilisation du Dr. LOGO sous CP/M 2.2 (sur AMSTRAD CPC664 ou CPC464+ DDI1 ). Elle n'est donc pas recommandée sur le CPC6128. La face 3 contient toutes les spécifications du Dr. LOGO de Digital Research.

Si vous préférez malgré tout utiliser la version CP/M 2.2 du Dr. LOGO, insérez dans l'unité une copie de la face 4 d'une des disquettes système et tapez :

|CPM

Lorsque A > apparait. tape

SUBMIT LOGO2

Au bout de quelques secondes s'affiche un message de bienvenue, suivi d'un point d'interrogation.

Les premiers pas

Le point d'interrogation vous indique que Dr. LOGO est prêt à recevoir vos instructions au clavier.

Essayez de taper en minuscules :

fd 60 [RETURN]

... et vous verrez apparaître une tortue (une flèche grand format) qui avancera de 60 unités en laissant un trait derrière elle. L'écran va se restructurer en ménageant une zone importante pour le graphique et un emplacement plus petit pour le texte (?) en bas de l'écran.

Dr. LOGO décide souvent de changer l'organisation de l'écran avec soit une grande zone pour le texte, soit une grande zone pour le graphisme, selon votre besoin.

Tapez :

rt 90 [RETURN]

... et la tortue bouge de 90 degrés vers la droite.

Maintenant tapez: 

fd 60

...et une autre ligne se dessine de la même longueur que la première et à angle droit.

Entraînez-vous avec les instructions fd, bk (back : arrière) rt et lt (left : gauche), pour voir ce qui se passe sur l'écran.

 

Les « procédures» de Dr. LOGO

Une procédure est une liste d'instructions accomplissant un certain travail. Vous allez sûrement écrire vos premières procédures en utilisant les instructions de Dr. LOGO appelées « primitives ». 

fd, bk, rt et lt sont des primitives de Dr. LOGO utilisables à tout moment pour construire vos propres « procédures ». Une autre primitive très utilisée est cs, qui nettoie l'écran et renvoie la tortue à la case de départ.

 

L'élaboration d'une procédure simple

Vous pouvez également constater que si la formule

fd 60 rt 90

...est répétée 4 fois, elle dessine un carré de 60 unités de côté.

Vous pouvez obtenir le même résultat en écrivant très simplement:

repeat 4 [fd 60 rt 90]

Videz l'écran et tapez la formule pour voir ce qui se passe.

Pour faire de cette formule une nouvelle procédure, appelée « carre », tapez

to carre

repeat 4 [fd 60 rt 90]

end

Dr. LOGO comprend maintenant « carre » et, chaque fois qu'il le rencontrera, il tracera un carré sur l'écran. Nous aurions pu donner n'importe quel nom à notre procédure, mais « carre » est un bon moyen pour s'en souvenir.

Dr. LOGO nous permet de taper toutes sortes de combinaisons du style : carre rt 45 carre, qui va dessiner 2 carrés, le second ayant un angle de 45 degrés par rapport au premier.

 

Procédures avec paramètres

Il est possible de bâtir des procédures auxquelles nous pourrons demander « combien », de même que pour les primitives. Pour bâtir une procédure qui va construire des carrés de n'importe quelle taille, nous allons redéfinir « carre »

to carrequelconque :cote

repeat 4 [fd :cote rt 90]

end

Vous remarquerez que la variable :cote est précédée de 2 points qui indiquent à Dr. LOGO que :cote est une variable et non pas une commande.

Lorsque nous utiliserons la procédure carrequelconque, :cote doit recevoir une valeur. Ainsi, carrequelconque 150 donnera un carré de 150 unités de côté.

Essayons de combiner 2 procédures pourvoir ce qu'il advient. Par exemple, à partir d'une instruction

cs carrequelconque 100 rt 45 carrequelconque 150

la tortue va dessiner 2 carrés de côtés différents, l'un faisant un angle de 45 par rapport l'autre.

Notez comment Dr. LOGO utilise un point d'exclamation ! pour vous rappeler qu'une ligne de commandes s'est divisée en plusieurs lignes sur l'écran.

 

Utilisation de variables pour stocker des valeurs

Dr. LOGO vous permet d'utiliser des variables pour stocker des valeurs et en transmettre à une procédure.

Elaborez tout d'abord une procédure appelée triangle:

to triangle

repeat 3 [fd :bord rt 120]

end

Vous pouvez tester ceci en tapant .

make "bord 100

triangle

Si nous voulons connaître la valeur du bord, nous entrons :bord après le? et Dr. LOGO nous affiche sa valeur

Enfin, nous pouvons utiliser notre variable :bord dans une nouvelle procédure afin de construire un dessin. Remarquez comment la valeur de :bord est augmentée de façon a agrandir notre dessin a chaque passage.

to dessin

triangle lt 60 triangle rt 60

make "bord :bord+4

dessin

end

make "bord 10

cs dessin

Quand vous en aver assez, appuyez sur [ESC] pour arrêter le programme.

 

La correction des programmes et des procédures

Dr. LOGO vous permet de corriger les fautes de frappe et de modifier les procédures que vous avez définies. Les touches utilisées pour la correction sont:

Les touches curseur ñòïð pour le déplacement du curseur d'un caractère ou d'une ligne à la fois.

Les touches curseur ñòïð combinées à la touche [CONTROL] pour se déplacer d'une extrémité de l'écran à l'autre.

[CLR] efface le caractère sous le curseur. [DEL] efface le caractère a gauche du curseur.

[RETURN] indique au Dr. LOGO que la correction d'une ligne de commande est terminée ou bien donne la ligne suivante lors de la correction d'une procédure.

[ESC] signifie fin de correction et [COPY] signale au Dr. LOGO que la correction de la procédure est terminée.

Quand vous entrez des commandes ou de nouvelles procédures, corrigez le texte en face de vous sur l'écran. Tout autre caractère que ceux mentionnés plus haut est inséré dans le texte à la position du curseur.

Pour la correction d'une procédure existante, utilisez la commande ed.

Dr. LOGO affiche alors l'ancienne version de la procédure sur l'écran et vous permet d'effectuer ainsi vos modifications à l'aide des commandes de gestion du curseur.

Essayez la correction de la procédure dessin en tapant ed`` dessin

Servez-vous des touches de correction. Quand vous avez terminé, appuyez sur la touche [ESC]. Dr. LOGO abandonne alors le mode correction et vous redonne la version originale inchangée de votre procédure.

Tapez ed`` dessin à nouveau puis changez le 4 en 8, appuyez sur la touche [COPY] pour sortir et lancez la procédure pour visualiser le graphique résultant. N'oubliez pas de donner une valeur à :bord.

 

Quelques mots sur le fonctionnement

L'espace de travail utilisé par Dr. LOGO est divisé en noeuds. Vous pouvez savoir combien il vous en reste en tapant :

nodes

Parfois, lorsque presque tous les nceuds sont utilisés, Dr. LOGO fera le ménage de l'espace de travail et la tortue fera une pause. On peut aussi demander à Dr. LOGO de faire ce nettoyage par la commande :

recycle

Ceci pour vous permettre de continuer après que Dr. LOGO se soit plaint de n'avoir plus de nouds disponibles.

Si vous utilisez la version CP/M 2.2 du Dr. LOGO (face 4). assurez-vous, avant de lancer Dr. LOGO, qu'il y a suffisamment de place sur votre disquette pour vous permettre de sauvegarder vos procédures. Utilisez la commande CAT d'AMSDOS (voir la partie 7 du Cours Élémentaire).

Jetez un coup d'oeil sur les paragraphes suivants et essayez quelques exemples. Vous ne comprendrez pas tout la première fois, mais plus vous avancerez dans votre apprentissage de Dr. LOGO, plus vous utiliserez de commandes différentes.

Quand vous avez terminé avec Dr. LOGO, tapez :

bye

 

Liste des primitives de Dr. LOGO

Ce paragraphe dresse la liste alphabétique des primitives du Dr.LOGO par groupes, en donnant la forme syntaxique, parfois accompagnée d'un exemple.

Les commandes accompagnées d'un astérisque ne sont pas disponibles avec la version CP/M 2.2 du Dr. LOGO (face 4 d'une des disquettes système) et les programmes exploitant ces commandes ne seront donc pas compatibles avec les CPC664 et CPC464 + DDI1 sous CP/M 2.2.

TRAITEMENT DE MOTS ET DE LISTES

(Vous remarquerez les symboles ? et > dans les exemples suivants)

ascii

Donne la valeur ASCII du premier caractère de mot entré.

?ascii "G

71

?ascii "g

103

bf

(but first = sauf le premier) Donne un objet sans son premier élément.

?b4 "prendre

rendre

?bf [1 2 3]

[2 3]

bl

(but last = sauf le dernier) Donne un objet sans son dernier élément.

?bl "prendre

prendr

?bl [1 2 3 4]

[1 2 3]

char

Donne le caractère qui correspond à la valeur ASCII entrée.

?char 83

S

count

Donne le nombre d'éléments de l'objet entré.

?count "six

3

?count [0 1 2 3]

4

emptyp

Répond TRUE (vrai) si l'objet entré et un mot ou une liste vide. Dans le cas contraire répond FALSE (faux).

?emptyp "

TRUE

?emptyp []

TRUE

?emptyp [x]

FALSE

?make "x []

?emptyp :x

TRUE

first

(premier) Donne le premier élément de l'objet entré et supprime les crochets de la liste.

?first "zebre

z

?first [1 2 3]

1

fput

(first put = met devant) Donne un nouvel objet en ajoutant le premier élément entré juste devant le deuxième.

?fput "p "rendre

prendre

?fput 1 [2 3]

[1 2 3]

item

(article) Donné l'élément du rang spécifié.

?item 4 "manuel

u

*

last

Donne le dernier élément de l'objet entré (comparez avec FIRST).

?last "canibal

l

*

lc

Donne le mot entré avec tous les caractères alphabétiques en minuscules (voir également FIRST).

?lc "GRENIER

grenier

list

Donne la liste des éléments entrés en les encadrant de crochets (à comparer avec la primitive se).

?(list 1 2 3 4)

[1 2 3 4]

?list "peau [rouge]

[peau [rouge]]

?(list)

[]

*

listp

Répond TRUE (vrai) si l'objet entré est une liste. Dans le cas contraire. répond FALSE (faux).

?listp "mere

FALSE

?listp [pere frere soeur]

TRUE

*

lput

« lastput = mettre en dernier » Donne un nouvel objet en ajoutant le premier élément entré à la suite du deuxième.

?lput "s "pluriel

pluriels

?lput "s [pluriel]

[pluriel s]

*

memberp

Répond TRUE (vrai) si le premier élément entré est un élément du deuxième objet entré.

?memberp "y "Elysee

TRUE

?memberp "chocolat [[vanille][chocolat][fraise]]

FALSE

?memberp [chocolat] [[vanille][chocolat][fraise]]

TRUE

*

numberp

Répond TRUE (vrai) si l'objet entré est un nombre.

?numberp 374.926

TRUE

?numberp "six

FALSE

''numberp first [2 4 6 8]

TRUE

*

piece

Donne un objet contenant les élément spécifiés dans l'objet entré.

?piece 4 7 "fenetres

etre

?piece 2 4 [francois daniel herve olivier frederic]

[daniel herve olivier]

se

(sentence = phrase) Donne la liste des éléments entrés en supprimant les crochets (à comparer avec list).

?make "instr_list rl

repeat 4 [fd 50 rt 90]

?run (se "cs :instr list "ht)

Remarque : Le tiret s'obtient en actionnant [SHIFT]0.

*

shuffle

Donne une liste contenant les éléments de la liste entrée dans un ordre aléatoire.

?shuffle [a b c d]

[c b d a]

*

uc

Donne le mot entré avec ses caractères alphabétiques en majuscules (comparer avec lc).

?uc "Jones

JONES

*

where

Donne un nombre calculé à partir de l'expression membcrp vraie la plus récente.

?memberp "v "riviere

TRUE

?show where

3

word

(mot) Donne un seul mot à partir des mots ou éléments entrés.

?word "tele "vision

television

wordp

Donne la réponse TRUE (vrai) si l'objet entré est soit un mot, soit un nombre.

?wordp "bonjour

TRUE

?wordp []

FALSE

Opérations arithmétiques:

*

arctan

Donne l'arc-tangente (en degrés) du nombre entré.

?arctan 0

0

?arctan 1

45

cos

Donne le cosinus du nombre entré en degrés.

?cos 60

0.500000000017049

int

Donne la partie entière du nombre entré.

?int 4/3

1

*

quotient

Donne le résultat de la division entière des deux nombres entrés.

?quotient 14 4

3

?14/4

3.5

random

Donne un nombre entier positif pris au hasard et inférieur au nombre entré.

?random 20

*

remainder

Donne le résultat entier du quotient du premier nombre entré par le second.

?remainder 7 3

1

?remainder 8 4

0

*

rerandom

Provoque la répétition d'une expression aléatoire.

?repeat 10 [(type random 10 char 9)]

3 7 5 3 2 0 4 2 6

?repeat 10 [(type random 10 char 9)]

9 9 1 0 6 1 3 5 1

?rerandom

?repeat 10 [(type random 10 char 9)]

2 9 0 3 1 6 2 3 7

?rerandom

?repeat 10 [(type random 10 char 9)]

2 9 0 3 1 6 2 3 7

*

round

Donne le nombre entre arrondi a l'entier immédiatement supérieur.

?round 3.3333333

3

?round 3.5

4

sin

Donne le sinus du nombre entré en degrés.

?sin 30

0.500000000017049

+

Donne la somme des nombres entrés.

?+ 2 2

4

?2+2

4

-

Donne la différence des deux nombres entrés.

?- 10 5

5

?10-5

5

*

Donne le produit des deux nombres entrés.

?* 4 6

24

?4*6

24

/

Donne le quotient décimal des deux nombres entrés.

?/ 25 5

5

?25/5

5

Opérations logiques:

and

(et) Répond TRUE (vrai) si le résultat de toutes les expressions entrées est vrai.

?and (3<4) (7>4)

TRUE

not

Répond TRUE (vrai) si l'expression entrée est fausse.

Répond FALSE (faux) si l'expression entrée est vraie.

?not (3=4) TRUE

?not (3=3) FALSE

or

(ou) Répond FALSE (faux) si toutes les expressions entrées sont fausses.

?or "TRUE "FALSE

TRUE

?or (3=4) (1=2)

FALSE

=

Répond TRUE (vrai) si les deux expressions entrées sont équivalentes; sinon répond FALSE (faux).

?= "LOGO "LOGO

TRUE

?1=2

FALSE

>

Répond TRUE (vrai) si le premier élément entré est plus grand que le second ; sinon répond FALSE (faux).

?> 19 20

FALSE

?20>19

TRUE

<

Répond TRUE (vrai) si le premier élément entré est plus petit que le second ; sinon répond FALSE (faux).

?< 27 13

FALSE

?13<27

TRUE

Variables:

local

Rend les variables données accessibles uniquement à la procédure en cours.

>(local "x "y "z)

make

Pour donner une valeur à une variable.

?make "cote 50

?:cote

50

*

namep

Répond TRUE (vrai) si le mot entré identifie une variable définie.

?make "gout "chocolat

?:gout

chocolat

?namep "gout

TRUE

?namep "chocolat

FALSE

thing

Donne la valeur de la variable entree sous forme de nom

?make "ordinateur "amstrad

?thing "ordinateur

amstrad

Procédures:

*

define

Construit la procédure définie par la liste et portant le nom spécifié.

?define "dire.bonjour [[] [pr "bonjour]]

?po "dire.bonjour

to dire.bonjour

pr "bonjour

.text "dire.bonjour

[[] [pr "bonjour]]

end

end

Indique la lin de la procédure. Doit être isolé au début de la dernière ligne de la procédure.

?to carre

>repeat 4 [fd 50 rt 90]

>end

carre defined (carre defini)

?carre

Po

(print out = affichage) Affiche sur l'écran la procédure désignée ou la valeur des variables spécifiées.

?po "carre

to carre

repeat 4 [fd 50 rt 90]

end

?po "x

x is 3 (x est 3)

pots

(print out titles = affichage des titres) Affiche les titres de toutes les procédures de l'espace de travail.

?pots

*

text

Donne la liste de la procédure spécifiée.

?to etoile ;cinq branches

>repeat 5 [fd 30 rt 144 fd 30 lt 72]

>end

etoile defined

?text "etoile

[[] [repeat 5 [fd 30 rt 144 fd 30 lt 72]]]

to

Indique le début de la construction d'une procédure.

?to carre

>repeat 4 (fd 50 rt 90]

>end

carre defined

Correction:

ed

Charge sur l'écran la procédure et/ou les variables désignées dans la mémoire d'édition de l'écran.

?ed "carre

*

edall

Charge sur l'écran toutes les variables et procédures de l'espace de travail désignées dans la mémoire d'édition de l'écran et entre l'éditeur d'écran.

?edal

*

edf

Charge directement dans la mémoire d'édition de l'écran le fichier spécifié, ou crée un nouveau fichier en entrant l'éditeur d'écran avec une mémoire vide,

?edf "etoile

Fonctions d'imprimante

*

copyon

Provoque l'impression du texte par écho.

?copyon

*

copyoff

Arrête l'impression du texte par écho.

?copyoff

Ecran texte

ct

(clear text = vidage du texte) Efface tout le texte de la fenêtre où se promène le curseur et ramène le curseur en haut à gauche de celle-ci.

?ct

*

cursor

Donne les coordonnées du curseur dans la fenêtre texte (numéro de colonne, numéro de ligne).

?ct

?cursor

[0 1]

?(type [la position actuelle du curseur est\] show cursor

la position actuelle du curseur est [32 23]

pr

(print = affiche) Affiche les objets entrés au clavier sur l'écran texte, enlève les crochets d'une liste et va à la ligne (à comparer avec show et type).

?pr [a b c]

a b c

*

setcursor

Place le curseur aux coordonnées spécifiées.

?ct

?to dessin

>make "x random 20

>make "y random 12

>setcursor list :x :y pr "*

>end

?dessin

setsplit

Délimite le nombre de lignes de l'écran texte.

?setsplit l0

show

Affiche les objets entrés au clavier sur l'écran texte, garde les crochets extéricurs d'une liste et va à la ligne (à comparer avec pr et type).

?show [a b c]

[a b c]

ts

(text screen = écran texte) Réserve tout l'écran pour le texte.

?ts

type

Affiche les objets entrés au clavier sur l'écran texte, enlève les crochets d'une liste et ne va pas à la ligne (à comparer avec pr et show).

?type [a b c]

a b c

L'écran graphique

Notez que l'écran est en mode 1, à 4 couleurs, et que le système de coordination est le même que celui du BASIC AMSTRAD. En d'autres termes, chaque position sur l'écran sera arrondie au point écran ayant le numéro pair le plus proche. Les quantités de rouge, de vert et de bleu pourront varier entre 0, 1 ou 2.

clean

(to clean = nettoyer) Efface tout l'écran graphique sans toucher à la tortue.

?fd 50

?clean

cs

(clear screen = vide l'écran) Efface l'écran graphique et ramène la tortue en position [0,0] tournée vers 0 (le nord) et avec le stylo baissé.

?rt 90 fd 50

?cs

dot

Place un point sur l'écran à la position spécifiée par les coordonnées indiquées et selon la couleur de stylo en cours.

?dot [50 10]

*

dotc

Donne le numéro de la couleur du point spécifié par les coordonnées, ou -1 si le point n'est pas à l'écran.

?cs

?setpc 1

?dot -50 50

?setpc 2

?dot 50 50

?setpc 3

?dot 50 -50

?dotc 50 50

2

?dotc -50 -50

0

?dotc 1000 3000

-1

fence

(barrière) Pose une barrière qui empêche la tortue de sortir des limites de l'écran. window enlève cette barrière.

?fence

?fd 300

Turtle out of bounds (la tortue est hors des limites)

*

fill

Peint une zone dans la couleur du stylo en cours en changeant le point situé sous la tortue et tous les points contigus horizontaux et verticaux en utilisant l'état du stylo en cours.

?make "x 5

?cs

?st

?pd

?repeat 30 [fd :x rt 90 make "x :x + 5]

?fd 20 rt 90

?fd 10

?pu

?home

?bk 2

?pd

?setpc 2

?fill

fs

(full screen = plein écran) Réserve la totalité de l'écran au graphique.

?fs

pal

(palette) Donne les trois nombres représentant les quantités de rouge, vert, bleu du stylo.

?pal 2

[0 2 2]

*

setbg

Change la couleur de fond de l'écran graphique en fonction du numéro de couleur spécifié.

?sf

[0 SS 5 FENCE 1]

(cette instruction définit le fond à la couleur 0)

?pal 0

[0 0 1]

?setbg 2

?sf

[2 SS 5 FENCE 1]

setpal

(set palette = fabrication des couleurs) Les trois chiffres assignent les quantités de rouge, de vert, de bleu du stylo.

?setpal 3 [1 1 2]

?pal 3

[1 1 2]

*

setscrunch

Donne au rapport de l'écran graphique la valeur du nombre spécifié.

?sf

[0 SS 5 FENCE 1]

?to cercle

>repeat 360 [fd 1 rt 1]

>end

cercle defined

?setscrunch 2

?sf

[0 SS 5 FENCE 2]

?cercle

?setscrunch 2.5

?cercle

sf

(screen facts = les données de l'écran) Affiche des informations sur l'état de l'écran graphique. La structure de ces informations est :[<couleur de fond> <état de l'écran> <longueur de l'écran texte> < fenêtre> <scrunch>] où < couleur de fond> est la couleur du stylo de fond (toujours 0 sous CP/M 2.2). <état de l'écran > indique SS (split screen = écran partagé), FS (full screen.= plein écran) ou TS (text screen = écran totalement réservé au texte). < longueur de l'écran texte> est le nombre de lignes réservé au texte, et < fenêtre > indique WINDOW (pas de barrière, la tortue peut sortir), WRAP (réapparition de la tortue de l'autre côté de l'écran) ou FENCE (barrière - la tortue ne peut pas sortir des limites de l'écran). < scrunch >, le rapport d'écran (non disponible sous CP/M 2.2), est toujours égal à l par défaut et peut être modifié par SETSCRUNCH.

?sf

[0 SS 5 FENCE 1]

ss

(split screen = écran partagé) Réserve au texte une fenêtre sur l'écran graphique.

?ss

window

Permet à la tortue de sortir des limites de l'écran après un wrap ou un fence.

?fence fd 300

Turtle out of bounds

?window

?fd 300

wrap

Fait apparaître la tortue du côté opposé à celui où elle sort.

?cs wrap

?rt 5 fd 1000

? cs window

?rt 5 fd 1000

Les graphismes de la tortue:

bk

(back = arrière) Déplace la tortue du nombre de pas indiqué dans la direction opposée au sens de la flèche.

?cs fd 150

?bk 50

fd

(forward = avant) Avance la tortue du nombre de pas indiqué dans le sens de la flèche.

?fd 80

Home

Replace la tortue au centre de l'écran graphique, position [O O], tournée vers 0 (le nord).

?fd 100

?rt 45

?fd 100

?home

ht

(hide turtle = cache tortue) Rend la tortue invisible. Accélère et clarifie le dessin.

?ht

?cs fd 50

?st

lt

(left = gauche) La tortue tourne du nombre de degrés indiqué vers la gauche.

?lt 90

pd

(pen down = stylo baissé) Le stylo est posé sur le papier et la tortue peut recommencer à tracer après interruption par la primitive pu.

?fd 20 pu fd 20

?pd

?fd 20

pe

(pen erase = stylo qui efface) Cette instruction transforme la couleur du stylo en 0, c'està-dire la couleur du fond, et permet ainsi d'effacer les traits sur l'écran.

?fd 50

?pe

?bk 25

?fd 50

?pd fd 25

pu

(pen up = stylo levé) Le stylo est levé, ne laissant plus de trace sur l'écran.

?fd 30

?pu

?fd 30

?pd fd 30

px

(pen exchange = stylo inversé) Change la couleur de tout ce qui a été tracé auparavant en sa couleur opposée ou logiquement complémentaire.

?fd 20 pu fd 20

?pd setpc 3 fd 20

?px

?bk 80

?fd 80

?pd bk 100

rt

(right = droite) La tortue tourne du nombre de degrés indiqué vers la droite.

? rt 90

seth

(set heading = changement de direction) Tourne la tortue dans la direction spécifiée en degrés. Les nombres positifs font tourner la tortue dans le sens des aiguilles d'une montre, les nombres négatifs en sens inverse.

?seth 90

setpc

(set pen coulour = changement de la couleur du stylo) Le stylo prend la couleur indiquée par le nombre donné (0 est la couleur du fond).

?setpc 1

setpos

(set position = changement de position) Envoie la tortue â la position indiquée par les coordonnées spécifiées.

?setpos [30 20]

*

setx

Change la position horizontale (le la tortue en fonction de la coordonnée r spécifiée (voir également sety).

?setx 80

?fd 100

?setx -50

?fd 50

*

Sety

Change la position verticale de la tortue en fonction de la coordonnée y spécifiée.

?sety 90

?fd 20

?sety -50

?fd 50

St

(show turtle = montre tortue) Pour rendre visible à nouveau une tortue invisible.

?ht

?fd 50

?st

tf

(turtle facts = données de la tortue) Affiche une liste d'informations concernant la tortue. Le format est : [<coordx> <coordy> <direction> <état du stylo> <couleur du stylo n > < visibilité>] où < coordx > est la coordonnée x de la tortue ; < coordy > est la coordonnée y de la tortue ; <direction> indique la direction vers laquelle se tourne la tortue (en degrés) ; < visibilité> est TRUE (vrai) lorsque la tortue est visible ; <état du stylo> indique PD (pen down = stylo baissé), PE (pen erase = stylo qui efface), PX (pen exchange = stylo inversé), PU (pen up = stylo levé) ; < couleur du stylo n > identifie le numéro de la couleur du stylo n.

?setpos [15 30]

?rt 60

? setpc 3

?pe

?ht

?tf

[15 30 60 FE 3 FALSE]

*

towards

Donne une direction qui pointe la tortue vers les coordonnées spécifiées.

?seth towards list :x :y

Gestion de l'espace de travail:

er

(erase=efface) Efface la procédure spécifiée de l'espace de travail.

?er "carre

*

erall

Efface toutes les procédures et les variables de l'espace de travail.

?erall

ern

(erase name=efface le nom) Efface la ou les variables spécifiées de l'espace de travail.

?make "cote [100]

?make "angle [45]

? :cote :angle

[100]

[45]

?ern [cote angle]

?:cote

cote has no value (cote ne vaut rien)

nodes

Affiche le nombre de noeuds disponible dans l'espace de travail.

?nodes

*

noformat

Supprime de l'espace de travail le formatage de la procédure et les commentaires afin de libérer des noeuds.

?noformat

*

poall

Affiche les noms et les valeurs de toutes les variables de l'espace de travail.

?poall

*

pons

Affiche les noms et les valeurs de toutes les variables globales de l'espace de travail.

?pons

medium is 40

small is 20

large is 80

*

pops

Affiche les noms et les définitions de toutes les procédures de l'espace de travail.

?pops

recycle

Libère le plus de noeuds possible et réorganise l'espace de travail.

?recycle

?nodes

Listes de propriété:

glist

(get list=donne la liste) Permet d'obtenir une liste de tous les objets de l'espace de travail auxquels on a attaché une ou des propriétés.

?glist ".DEF

gprop

(get property= donne la propriété) Permet d'obtenir une liste de tous les objets de l'espace de travail.

?make "hauteur "72

?gprop "hauteur ".APV

72

plist

(property list=liste des propriétés) Permet d'obtenir la liste des propriétés attachées à un mot.

?plist "hauteur

[.APV 72]

pprop

(put property= donne une propriété) Permet de créer un lien entre un mot et une propriété.

?pprop "maitre ".APV "Corbeau

?:maitre

Corbeau

*

pps

Affiche les paires de propriétés non standard de tous les objets de l'espace de travail.

?pprop "Helene "telephone 213256

?pps

Helene's telephone is 213

?plist "Helene

[telephone 2132256]

remprop

remove property= élimine la propriété) Elimine la propriété spécifiée de la liste de propriété du mot.

?remprop "maitre ".APV

Fichiers sur disquette:

*

changef

Change le nom d'un fichier du catalogue de la disquette.

?dir

[CERCLE CARRE ETOILE]

?changef "boite "carre

?dir

[CERCLE BOITE ETOILE]

*

defaultd

Donne le nom de l'unité par défaut en cours.

?defaultd

A:

dir

(directory=catalogue) Permet d'obtenir une liste de noms de fichiers en Dr. LOGO présents sur une disquette, soit spécifiée, soit prise par défaut; accepte également les jockers.

?dir "a:????????

(Etudiez la partie 1 du chapitre intitulé " AMSDOS et CP/M" pour l'utilisation des jockers???????? Dr. LOGO ne tient toutefois pas compte du jocker *.)

*

dirpic

Donne une liste des noms de fichiers graphiques de l'unité par défaut ou spécifiée. Accepte les noms de fichiezrs ambigus.

?dirpic "b:

[MON_DESS CARRES ETOILES CERCLES]

load

Charge le fichier spécifié, de la disquette sur l'espace travail de l'ordinateur.

?load "monfichier

?load b:dessins

*

loadpic

Recrée sur l'écran graphique le dessin sauvegardé dans le fichier graphique spécifié.

?loadpic "mon_dess

?loadpic "b:mon_dess

save

Ecrit le contenu de l'espace travail dans un fichier sur la disquette spécifiée.

?save "dessins

Remarque

Avant de sauvegarder, insérez une disquette formatée disposant d'une capacité suffisante. Ne sauvegardez pas sur une disquette système. Il est préférable de fermer le trou de protection en écriture pour éviter tout risque d'écriture accidentelle.

Si vous utilisez la version CP/M 2.2 du Dr. LOGO (face 4d'une des disquettes système), veillez àce que votre disquette de travail dispose de l'espace nécessaire au stockage des programmes, car vous ne pourrez pas changer de disquette en cours de procédure.

*

savepic

Ecrit le contenu de l'écran graphique dans le fichier grahique spécifié.

?savepic "mon_dess

?savepic "b:mon_dess

Remarque

Avant de sauvegarder, insérez une disquette formatée disposant d'une capacité suffisante. Ne sauvegardez pas sur une disquette système. Il est préférable de fermer le trou de protection en écriture pour éviter tout risque d'écriture accidentelle.

Si vous utilisez la version CP/M 2.2 du Dr. LOGO (face 4d'une des disquettes système), veillez àce que votre disquette de travail dispose de l'espace nécessaire au stockage des programmes, car vous ne pourrez pas changer de disquette en cours de procédure.

*

setd

(setdrive) Définit l'unité spécifiée comme unité par défaut.

?defaultd

A:

?dir

[BOITE CERCLE TRIANGLE]

?setd b:

?defaultd

B:

?dir

[ETOILE MAISON]

Clavier et manette de jeu :

buttonp

(button pressed=bouton appuyé) Répond TRUE (vrai) si le bouton de la manette de jeu est actionné. Les numéros 0 et 1 servent a identifier les deux manettes de jeu.

?to timer

>label "boucle

>if (buttonp 0) [pr [tirer 0!]]

>if (buttonp 1) [pr [tirer 1!]]

>go "boucle

>end

La position de la manette de jeu est testée par paddle.

keyp

Répond TRUE (vrai) si un caractère vient d'être tapé au clavier et attend d'être enregistré.

?to inkey

>if keyp [op rc] [op "]

>end

paddle

Permet de connaître les états de la manette 0 ou 1. Les positions sont codées comme suit:

Valeur retournée

Signification

255

Rien

0

En haut

1

En haut et à droite

2

A droite

3

En bas et à droite

4

En bas

5

En bas et à gauche

6

A gauche

7

En haut et à gauche

?paddle 0

255

Les boutons de tir sont testés par la commande buttonp.

rc

(read character=sortie d'un caractère) Sort le premier caractère tapé au clavier.

?make "touche rc

...et appuyez sur la touche X :

?:touche

X

rl

(read list = sortie d'une liste) Donne une liste contenant une entrée au clavier qui doit être suivie d'un retour chariot.

?make "instr_list rl

repeat 4 [fd 50 rt 90]

?:instr_list

[repeat 4 [fd 50 rt 90]]

rq

(read quote = extraction d'un mot) Donne un mot contenant une ligne entrée au clavier, qui doit être suivi d'un retour chariot.

?make "commande rq

repeat 3 [fd 60 rt 120]

?:commande

repeat 3 [fd 60 rt 120]

 

LE SON:

Seule la version AMSTRAD de Dr. LOGO possède des commandes pour le son. Elles sont d'ailleurs identiques à leurs équivalents BASIC. Reportez-vous à la partie 9 du Cours Elémentaire pour plus de détails.

sound

Met un son dans une suite de sons (queue). Le format de cette instruction est: [<état de canal> <periode sonore> <durée> <volume> <enveloppe de volume> <enveloppe de tonalité> <bruit>]. Tous les paramètres après durée sont facultatifs.

?sound [1 20 50]

env

Construit l'enveloppe de volume (la forme de la note). Son format est: [<numéro de l'enveloppe> <section(s) de l'enveloppe>]

?env [1 100 2 20]

?sound [1 200 300 5 1]

ent

Construit l'enveloppe de tonalité. Son format est :[<numéro de l'enveloppe> <section(s) de l'enveloppe>]

?ent [1 100 2 20]

?sound [1 200 300 5 1 1]

release

Libère les canaux dont l'exécution a été suspendue par la commande sound. Les canaux à libérer sont indiqués par le code suivant:

Valeur entrée

Canaux libérés

0

Aucun

1

A

2

B

3

A et B

4

C

5

A et C

6

B et C

7

A et B et C

?release 1

Les commandes de déroulement de programme

bye

Lorsque l'on en a terminé avec Dr. LOGO.

?bye

co

Pour continuer après une pause provoquée par [CTRL]Z, pause ou ERRACT.

?co

go

Exécute la ligne de commande repérée par une étiquette à l'intérieur d'une procédure.

>go "boucle

if

Exécute une ou deux listes d'instructions suivant la valeur de l'expression entrée ; ces listes en toutes lettres doivent être entourées de crochets.

>if (:a>:b) [pr [a est plus grand]]

>if (:a<:b) [pr [b est plus grand]]

label

Pose une étiquette sur une ligne d'instruction qui pourra ainsi être appelée à l'aide de la commande go.

>label "boucle

op

(output = retourne) Affiche l'objet entré et interrompt la procédure.

?op [resultat]

repeat

Répète la liste d'instructions autant de fois que le numéro le spécifie.

?repeat 4 [fd 50 rt 90]

run

Exécute la ligne d'instructions.

?make "instr list [Fd 40 rt 90]

?run :instr list

stop

Interrompt l'exécution de la procédure en cours et revient au niveau supérieur TOPLEVEL (le symbole?) ou à la procédure d'appel.

?stop

wait

Arrête l'exécution de la procédure pendant le temps spécifié par le nombre entré. La longueur du temps de pause est : nombre entré * 1/60 seconde.

?wait 20

Traitements des cas particuliers

catch

(attrape) Pour traiter une erreur ou un cas particulier qui survient pendant l'exécution d'une série d'instructions.

>catch "error [+ [] []]

>pr [je suis ici]

je suis ici

error

Donne la liste d'instructions qui a causé la dernière erreur.

>catch "error [execute jusau'a l'erreur]

>show error

*

notrace

Désactive trace (voir cette commande).

?notrace

*

nowatch

Désactive watch (voir cette commande).

?nowatch

pause

Suspend l'exécution de la procédure en cours, permettant ainsi le dialogue entre Dr. LOGO et l'utilisateur.

>if :cote>5 [pause]

throw

Exécute la ligne d'instruction identifiée par le nom entré sous catch.

?throw "TOPLEVEL

*

trace

Affiche le nom de chaque procédure en cours d'exécution.

?trace

*

watch

Affiche le nom de chaque expression en cours d'exécution.

?watch

Les primitives système

.contents

Affiche le contenu de l'emplacement des symboles de Dr. LOGO.

.deposit

Place le deuxième nombre entré à l'emplacement mémoire donné par le premier nombre.

.examine

Affiche le contenu de l'emplacement mémoire spécifié.

*

.in

Recherche la valeur en cours de l'entrée spécifiée.

*

.out

Envoie la valeur introduite vers l'entrée spécifiée.

Les variables système

ERRACT

Renvoie au niveau supérieur TOPLEVEL,lorsque TRUE (vrai) provoque une pause au moment d'une erreur.

FALSE

Valeur système.

REDEFP

Quand TRUE (vrai) permet la redéfinition des primitives.

TOPLEVEL

throw``TOPLEVEL clos toutes les procédures en attente.

TRUE

Valeur système.

Les propriétés du système:

.APV

Valeur de la variable associée à la propriété ; à savoir la valeur de la variable globale.

.DEF

Définition d'une procédure

*

.ENL

Fin d'une ligne de procédure interrompue par un retour chariot ou des espaces.

*

.EMT

Début d'une ligne de procédure interrompue par un retour chariot ou des espaces.

.PRM

Identifie une primitive.

*

.REM (ou;)

Remarques ou commentaires.

<< Chapitre 5 [Index]