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. 86 ).
 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