A.7 L’espace de travail

L’espace de travail est composé de l’ensemble des éléments définis par l’utilisateur. Ceci comprend :

A.7.1 Les procédures

Présentation

Les procédures sont des sortes de « programmes ». A l’appel de leur nom, les instructions comprises dans le corps de la procédure sont exécutées. On définit une procédure à l’aide du mot-clé pour.

  pour nom_de_la_procédure :v1 :v2 :v3 .... [:v4 ....] [:v5 ....]  
  Corps de la procédure  
  fin

Ex :

  pour carre :c  
  repete 4[av :c td 90]  
  fin

La procédure se nomme carre  et possède un paramètre s’appelant c. carre 100 produira donc un carre de côté 100. (Voir les exemples de procédures à la fin du manuel.)

Il est possible depuis la version 0.7c de rajouter des commentaires dans le code en les précédant du signe #.

pour carre :c
#cette procédure permet de tracer un carré de côté donné :c.
repete 4[av :c td 90] # pratique, non ?
fin

Variables optionnelles

Il est à présent possible dans XLogo d’utiliser une « surcharge »d’arguments. Considérons la procédure suivante :

pour poly :n [:l 10]  
repete :n [av :l td 360/:n]  
fin  
 
# Ceci trace un polygone régulier dont les 20  
# côtés mesurent 10 pas de tortue  
poly 20

A l’intreprétation, la variable :l est remplacée par sa valeur par défaut, c’est à dire 10. Si l’on souhaite changer cette valeur, on doit appeler la procédure poly entre parenthèses pour signaler à l’interpréteur que l’on va utiliser des paramètres optionnels.

# Ceci trace un polygone régulier dont les 20  
# côtés mesurent à présent 5 pas de tortue  
 (poly 20 5)  
# Ceci trace un carré dont les  
# côtés mesurent 100 pas de tortue  
(poly 4 100)

La primitive ’trace

Il est possible pour suivre le déroulement d’un programme de lui faire afficher les procédures en cours d’exécution. Ce mode permet d’afficher également si les procédures rendent des arguments à l’aide de la primitive retourne.

trace


Active le mode trace

stoptrace


Désative le mode trace

Un petit exemple avec le factorielle (voir p. § ).
trace ecris fac 4  
fac 4  
  fac 3  
    fac 2  
      fac 1  
      fac retourne 1  
    fac retourne 2  
  fac retourne 6  
fac retourne 24  
24

A.7.2 Les variables

Il existe deux sortes de variables :

Dans cette version de LOGO, les variables locales ne sont pas accessibles dans les sous-procédures. A la sortie de la procédure, les variables locales sont éliminées.

donne mot1 arg2


Exemple : donne “a 100 affecte 100 à la variable a

locale arg1


Pour lui donner une valeur, voir soit.

donnelocale, soit mot1 arg2


Crée une nouvelle variable locale mot1 et lui affecte la valeur arg2.

def, definis mot1 liste1


Définis une nouvelle procédure nommée mot1.
liste1 contient une série de listes :
def "polygone [ [nb longueur] [repete :nb[av :longueur td 360/:nb]]]

Ceci définit une procédure nommée polygone avec deux variables ( :nb et :longueur). Elle permet de tracer un polygône régulier dont on peut choisir le nombre de côtés et la longueur de chacun des côtés.

texte mot1


Renvoie toutes les information sur la procédure appelée mot1. Elle retourne une liste contenant plusieurs listes.

Cette primitive est bien sûr associée à la primtive definis.

chose mot1


Renvoie la valeur de la variable mot1.
chose "a et :a sont deux notations équivalentes.

procs, procedures


Renvoie une liste contenant l’ensemble des procédures actuellement définies.

vars, variables


Renvoie une liste contenant l’ensemble des variables actuellement définies.

listesproprietes


Renvoie une liste contenant l’ensemble des listes de propriétés actuellement définies.

contenu


Renvoie une liste formées de trois autres listes. La première contient toutes les procédures définies, la seconde toutes les variables et la dernière toutes les listes de propriétés.

primitives


Renvoie une liste contenant toutes les primitives connues.

effaceprocedure, efp arg1


Efface la procédure s’appelant arg1, ou toutes les procédures contenues dans la liste arg1.

effacevariable, efv arg1


Efface la variable arg1 ou toutes les variables contenues dans la liste arg1.

effacelisteproprietes, eflp arg1


Efface la liste de propriétés nommée arg1 ou toutes les listes de propriétés contenues dans la liste arg1.

effacetout


Efface toutes les variables, listes de propriétés et procédures définies dans l’esapce de travail.

bye, aurevoir


Quitte XLOGO.

execute, exec liste1


Exécute la liste d’instruction contenue dans liste1.

commandeexterne liste1


Permet d’exécuter une commande système depuis XLogo. liste1 doit contenir plusieurs listes contenant chacune les mots constituant la commande. Quelques exemples :

commandeexterne [[gedit][/home/xlogo/fichier.txt]]
Lance l’application gedit et charge le fichier /home/xlogo/fichier.txt (Linux)

commandeexterne [[notepad][C: /fichier.txt]]
Lance l’application notepad et charge le fichier nommé C: /fichier.txt (Windows)

Cette syntaxe un peu particulière permet notamment l’utilisation d’espaces dans les chemins de fichiers.

A.7.3 Les listes de propriétés

A partir de la version 0.9.92, XLogo supporte les listes de propriétés. Chaque liste a un nom principal et est composée d’un ensemble de paires Clé-Valeur.

Par exemple, considérons une liste de propriétés nommée « voiture ». Elle peut contenir par exemple la clé « couleur » associée à la valeur « rouge », ou encore la clé « type » associée à la valeur « décapotable ».

Pour manipuler ces listes, nous disposons des primitives suivantes :

dprop donnepropriete nom clé valeur


Considère la liste de propriétés nom (Si elle n’existe pas, la crée). Elle y ajoute l’élémet valeur qui sera accessible à l’aide du mot clé.

rprop rendspropriete nom clé


Récupère dans la liste de propriétés nom la valeur associée à la clé désirée. Si la liste de propriétés n’existe pas ou si la clé n’existe pas, retourne une liste vide.

efprop effacepropriete nom clé


Dans la liste de propriétés nom, efface la valeur associée à la clé choisie.

lprop listepropriete nom


Affiche l’ensemble des couples clé-valeur contenue dans la liste de propriétés nom.

Reprenons l’exemple de la liste « voiture ».
# Remplissage de la liste  
 dprop "voiture "couleur "rouge  
 dprop "voiture "type "décapotable  
 dprop "voiture "marque "Citroën  
 
# Affichage d’une valeur particulière  
 ecris rprop "voiture "couleur  
 rouge  
 
# Affichage de tous les éléments  
 ecris lprop "voiture  
 couleur rouge type décapotable marque Citroën