Xlogo Manual FR
Xlogo Manual FR
Xlogo Manual FR
3 Conventions adoptes dans XLOGO e 3.1 Commandes et interprtation . . . . . . . . . . e 3.2 Procdures . . . . . . . . . . . . . . . . . . . . e 3.3 Le caract`re spcial \ . . . . . . . . . . . . e e 3.4 R`gles concernant les majuscules et minuscules e 3.5 Oprateurs et syntaxe . . . . . . . . . . . . . . e 3.6 Les couleurs . . . . . . . . . . . . . . . . . . . . 4 Liste des primitives 4.1 Dplacement de la tortue, gestion du crayon e 4.2 Achage du texte dans la zone dhistorique 4.3 Oprations arithmtiques et logiques . . . . e e 4.4 Oprations sur les listes et les mots . . . . . e 4.5 Boolens . . . . . . . . . . . . . . . . . . . . e 4.6 Eectuer un test ` laide de la primitive si a 4.7 Gestion des procdures et des variables . . . e 4.7.1 Les procdures . . . . . . . . . . . . e 4.7.2 Notion de variables . . . . . . . . . 4.7.3 La primitive trace . . . . . . . . . 4.8 Gestion des Fichiers . . . . . . . . . . . . . 4.9 Fonction avance de remplissage : . . . . . . e 4.10 Les instructions de saut . . . . . . . . . . . 4.11 Le mode multitortues . . . . . . . . . . . . 4.12 Jouer de la musique . . . . . . . . . . . . . 4.13 Boucles : . . . . . . . . . . . . . . . . . . . . 4.13.1 Une boucle avec repete . . . . . . . 4.13.2 Une boucle avec repetepour . . . . 4.13.3 Une boucle avec tantque . . . . . . 4.14 Intercepter des actions de lutilisateur . . .
et des couleurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.14.1 Interaction avec le clavier . . . . . . . . . 4.14.2 Quelques exemples dutilisation : . . . . . 4.14.3 Intercepter certains vnements provenant e e 4.14.4 Quelques exemples dutilisation . . . . . . 4.15 Gestion du temps . . . . . . . . . . . . . . . . . . 4.16 Se servir du rseau avec XLogo . . . . . . . . . . e 4.16.1 Le rseau : comment ca marche ? . . . . . e 4.16.2 Primitives orientes resau . . . . . . . . e e
. . . . . . . . . . . . . . de la souris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
35 35 36 36 38 39 39 39 41 41 43 43 43 45 46 46 46 46 47 47 47 48 49 50 51 51 51 52 52 52 52 52 53 53
5 Exemples de programmes 5.1 Dessiner des maisons . . . . . . . . . . . . . . . . . . . . . 5.2 Dessiner un rectangle plein . . . . . . . . . . . . . . . . . 5.3 Factorielle . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 Le ocon (Merci ` Georges Nol) . . . . . . . . . . . . . . a e 5.5 Un peu dcriture... . . . . . . . . . . . . . . . . . . . . . . e 5.6 Et de conjugaison... . . . . . . . . . . . . . . . . . . . . . 5.6.1 Premi`re version . . . . . . . . . . . . . . . . . . . e 5.6.2 Deuxi`me mouture . . . . . . . . . . . . . . . . . . e 5.6.3 Ou alors : Un peu de rcursivit ! . . . . . . . . . . e e 5.7 Avec les couleurs . . . . . . . . . . . . . . . . . . . . . . . 5.7.1 Introduction . . . . . . . . . . . . . . . . . . . . . 5.7.2 Passons ` la pratique . . . . . . . . . . . . . . . . . a 5.7.3 Et si on la voyait en ngatif ? ? . . . . . . . . . . . e 5.8 Un bel exemple dutilisation des listes (Merci Olivier SC) 5.9 Une belle rosace . . . . . . . . . . . . . . . . . . . . . . .
6 Dsinstallation-mise ` jour e a 6.1 Dsinstallation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 6.2 Mise ` jour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 7 Foire aux questions - Astuces - trucs ` conna a tre 7.1 Jai beau eacer une procdure dans lditeur, elle rappara tout le temps ! . . . . . . e e e t 7.2 Jutilise la version en espranto mais je ne peux crire les caract`res spciaux ! . . . . . e e e e 7.3 Dans longlet Son de la bo de dialogue Prfrences, aucun instrument nest disponible. te ee 7.4 Jai des probl`mes de rafraichissement dcran lorsque la tortue dessine ! . . . . . . . . e e 7.5 Comment faire pour taper rapidement une commande dj` utilise au pralable ? . . . ea e e 7.6 Comment peut-on vous aider ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 1
Prsentation de linterface : e
1.1 Fentre principale e
En haut, les traditionnels menus Fichier Edition Options et Aide Juste en dessous, la ligne de commande qui permet de saisir les instructions logo. Au centre, la zone de dessin. En bas, la zone historique qui rappelle toutes les derni`res commandes tapes et les rponses e e e associes. Pour rappeler rapidement une instruction dj` tape, il y a deux solutions : ou bien e ea e vous cliquez sur lancienne instruction dans lhistorique, ou bien vous appuyez plusieurs fois sur la `che du haut jusqu` ce que linstruction dsire apparaisse. Les deux `ches haut et bas e a e e e permettent en fait de se dplacer dans toute lhistorique des commandes tapes prcdemment e e e e (Tr`s pratique). e A la droite de lhistorique, deux boutons : STOP et EDITEUR. STOP interrompt toute excue tion en cours et EDITEUR permet douvrir lditeur de procdures. e e 3
1.2
Lditeur de procdures e e
Pour ouvrir lditeur, trois possibilits : e e Taper ed dans la ligne de commandes. Lditeur souvrira alors avec toutes les procdures dj` e e ea dnies. Si vous ne souhaitez diter que certaines procdures particuli`res, taper alors : e e e e ed [procedure_1 procedure_2 ... Appuyer sur le bouton Editeur de la fentre principale. e Utiliser le raccourci clavier Alt+E Voici les dirents boutons que vous trouverez dans lditeur : e e Sauve les modications apports au contenu de lditeur puis ferme celuie e ci. Cest sur ce bouton quil faut appuyer ` chaque fois que vous voulez a enregistrer les nouvelles procdures tapes. Si vous le prfrez, vous poue e ee vez utiliser le raccourci clavier ALT+Q. Quitte lditeur en nenregistrant aucune des modications apportes ` e e a celui-ci. On peut galement utiliser le raccourci ALT+C. e Imprime le contenu de lditeur. e Copie le texte slectionn dans le presse-papiers e e Coupe le texte slectionn dans le presse-papiers e e Colle le texte slectionn dans le presse-papiers e e
IMPORTANT :
Cela ne sert ` rien dappuyer sur la croix en haut ` droite pour fermer la fentre ! Seuls les deux a a e premiers boutons vous permettent de quitter lditeur. e Pour eacer une ou toutes les procdures indsirables, utiliser les primitives efn et efns. e e
Chapitre 2
Fichier > Nouveau : Dtruit lensemble des procdures et variables dnies pour crer ainsi un e e e e nouvel espace de travail. Fichier > Ouvrir : ouvre un chier logo prcdemment enregistr. e e e Fichier > Enregistrer : enregistre les procdures du chier en cours. e Fichier > Enregistrer sous ... : enregistre les procdures en cours sous un nom prcis. e e Fichier > Quitter : quitte lapplication XLOGO. Fichier > Capturer limage > Enregistrer limage sous... : permet denregistrer limage sous le format jpg ou png. Si vous souhaitez slectionner seulement une partie de limage, vous avez la e possibilit de dnir un cadre en cliquant successivement deux fois pour dnir deux coins dune e e e mme diagonale du rectangle de slection. e e Fichier > Capturer limage > Imprimer limage : permet dimprimer limage. De la mme e faon que prcdemment, vous pouvez slectionner une zone ` imprimer. c e e e a Fichier > Capturer limage > Copier limage dans le presse-papier : Permet denvoyer limage dans le presse-papier syst`me. De mme que pour limpression et lenregistrement, vous pouvez e e ne slectionner quune zone de limage. Cette fonctionnalit fonctionne tr`s bien sous les envie e e ronnements de type Windows. En revanche, elle ne marche pas sous Linux (Le presse-papier na pas le mme type de fonctionnement). Non test sous Mac. e e
2.2
Menu Edition
Edition > Copier : copie le texte slectionn dans le presse-papiers. e e Edition > Couper : coupe le texte slectionn dans le presse-papiers. e e Edition > Coller : colle le texte contenu dans le presse-papiers dans la ligne de commande.
2.3
Menu Options
Options > Choisir la couleur du crayon : permet de choisir la couleur avec laquelle crit la e tortue ` laide dune palette de couleurs. Disponible galement avec la primitive fcc. a e Options > Choisir la couleur du fond : mme chose avec le fond dcran. Disponible avec la e e primitive fcfg. Options > Dnir les chiers de dmarrage : permet de dnir des chemins vers des chiers dit e e e de dmarrage . Toutes les procdures contenues dans ces chiers au format *.lgo deviendront e e alors des pseudo-primitives du langage XLogo. Elles ne sont pas ditables ni modiables e
par lutilisateur. Vous pouvez ainsi dnir des primitives personnalises. Vous pouvez de plus lui e e donner une commande (en logo) ` eectuer au dmarrage de XLogo. Vous avez ainsi la possibilit a e e de lancer un programme que vous avez conu d`s louverture de XLogo. c e Options > Traduire des procdures : Ouvre une bo de dialogue qui permet de traduire des e te commandes XLogo dans une langue dsire. (Tr`s utile en particulier lorsquon rcup`re des e e e e e sources Logo en anglais sur internet pour les remettre en franais) c Options > Prfrences : Ouvre une bo de dialogue dans laquelle vous pouvez congurer ee te plusieurs choses : Langue : permet de choisir entre le franais et langlais. Attention, les primitives changent c dune langue ` lautre. a Aspect : permet de dnir le look de la fentre XLogo. Soit style Windows, style Java natif e e ou style Motif Choisir la vitesse de dlement. Si vous souhaitez voir tous les dplacement de la tortue, vous e e pouvez la ralentir ` laide de la barre prvu dans le premier onglet. a e Dans le deuxi`me onglet, vous pouvez choisir votre tortue prfre. e eee Dans le troisi`me onglet, Plusieurs choses peuvent tre xes. e e e Tout dabord, on peut xer une taille limite ` lpaisseur du crayon. Si lon ne veut pas a e utiliser cette limitation, mettre le nombre -1 dans la zone de texte associe. e Ensuite, on peut choisir la forme du crayon de la tortue, on ne se rend compte du choix de cette option que lorsque lon choisit une paisseur de crayon suprieure ` 1. e e a On peut galement xer le nombre de tortues maximum en mode multitortues. (Par dfaut e e 16) On peut choisir deacer automatiquement la zone de dessin lorsquon sort de lditeur. e Vous pouvez choisir une taille personnalise pour la zone de trac. Par dfaut XLogo se e e e lance avec une zone de 1000 pixels sur 1000 pixels. Attention, lorsque vous agrandissez limage, il peut-tre ncessaire daugmenter la taille mmoire attribue ` XLogo. Un mese e e e a sage derreur vous en avertira. Vous pouvez par consquent galement changer la valeur correspondant ` lespace mmoire e e a e allou ` XLogo. Par dfaut, cette valeur est xe ` 64 Mo. Il se peut que vous soyez oblig ea e e a e de laugmenter si vous souhaitez travailler sur une zone de dessin plus grande. Lorsquon modie ce param`tre, le changement nest eectif quapr`s redmarrage de XLogo. Attene e e tion, naugmentez pas abusivement sans raison cette valeur, cela peut considrablement e ralentir votre syst`me. e Enn, Vous pouvez choir la prcision du trac. En haute qualit, vous naurez plus deet e e e de crnelage en particulier. En revanche, bien penser quen augmentant la qualit, vous e e perdrez en rapidit dexcution. e e Dans le quatri`me onglet, vous trouverez la liste des instruments que peut imiter votre carte e son au travers de linterface MIDI. Vous pouvez slectionner un instrument prcis en clie e quant dessus. (Vous pouvez galement galement slectionner un instrument avec la primitive e e e fixeinstrument numro. Malheureusement, il semble que la liste des instruments conserve e un comportement un peu alatoire (Matriel non dtect en particulier). Jesp`re que ce dtail e e e e e e sera amlior dans les versions futures. Voir la FAQ en n d emanuel ` ce sujet. e e a Dans le cinqui`me onglet, vous pouvez choisir la police de linterface graphique ainsi que sa e taille. Attention ceci naecte pas la police rendue par les primitives ecris et etiquette.
2.4
Menu Aide
Menu > Licence : Ache la licence GPL sous laquelle est distribu ce logiciel. e Menu > Traduction : ache une traduction de ladite licence. Cette traduction na aucune 6
valeur ocielle, seule la version anglaise a ce rle. o Menu > A propos : Classique .... et http ://xlogo.tuxfamily.org pour vos mises ` jours ! ! o :) a
Chapitre 3
3.1
Commandes et interprtation e
Le langage LOGO permet de provoquer certains vnements a laide de commandes internes : e e ` On appelle ces commandes les primitives. Chaque primitive attend un certain nombre de param`tres e que lon appelle arguments. Par exemple la primitive ve qui permet deacer lcran ne prend aucun e argument alors que la primitive somme attend deux arguments. somme 2 3 crira 5 en retour. e Les arguments sont de trois types en LOGO : Les nombres : certaines primitives attendent des nombres comme argument : av 100 est un exemple. Les mots : Les mots sont commencent tous par . Un exemple de primitive pouvant travailler avec les mots est la primitive ecris. ecris "bonjour renvoie bonjour. A noter que si vous oubliez le , linterprteur vous renverra un message derreur. En eet, ecris attend un argument, e or pour linterprteur, bonjour ne reprsente rien puisque ce nest ni un nombre, ni un mot, ni e e une liste ni une procdure dj` dnie. e ea e Les listes : Elles sont dnies entre crochets. e Les nombres sont traits soit en tant que valeur numrique, (Ex : av 100) mais galement en tant que e e e mot. (Ex : ecris vide ? 12 cris faux). e
3.2
Procdures e
En plus de ces primitives, vous pouvez dnir vos propres commandes. On les appelle les procdures. e e Les procdures sont introduites ` laide du mot pour et se terminent par le mot fin. On utilise lditeur e a e de procdures interne ` XLOGO pour les taper. Voici un petit exemple : e a pour carre repete 4[avance 100 tournedroite 90] fin
Ces procdures ont le droit dadmettre galement des arguments. Pour cela, on utilise des variables. e e Une variable est un mot auquel on peut aecter une valeur. voici un exemple tr`s simple : e pour deux_fois :mot ecris :mot ecris :mot fin deux_fois [1 2 3] -----> 1 2 3 1 2 3 Voir tous les exemples de procdures en n de manuel. e
3.3
Le caract`re spcial \ e e
Le caract`re \ (backslash) permet en particulier de crer des mots contenant des espaces ou e e contenant un retour ` la ligne. \n provoque un retour ` la ligne et \ suivi dun espace dsigne a a e un espace dans un mot. Exemple : ec "xlogo\ xlogo xlogo xlogo ec "xlogo\nxlogo xlogo xlogo Il sensuit que lon ne peut plus accder au caract`re \ en le tapant il faudra taper \\ . e e De mme, les caract`res ( ) [ ] # sont des dlimiteurs du langage Logo qui ne peuvent tre e e e e utiliss dans des mots. On pourra les introduire en rajoutant un caract`re \ devant. e e Tout caract`re \ tout seul est ignor. Cette remarque est tr`s importante en particulier pour la e e e gestion des chiers Pour xer le rpertoire courant ` C :\Mes Documents, il faudra taper : e a fixerepertoire "c:\\Mes\ Documents. Noter lutilisation du \ pour notier lespace entre Mes et Documents . Si dautre part, vous omettez le double backclash, le chemin dni sera alors c :Mes Documents et linterprteur rendra un e e message derreur.
3.4
XLOGO ne fait pas la dirence majuscule minuscule en ce qui concerne les noms des procdures e e et des primitives. Ainsi, avec la procdure carre dnie prcdemment, que vous tapiez CARRE ou e e e e cArRe, linterprteur de commande traduira correctement et excutera carre. En revanche, XLOGO e e respecte les majuscules dans les listes et les mots :
3.5
Oprateurs et syntaxe e
Il y a deux faons dcrire certaines commandes. Par exemple, pour eectuer laddition de 4 et de c e 7, il y a deux possibilits : soit on se sert de la primitive somme qui attend deux arguments : somme 4 e 7 , soit on se sert de loprateur + : 4+7. Les deux ont le mme eet. e e Voici la liste des correspondances entre oprateurs et primitives : e somme difference produit divise + * / ou et egal ? | (ALT GR+6) & = Les deux oprateurs | et & sont deux oprateurs spciques ` XLOGO. Ils nexistent pas dans les e e e a versions traditionnelles de LOGO. Voici quelques exemples dutilisation : ec 3+4=7-1 ----> vrai ec 3=4 | 7=49/7 ----> vrai ec 3=4 & 7=49/7 ----> faux
10
3.6
Les couleurs
Les couleurs sont dnies dans XLogo ` laide de trois nombres compris entre 0 et 255. Ce syst`me e a e de codage sappelle le codage RGB (Red, Green, Blue). Chaque nombre correspond respectivement a ` lintensit du rouge, du vert et du bleu dans la couleur considre. Etant donn que ce codage nest e ee e pas tr`s intuitif, XLogo vous propose galement 16 couleurs prdnies accessibles soit par un numro e e e e e soit par une primitive. Numro e 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Primitives noir rouge vert jaune bleu magenta cyan blanc gris grisclair rougefonce vertfonce bleufonce orange rose violet marron [R G B] [0 0 0] [255 0 0] [0 255 0] [255 255 0] [0 0 255] [255 0 255] [0 255 255] [255 255 255] [128 128 128] [192 192 192] [128 0 0] [0 128 0] [0 0 128] [255 200 0] [255 175 175] [128 0 255] [153 102 0] Couleur
# Ces trois commandes ont le m^me effet. e fcc orange fcc 13 fcc [255 200 0]
11
Chapitre 4
4.1
Ce premier tableau regroupe les primitives qui permettent de dplacer la tortue. e Primitives avance, av recule, re tournedroite, td tournegauche, tg cercle arc origine fixeposition, fpos fixex fixey fixexy fixecap Arguments n : nombre de pas n : nombre de pas n : angle n :angle R : nombre R : nombre, cap1,cap2 :nombres aucun [x y] : liste de deux nombres. x : abscisse y : ordonne e x y : abscisse puis ordonne e n : cap Utilisation Fait avancer de n pas la tortue suivant lorientation courante. Fait reculer de n pas la tortue suivant lorientation courante. Fait tourner la tortue de n degrs vers la droite par rapport ` e a son orientation actuelle. Fait tourner la tortue de n degrs vers la gauche par rapport ` e a son orientation actuelle. Trace un cercle de rayon R autour de la tortue. Trace un arc de cercle de rayon R autour de la tortue. Cette arc est compris entre les caps cap1 et cap2. Replace la tortue ` sa position initiale, cest ` dire au point de a a coordonnes [0 0] et avec pour cap 0 e Dplace la tortue au point de coordonnes spci ` laide de e e e ea la liste des deux nombres.(x dsigne labscisse et y lordonne) e e Dplace la tortue horizontalement jusquau point dabscisse x e Dplace la tortue verticalement jusquau point dordonne y e e Analogue ` fpos[x y] a Oriente la tortue au cap spci. 0 correspond ` la position vere e a ticale vers le haut. On tourne ensuite dans le sens des aiguilles dune montre. Dessine le mot ou la liste spcie ` lendroit o` se trouve la e e a u tortue et suivant son inclinaison. Exemple : etiquette [Salut a ` toi] va crire la phrase Salut ` toi ` lendroit o` est plac e a a u e la tortue en respectant le cap de celle-ci.
etiquette
a : mot ou liste
12
Primitives point
Arguments a : liste
Utilisation Le point dni par les coordonnes de la liste sallume (dans la e e couleur du crayon).
Ce deuxi`me tableau regroupe les primitives permettant dagir sur les proprits de la tortue. Par e ee exemple, faut-il que la tortue soit visible ` lcran ? De quelle couleur doit-elle crire lorsquelle se a e e dplace ? e Primitives montretortue, mt cachetortue, ct videecran, ve nettoie baissecrayon, bc levecrayon, lc gomme, go inversecrayon, ic dessine, de animation Arguments aucun aucun aucun aucun aucun aucun aucun aucun aucun vrai ou faux Utilisation Rend la tortue visible ` lcran. a e Rend la tortue invisible ` lcran. a e Eace la zone de dessin et rinitialise la tortue e a ` sa position initiale. Eace la zone de dessin mais laisse la tortue au mme endroit. e La tortue crit lorsquelle se dplace. e e La tortue ncrit pas lors dun dplacement. e e La tortue eace tous les traits quelle rencontre. Abaisse le crayon et met la tortue en mode dinversion. Abaisse le crayon et le met en mode dessin classique. Si largument vaut vrai : On passe en mode animation. La tortue ne dessine plus ` lcran a e mais eectue le trac en mmoire. Pour ace e tualiser le dessin ` lcran, utiliser la primitive a e rafraichis. Tr`s utile pour crer une animae e tion ou eectuer un trac plus rapidement. e Si largument vaut faux : On repasse en mode classique. On voit les dplacements de la tore tue ` lcran. a e En mode animation, rafraichit lcran : limage e sur la zone de dessin est actualise. e Fixe la couleur du crayon. Voir p.11. Fixe la couleur du fond dcran. Voir p.11. e Retourne la position courante de la tortue. Ex : pos retourne [10 -100] Retourne le cap de la tortue (cf fixecap) La liste doit contenir deux nombres reprsentant e des coordonnes. Rend le cap quil faut donner e a ` la tortue pour aller vers le point dni par les e coordonnes de la liste. e
rafraichis
aucun
a : entier ou fixecouleurcrayon, liste [r g b] fcc a : entier ou fixecouleurfond, liste [r g b] fcfg aucun pos cap vers aucun a : liste
13
Primitives distance
Arguments a : liste
couleurcrayon,cc
a : liste
couleurfond,cf
a : liste
aucun aucun
clos
aucun
trouvecouleur,tc
a : liste
n : nombre n : nombre
Utilisation La liste doit contenir deux nombres reprsentant e des coordonnes. Rend le nombre de pas entre e la position actuelle et le point dni par les coe ordonnes de la liste. e Retourne la couleur actuelle du crayon. Cette couleur est dtermine ` laide dune liste [r g b] e e a ou r est la composante rouge, b la bleue et g la verte. Retourne la couleur actuelle du fond. Cette couleur est dtermine ` laide dune liste [r g b] e e a ou r est la composante rouge, b la bleue et g la verte. Si la tortue sort de la zone de dessin, elle rape para de lautre ct ! t oe La tortue est libre de sortir de la zone de dessin. Bien s r, elle ncrira pas en dehors de cette u e derni`re. e La tortue est conne ` la zone de dessin. Si e a elle sapprte ` sortir, un message derreur vous e a lindiquera et vous donnera le nombre de pas maximum de la tortue avant sortie ( ` 1 ou 2 a pas pr`s ...). e Retourne la couleur du pixel de coordonnes a. e Cette couleur est dtermine ` laide dune liste e e a [r g b] ou r est la composante rouge, b la bleue et g la verte. Dnit lpaisseur de la pointe du crayon en e e pixel. Rgl sur 1 par dfaut. e e e Vous pouvez choisir de laspect de la tortue utilise soit en allant dans Option-Prfrences-Choix e ee de la tortue soit ` laide de cette primitive. Le a nombre n doit tre un entier compris entre 0 et e 6. (0 dsigne la forme triangulaire) e Renvoie le numro qui reprsente limage ace e tuelle de la tortue. Lorsquon crit du texte sur lcran ` laide de e e a la primitive etiquette, il est possible de modier la taille de la police utilise ` laide de cette e a primitive. Par dfaut, la taille de la police est e rgle ` 12. e e a Renvoie la taille de la police actuellement utilise lorsquon crit avec la primitive etiquette. e e Fixe la police utilise pour crire ` lcran ` e e a e a laide de la primitive etiquette. Le numro e identiant la police ` utiliser est reprable dans a e Menu > Options > Prfrences > Onglet Poee lice.
aucun n : entier
aucun n : entier
14
Primitives nompolice, np
Arguments aucun
fixeseparation, fsep
a : nombre
aucun [liste]
Utilisation Renvoie une liste compose de deux lments. e ee Le premier est le numro correspondant ` la poe a lice utilise pour crire ` laide de la primitive e e a etiquette. Le second est une liste contenant le nom de cette mme police. e Dtermine le ratio entre la fentre graphique et e e la zone dhistorique. Le nombre a doit tre e message [Ceci compris entre 0 et 1. Lorsquil vaut 1 la zone de dessin occupe toute la place, lorsquil vaut 0, la zone dhistorique occupe toute la fentre etc e Renvoie le ratio actuel entre la zone de dessin et la zone dhistorique. Ache un message dinformation dans une bo de dialogue, lexcution du programme est te e stopp en attente dun click sur OK. e
est un message dinformation. Le texte est automatiquement dispos sur plusieurs lignes e afin quil soit bien lisible. De plus, le programme reste en attente que lon appuie sur OK.]
4.2
Ce tableau regroupe les primitives associes ` la zone de texte dhistorique. Toutes les primitives e a concernant la taille et la couleur de la police utilise ne sont valables que pour le rendu de la primitive e ecris.
15
Utilisation Eace la zone contenant lhistorique des commandes et des commentaires. Ache largument spci dans la zone dhistoe e rique. ec "abcd --------> abcd ec [1 2 3 4] ----> 1 2 3 4 ec 4 ------------> 4
tape
ftpt, fixetaillepolicetexte
aucun taillepolicetexte, tpt a :nombre ou fct, liste fixecouleurtexte ctexte, couleurtexte aucun
Identique ` la primitive ecris mais ne retourne a pas ` la ligne. a Dnis la taille de la police dans la zone dhise torique. Valable uniquement pour la primitive ecris Renvoie la taille de la police associe ` la primie a tive ecris. Dnis la couleur de la police dans la zone dhise torique. Valable uniquement pour la primitive ecris. Voir p.11. Renvoie la couleur de la police associe ` la prie a mitive ecris dans la zone dhistorique. Fixe la police utilise pour crire dans lhistoe e rique ` laide de la primitive ecris. Le numro a e de la police est reprable dans Menu > Options e > Prfrences > Onglet Police. ee Renvoie une liste compose de deux lments. e ee Le premier lment est le numro reprsentant ee e e la police utilise pour crire ` lcran ` laide e e a e a de la primitive ecris. Le second est une liste contenant le nom de cette mme police. e Fixe le style du rendu de la police utilise par e la primitive ecris. Les dirents styles pose sibles sont aucun, gras, italique, barre, indice, exposant, souligne. Si vous souhaitez en utiliser plusieurs ` la fois, les indiquer a dans une liste. Voir les exemples apr`s ce tae bleau. Renvoie une liste compose des dirents styles e e actuellement utiliss pour le rendu de la primie tive ecris.
nompolicetexte, npt
fixestyle, fsty
liste ou mot
style, sty
aucun
Quelques exemples pour le formatage du texte avec la primitive ecris : fixestyle [gras souligne] ecris "bonjour bonjour fsty "barre tape [texte ray] fsty "italique tape "\ x fsty "exposant ecris 2 e texte ray x2 e 16
4.3
difference
moins
produit div, divise quotient reste arrondi tronque puissance racine, rac log10 sinus, sin cosinus, cos tan,tangente acos,arccosinus asin,arcsinus atan,arctangente pi hasard absolue, abs
a b : nombres a b : nombres a b : nombres a b : entiers a : nombre a : nombre a b : entiers n : nombre n : nombre a : nombre a : nombre a : nombre a : nombre a : nombre a : nombre aucun n : entier n : nombre
Remarque : Attention aux primitives ncessitant deux param`tres ! e e fixexy a b Si b est ngatif e Ex : Par exemple, fixexy 200 -10 Linterprteur logo va eectuer lopration 200-10. Il va donc considrer quil ny a quun param`tre e e e e (190) alors quil lui en faut deux do` un message derreur. Pour viter ce type de probl`me, utiliser u e e la primitive moins indiquant loppos. fixexy 200 moins 10 et l`, il ny a plus de probl`mes ! e a e Une autre possibilit peut tre dutiliser les parenth`ses en tapant : fixexy 200 (-10) e e e
Voici la liste des oprateurs logiques : e Primitives ou et non Param`tres e b : boolens e b : boolens e a : boolens e Utilisation Renvoie vrai si a ou b est vrai, sinon renvoie faux Renvoie vrai si a et b sont gaux ` vrai sinon e a renvoie faux Renvoie la ngation de a. Si a est vrai, renvoie e faux.Si a est faux, renvoie vrai.
18
4.4
phrase, ph
ab
metspremier, mp
a b : a quelconque, b liste a b : a quelconque, b liste a : liste a : a mot ou liste a b : a quelconque, b liste a b : a entier, b liste ou mot a : liste ou mot
metsdernier, md
inverse choix
enleve
item
saufdernier, sd
saufpremier, sp
a : liste ou mot
a : liste ou mot a : liste ou mot li1 n li2 : li1 liste, n entier, li2 mot ou liste li1 n li2 : li1 liste, n entier, li2 mot ou liste
ajoute
Si a est un mot, renvoie le nombre de lettres de a. Si a est une liste, renvoie le nombre dlments de a. ee Renvoie la valeur unicode du caract`re a . e ec unicode "A renvoie 65 Renvoie le caract`re dont la valeur unicode est a . e ec caractere 65 renvoie "A
20
4.5
Boolens e
Un boolen est une primitive qui renvoie le mot vrai ou le mot faux. Ces primitives se terminent e par un point dinterrogation. Primitives vrai faux mot ? nombre ? entier ? liste ? vide ? egal ? precede ? membre ? Param`tres e aucun aucun a a a a a ab a b : mots ab Utilisation Renvoie vrai Renvoie faux Renvoie vrai si a est un mot, faux sinon. Renvoie vrai si a est un nombre, faux sinon. Renvoie vrai si a est un entier, faux sinon. Renvoie vrai si a est une liste, faux sinon. Renvoie vrai si a est une liste vide ou un mot vide, faux sinon. Renvoie vrai si a et b sont gaux, faux sinon. e Renvoie vrai si a est avant b dans lordre alphabtique, faux sinon. e Si b est une liste, prcise si a est lment de b. e ee Si b est un mot, prcise si a est un caract`re de e e b. Si b est une liste, recherche a dans cette liste, deux cas possibles : -Si a est dans b, renvoie la sous-liste gnre ` e ee a partir de la premi`re apparition de a dans b. e -Si a nest pas dans b, renvoie le mot faux. Si b est un mot, recherche le caract`re a dans b, e deux cas possibles : - Si a est dans b renvoie la n du mot ` partir a de a. -Sinon, renvoie le mot faux. membre o coucou renvoie oucou membre 3 [1 2 3 4] renvoie [3 4] Renvoie le mot vrai si le crayon est baiss, faux e sinon. Renvoie le mot vrai si la tortue est visible, faux sinon. Renvoie vrai si le mot est une primitive de XLOGO, faux sinon. Renvoie vrai si le mot est une procdure dnie e e par lutilisateur, faux sinon.
membre
ab
21
4.6
Comme dans tout langage de programmation, le Logo ore la possibilit de vrier si une condition e e donne est vraie ou fausse an dexcuter le bout de code associ. e e e La primitive si permet de raliser ces tests. Voici sa syntaxe : e si expression_test [ liste1 ] [ liste2 ] Si lexpression test est vraie alors les commandes situes dans la liste 1 seront excutes. En revanche, e e e si cette expression est fausse alors ce sont les commandes de la liste 2 qui seront excutes. La deuxi`me e e e liste dintruction est optionnelle. Exemples dutilisation : si 1+2=3[ecris "vrai][ecris "faux] si (premier "XLOGO)="Y [av 100 td 90] [ec [ XLOGO commence par un X !] ] si (3*4)=6+6 [ec 12]
4.7
4.7.1
Les procdures sont des sortes de programmes . A lappel de leur nom, les instructions comprises e dans le corps de la procdure sont excutes. On dnit une procdure ` laide du mot-cl pour. e e e e e a e
pour nom_de_la_procdure :v1 :v2 :v3 .... e Corps de la procdure e fin e e a e nom de la procdure est le nom donne ` la procdure. :v1 :v2 :v3 reprsentent les variables utilises au sein de cette procdure (variables locales). e e e Corps de la procdure reprsente les instructions ` excuter ` lappel de cette procdure. e e a e a e Ex : pour carre :c repete 4[av :c td 90] fin La procdure se nomme carre et poss`de un param`tre sappelant c. carre 100 produira donc e e e un carre de ct 100. (Voir les exemples de procdures ` la n du manuel.) oe e a Il est possible depuis la version 0.7c de rajouter des commentaires dans le code en les prcdant e e du signe #. pour carre :c #cette procdure permet de tracer un carr de c^t donn :c. e e o e e repete 4[av :c td 90] # pratique, non ? fin IMPORTANT : Il ne doit pas y avoir de commentaires sur la ligne du pour et sur celle de fin.
22
4.7.2
Notion de variables
Il existe deux sortes de variables : Les variables globales : elles sont toujours disponibles ` nimporte quel endroit du programme. a Les variables locales : elles ne sont accessibles que dans la procdure o` elles ont t dnies. e u ee e Dans cette version de LOGO, les variables locales ne sont pas accessibles dans les sous-procdures. A e la sortie de la procdure, les variables locales sont limines. e e e
4.7.3
La primitive trace
Il est possible pour suivre le droulement dun programme de lui faire acher les procdures en e e cours dexcution. Ce mode permet dacher galement si les procdures rendent des arguments ` e e e a laide de la primitive retourne. Pour enclencher ce mode, on tape : trace vrai Bien s r, trace faux dsactivera le mode trace . Un petit exemple avec le factorielle (voir p. 43 ). u e trace vrai ecris fac 4 fac 4 fac 3 fac 2 fac 1 fac retourne 1 fac retourne 2 fac retourne 6 fac retourne 24 24
23
Primitives donne
locale
a : mot
donnelocale
a b : a mot, b quelconque
Utilisation Si la variable locale a existe, lui aecte la valeur b. Sinon, cre la variable globale a en lui e aectant la valeur b. Ex : donne a 100 aecte 100 ` la variable a a Cre une variable nomme a. Attention, celle-ci e e nest pas initialise. Pour lui donner une valeur, e voir donne. Cre une nouvelle variable locale a et lui aecte e la valeur b. Dnis une nouvelle procdure nomme mot1, e e e munie des variables contenues dans liste2 et dont les instructions ` excuter sont contenues a e dans liste3. def "polygone [nb longueur] [repete :nb[av :longueur td 360/:nb]] -> Ceci dnit une procdure nomme polye e e gone avec deux variables ( :nb et :longueur). Elle permet de tracer un polygne rgulier o e dont on peut choisir le nombre de cts et la oe longueur de chacun des cts. oe Renvoie la valeur de la variable a. chose a et :a sont deux notations quivalentes. e Eace la procdure sappelant a. e Eace la variable a. Eace toutes les variables et procdures en e cours. Enum`re toutes les procdures actuellement de e e nies. Renvoie une liste contenant lensemble des variables actuellement dnies. e Excute la liste dinstruction contenue dans la e liste.
def, definis
mot1 liste3
liste2
chose efn, effacenom efv, effacevariable efns, effacenoms imts listevariables exec, execute
24
4.8
Primitives chargeimage, ci
aucun
m : mot l :liste
sauved
m : mot
ramene
m : mot
ouvreflux
id fich
25
Arguments aucun id id
ecrisligneflux
id liste
ajouteligneflux
id liste
fermeflux finflux ?
id id
Utilisation Ache la liste des dirents ux ouverts avec leur identie ant. Ouvre le ux dont lidentiant est le numro pass en argue e ment puis lis une ligne dans ce chier. Ouvre le ux dont le numro didentiant est celui pass en e e argument puis lis un caract`re dans ce chier. Cette primie tive renvoie un nombre reprsentant la valeur du caract`re e e (semblable ` liscar). a Ecris la ligne de texte contenue dans la liste au dbut du e chier repr par lidentiant id. Attention, lcriture nest ee e eective que lorsque lon ferme le ux avec la primitive fermeflux. Ecris la ligne de texte contenue dans la liste ` la n du chier a repr par lidentiant id. Attention, lcriture nest eective ee e que lorsque lon ferme le ux avec la primitive fermeflux. Ferme le ux dont le numro didentiant est celui pass en e e argument. Renvoie "vrai si on est arriv ` la n du chier. Renvoie e a "faux sinon.
Voici un exemple dutilisation des primitives permettant de lire et crire dans un chier. Nous pre e senterons cet exemle pour une architecture de type Windows. Les autres utilisateurs sauront adapter lexemple suivant. Lobjectif est de crer le chier c :\exemple contenant les trois lignes : e ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789
# On ouvre un flux vers le fichier dsir. Ce flux sera repr par le numro 2 e e e e e fixerepertoire "c:\\ ouvreflux 2 "exemple # On crit les lignes dsires e e e ecrisligneflux 2 [ABCDEFGHIJKLMNOPQRSTUVWXYZ] ecrisligneflux 2 [abcdefghijklmnopqrstuvwxyz] ecrisligneflux 2 [0123456789] # On ferme le flux pour achever lcriture e fermeflux 2 A prsent, on peut constater que lcriture sest bien passe : e e e # On ouvre un flux vers le fichier ` lire. Ce flux sera repr par le numro 0 a e e e ouvreflux 0 "c:\\exemple # On lit les lignes du fichiers successivement ec lisligneflux 0 ec lisligneflux 0 ec lisligneflux 0 # On ferme le flux 26
fermeflux 0 Si on souhaite ` prsent rajouter la ligne Formidable ! : a e fixerepertoire "C:\\ ouvreflux 1 "exemple] ajouteligneflux 1 [Formidable !] fermeflux 1
27
4.9
Il existe deux primitives permettant de colorier une forme : La primitive remplis et la primitive rempliszone . On peut apparenter ces primitives avec la fonction pot de peinture utilise dans de e nombreux logiciels de retouche dimages. On peut atteindre les bords de la zone de dessin. Il y a deux r`gles ` respecter pour utiliser correctement ces primitives : e a 1. Le crayon doit tre en position baiss (bc). e e 2. La tortue ne doit pas tre situe sur un pixel de la couleur dont on veut remplir la forme. (Si on e e veut colorier en rouge, ne pas se trouver soi-mme sur du rouge...) e Voyons un exemple pour expliquer la dirence entre remplis et rempliszone : Le pixel sous la tortue e
Fig. 4.1 Situation initiale est actuellement de couleur blanche. La primitive remplis va colorier tous les pixels blancs voisins avec la couleur du crayon en cours. Si par exemple on tape : fcc 1 remplis
Fig. 4.2 Avec la primitive remplis Revenons ` prsent au premier cas, Si la couleur du crayon de la tortue est le noir, la primitive a e rempliszone, colorie tous les pixels voisins jusqu` rencontrer la couleur en cours (ici noire). Voici, un a bel exemple dutilisation de la primtive remplis : pour demice :c # trace un demi-cercle de diam`tre :c e repete 180 [av :c*tan 0.5 td 1] av :c*tan 0.5 td 90 av :c fin pour arcenciel :c 28
si :c<100 [stop] demice :c td 180 av 20 tg 90 arcenciel :c-40 fin pour dep lc td 90 av 20 tg 90 bc fin pour demarrer ct arcenciel 400 go tg 90 av 20 re 120 de lc td 90 av 20 bc fcc 0 remplis dep fcc 1 remplis dep fcc 2 remplis dep fcc 3 remplis dep fcc 4 remplis dep fcc 5 remplis dep fcc 6 remplis dep fin
29
4.10
XLOGO poss`de trois instructions de saut : stop, stoptout et retourne. e stop peut avoir deux eets : sil est inclus dans une boucle repete ou tantque : ` ce moment a l`, on sort de la boucle. Sil est dans une procdure, on sort immdiatement de la procdure. a e e e stoptout interrompt dnitivement lexcution de toutes les procdures en cours. e e e retourne permet de sortir dune procdure en retournant une valeur. e Voir les nombreux cas dutilisation des deux primitives stop et retourne dans les exemples ` la a n du manuel.
4.11
Le mode multitortues
Il est possible de piloter ` lcran plusieurs tortues ` la fois. Par dfaut, lorsquon lance XLOGO, a e a e une seule tortue est active. Elle est repre par le numro 0. Pour crer une nouvelle tortue ` lcran, ee e e a e on utilise la primitive fixetortue suivi du numro de la tortue dsire. Pour vitement lencombree e e e ment sur la fentre de dessin, celle-ci est cre ` lorigine de la zone de dessin (coordonnes (0 ;0)) et est e ee a e invisible, cest ` dire quil faudra se servir de la commande mt pour la faire appara a tre. Ensuite cette nouvelle tortue obit aux ordres classiques tant que lon ne change pas de tortue avec fixetortue. Le e nombre maximal de tortues disponibles se r`gles dans Options - Prfrences - Onglet options. e ee Voici la liste des primitives concernant le mode multitortues :
30
Param`tres e a : nombre
Utilisation Dtermine le numro de la tortue active. Par e e dfaut, la premi`re tortue active au lancement e e de XLOGO a le numro 0. e Renvoie le numro de la tortue actuellement utie lise e Renvoie une liste compose de tous les numros e e des tortues actuellement utilises e Elimine de lcran la tortue numro a e e
4.12
Jouer de la musique
Param`tres e a : liste Utilisation Met en mmoire la squence musicale situe e e e dans la liste. Pour apprendre ` rdiger squence a e e musicale, voir les instructions apr`s le tableau. e Joue la squence actuellement mise en mmoire. e e Renvoie le numro correspondant ` linstrument e a actuellement slectionn. e e Slectionne comme instrument linstrument e numro a. Vous pouvez voir la liste des e instruments disponibles dans menu-optionsprfrence-onglet son. ee Renvoie ` quel temps le curseur est situ dans a e la squence en cours. e Dplace le curseur au temps numro a dans la e e squence musicale actuellement en mmooire. e e Eace la squence actuellement en mmoire. e e
Pour jouer de la musique, il faut mettre au pralable la composition dsire en mmoire dans ce e e e e que lon appellera ici une squence musicale. On cre la squence ` laide de la commande seq ou e e e a sequence. Voici les quelques r`gles ` respecter pour crire convenablement une squence musicale : e a e e do re mi fa sol la si : dsignent les notes usuelles de la premi`re octave. e e Pour faire un r di`se, on tapera re + e e Pour faire un re bmol, on tapera re e Si on veut changer doctave, on utilise le symbole : suivit de + ou -. Par exemple, apr`s avoir e tap :++, toutes les notes joues seront augmentes de deux octaves (il y a deux +). e e e Les notes sont par dfaut joues sur une dure de un temps. Si on veut changer la dure dune srie de e e e e e notes, on lindique par le nombre indiquant la dure dsire. Pour taper une srie de croches( 1 temps), e e e e 2 on tapera seq [0.5 sol la si]. Un bon exemple valant mieux que mille explications :
31
pour tabac # Met en mmoire la partition e sequence [0.5 sol la si sol 1 1 la 0.5 la si 1 :+ sequence [:+ 1 re 0.5 re do 1 sequence [:+ 1 re 0.5 re do 1 sequence [0.5 sol la si sol 1 1 la 0.5 la si 1 :+ fin
la do ::la do
Pour lancer la musique, il ne nous reste plus qu` taper : tabac joue a Voyons ` prsent une application intressante de la primitive ndseq. Taper les commandes suivantes : a e e
# # # # #
On On On On Un
efface la squence actuellement en mmoire e e recharge la musique prcdente e e replace le curseur au niveau du premier "la" noir de la 2nde mesure recharge la m^me squence mais dcale de deux temps. e e e e magnifique canon !
Vous pouvez galement changer dinstruments, soit ` laide de la commande finstr soit dans le e a menu Options-Prfrences-Onglet son. Vous trouverez la liste de tous les instruments disponibles avec ee leur numro (Cest en anglais, mais ca permet de se donner une ide. Chez moi, 411 instruments e e disponibles !)
32
4.13
Boucles :
XLOGO dispose de trois primitives permettant deectuer des boucles : repete, repetepour et tantque.
4.13.1
Voici la syntaxe de repete : repete n liste_d_instruction n est un entier et liste_d_instruction est une liste contenant des instruction ` excuter. Lintera e prteur LOGO va eectuer n fois les commandes contenues dans la liste : cela vite ainsi de recopier e e n fois la mme instruction ! e Ex : repete 4 [avance 100 tournegauche 90] repete 6 [avance 100 tournegauche 60] repete 360 [avance 2 tournegauche 1] # # # # Un carr de c^t 100 e o e Un hexagone de c^t 100 o e Un euh... 360-gone de c^t 2 o e Bref, quasiment un cercle !
Au sein dune boucle repete, est dnie une variable interne compteur. Celle-ci dsigne le numro de e e e litration en cours (la premi`re itration tant numrote 1). e e e e e e repete 3 [ec compteur] 1 2 3
4.13.2
repetepour joue le rle des boucles for dans dautres langages de programmation. Elle consiste ` o a aecter ` une variable un certain nombre de valeurs comprises dans un intervalle donn suivant un a e incrment donn. Voici sa syntaxe : e e repetepour liste1 liste2 La liste 1 contient trois param`tres : le nom de la variable, la borne initiale, la borne nale. e On peut rajouter un quatri`me argument optionnel dsignant lincrment (le pas avec lequel la variable e e e dle). Sil est omis, il est par dfaut de 1. Quelques exemples dutilisation : e e repetepour [i 1 4][ec :i*2] 2 4 6 8 # A prsent on fait varier i entre 7 et 2 en descendant de 1.5 a chaque fois e ` # noter lincrment ngatif e e # On affiche ensuite i son carr. e repetepour [i 7 2 -1.5 ][ec liste :i puissance :i 2] 33
4.13.3
Voici la syntaxe de tantque : tantque liste_a_tester liste_d_instruction liste_a_tester est une liste contenant une suite dinstruction rendant un boolen. liste_d_instruction e est une liste contenant des instruction ` excuter. Linterprteur LOGO excutera continuellement a e e e liste_d_instruction tant que liste_a_tester rend vrai. Ex : tantque ["vrai] [td 1] # La tortue tourne sur elle-m^me e
# Un exemple qui nous permet dpeler lalphabet ` lenvers e a donne "liste "abcdefghijklmnopqrstuvwxyz tantque [non vide? :liste] [ec dernier :liste donne "liste saufdernier :liste]
34
4.14
XLOGO peut interagir avec lutilisateur pendant lexcution dun programme par lintermdiaire e e du clavier et de la souris.
4.14.1
On peut donc recevoir du texte de lutilisateur pendant le programme ` laide de 3 primitives : a touche ?, liscar et lis. touche ? : rend vrai ou faux selon quune touche ait t presse ou non depuis le dbut de lexcution ee e e e du programme. liscar : Si touche ? est faux, bloque le programme jusqu` ce lutilisateur appuie sur une touche. a Si touche ? est vrai rend la valeur correspondant ` la touche qui a t la derni`re enfonce. a ee e e A > 65 > -37 ou -226 (NumPad) Echap > 27 Shift > -16 B > 66 > -38 ou -224 F1 > -112 Espace > 32 C > 67 > -39 ou -227 F2 > -113 Ctrl > -17 etc ... > -40 ou -225 .... Enter > 10 Z > 90 F12 > -123
Tab. 4.1 Quelques valeurs de touche Si vous avez un doute par le mot retourn par une touche, il vous sut de taper : e ec liscar. Linterprteur va alors attendre que vous tapiez sur une touche puis vous donnera la valeur e correspondante. lis liste_titre mot : Ache une bo de dialogue dont le titre est liste_titre. Lutilisateur te peut alors rentrer une rponse dans un champ de texte, la rponse sera stocke sous forme de liste e e e dans la variable :mot lorquil validera ou cliquera sur le bouton OK.
4.14.2
pour yeuv lis [Quelle est ton age?] "age donne "age premier :age si :age<18 [ec [tu es mineur]] si ou :age=18 :age>18 [ec [tu es majeur]] si :age>99 [ec [Respect !!]] fin pour rallye si touche? [ donne "car liscar si :car=-37 [tg 90] si :car=-39 [td 90] si :car=-38 [av 10] si :car=-40 [re 10] si :car=27 [stop] ] rallye fin # On contr^le la tortue avec le clavier, on arr^te avec Esc o e 35
4.14.3
Pour cela, on dispose de trois primitives : lissouris, souris ? et possouris. lissouris : Bloque le programme jusqu` ce quun vnement souris se produise : on entend par a e e vnement souris le fait de dplacer la souris ou de cliquer sur lun de ses boutons. Une fois lvnement e e e e e produit, lissouris rend un nombre permettant de caractriser lvnement. Voici les dirents codes e e e e associs aux dirents vnements quils reprsentent : e e e e e 0 > on a dplac la souris e e 1 > on a appuy sur le bouton 1 de la souris e 2 > on a appuy sur le bouton 2 de la souris e etc Les boutons sont numrots de la gauche vers la droite (en principe...) e e possouris : Renvoie une liste contenant les coordonnes de la souris lors du dernier vnement e e e intercept. e souris ? : rend vrai ou faux selon que lon ait agi ou non sur la souris depuis le dbut de lexe e cution du programme.
4.14.4
Dans cette premi`re procdure, la tortue suit la souris lorsquelle se dplace sur la zone de dessin. e e e pour exemple # Si on dplace la souris, se positionner ` la nouvelle position e a si lissouris=0 [fpos possouris] exemple fin Dans cette deuxi`me procdure, cest le mme principe sauf quil faut cliquer avec le bouton gauche e e e de la souris pour provoquer le dplacement de la tortue sur la zone de dessin. e pour exemple2 si lissouris=1 [fpos possouris] exemple2 fin Dans ce troisi`me exemple, nous allons crer deux boutons. Celui de gauche permettra de tracer un e e carr de 40 sur 40 vers la droite, celui de droite un petit cercle vers la gauche. Enn, si lon clique avec e le troisi`me bouton de la souris sur le bouton de droite, cela provoquera larrt du programme. e e pour bouton #cre un bouton rectangulaire de 50 sur 100 colori en saumon e e repete 2[av 50 td 90 av 100 td 90] td 45 lc av 10 bc fcc [255 153 153] remplis re 10 tg 45 bc fcc 0 fin pour lance 36
ve bouton lc fpos [150 0] bc bouton lc fpos [30 20] bc etiquette "Carr e lc fpos [180 20] bc etiquette "Cercle lc fpos [0 -100] bc souris fin pour souris # On enregistre le rsultat de lissouris dans la variable ev e donne "ev lissouris # On enregistre la premi`re coordonne de la souris dans la variable x e e donne "x item 1 possouris # On enregistre la premi`re coordonne de la souris dans la variable y e e donne "y item 2 possouris # Si lon clique sur le bouton de gauche si :ev=1 & :x>0 & :x<100 & :y>0 & :y<50 [carre] # Si lon clique sur le bouton de droite si :x>150 & :x<250 & :y>0 & :y<50 [ si :ev=1 [cercle] si :ev=3 [stop] ] souris fin pour cercle repete 90 [av 1 tg 4] tg 90 lc fin
av 40 td 90 bc
37
4.15
Gestion du temps
XLogo dispose de plusieurs primitives permettant de conna lheure, la date ou encore de grer tre e des comptes ` rebours (utiles pour rpter une tche ` des intervalles xs). a e e a a e Primitives Arguments Utilisation n : entier Bloque le programme et donc la tortue pendant attends e n 60`me de secondes. n : entier Lance un compte ` rebours de n secondes. On a debuttemps peut savoir si le compte ` rebours est termin ` a ea laide de la primitive fintemps ? aucun Rend "vrai si aucun compte ` rebours nest aca fintemps ? tif. Rend "faux si le compte ` rebours nest pas a termin. e aucun Renvoie une liste form de trois entiers repre e date sentant la date. Le premier indique le jour, le second le mois et le dernier lanne. > [jour e mois anne] e aucun Renvoie une liste de trois entiers reprsentant e heure lheure. Le premier entier reprsente les heures, e le second les minutes et le dernier les secondes. > [heure minute seconde] aucun Renvoie le temps coul depuis le dmarrage de e e e temps XLogo. Ce temps est exprim en secondes. e Voici une petite procdure exemple : e pour horloge # affiche lheure sous forme numrique e # (on actualise laffichage toutes les 5 secondes) si fintemps? [ ve fixepolice 75 ct donne "heu heure donne "h premier :heu donne "m item 2 :heu #affichage ` deux chiffres des minutes (on rajoute le 0) a si :m-10<0 [donne "m mot 0 :m] donne "s dernier :heu #affichage ` deux chiffres des secondes a si :s-10<0 [donne "s mot 0 :s] etiquette mot mot mot mot :h ": :m ": :s debuttemps 5 ] horloge fin
38
4.16
4.16.1
Tout dabord, dans cette introduction, il est ncessaire de vous expliquer certains termes de vocabue laire an de bien comprendre lusage des direntes primitives. Deux ordinateurs peuvent commuiquer e
Fig. 4.5 Notion de rseau e via le rseau sils sont quips de carte rseau (appele aussi carte ethernet). Chaque ordinateur est e e e e e alors repr par une adresse personnelle : Son adressse IP. Cette adresse IP est compose de 4 entiers ee e compris entre 0 et 255 spars par des points. Par exemple, ladresse IP du premier ordinateur du e e schma prcdent est 192.168.1.1 e e e Etant donn quil nest pas facile de retenir ce genre dadresse, il est galement possible de faire e e correspondre ` chaque adresse IP un nom usuel plus facile ` retenir. Sur le schma prcdent, on peut a a e e e ainsi sadresser ` lordinateur de droite soit en lappelant par son adresse IP : 192.168.1.2, soit en a lappelant par son nom : tortue Je ne mtends pas davantage sur la signication de ces nombres. Je rajoute juste une chose quil e est bon de savoir, lordinateur local sur lequel on travaille est repr galement par une adresse : ee e 127.0.0.1. Le nom qui lui est associ est gnralement localhost e e e
4.16.2
XLogo dispose de 4 primitives permettant de communiquer grce au rseau : ecoutetcp, executetcp, a e chattcp et envoietcp. On prendra toujours dans les exemples qui suivent le cas des deux ordinateurs du schma prcdent. e e e ecoutetcp : Cette primitive ecoutetcp est la base de toute communication rseau. Elle nattend e aucun argument. Elle permet de mettre lordinateur qui lexcute ` lcoute dordres donns par e a e e dautres ordinateurs du rseau. e executetcp : Cette primitive permet dexcuter des instructions sur un ordinateur du rseau. e e Syntaxe : executetcp mot liste Le mot dsigne ladresse IP ou le nom de lordinateur e appel, la liste contient les instructions ` excuter. e a e 39
Exemple : Je suis sur lordinateur lievre, je souhaite tracer un carr de ct 100 sur lautre ore oe dinateur. Par consquent, il faut que sur lordinateur tortue, je lance la commande ecoutetcp. e Ensuite, sur lordinateur lievre, je lance : executetcp "192.168.1.2 [repete 4[av 100 td 90]] ou executetcp "tortue [repete 4[av 100 td 90]] chattcp : Permet de dialoguer entre deux ordinateurs du rseau en achant une fentre pere e mettant la conversation. Syntaxe : chattcp mot liste Le mot dsigne ladresse IP ou le nom de lordinateur ape pel, la liste contient la phrase ` acher. e a Exemple : lievre veut discuter avec tortue. tortue lance ecoutetcp pour se mettre en attente de requte dordinateurs du rseau. lievre e e lance alors : chattcp "192.168.1.2 [bonjour]. Deux fentres permettant le dialogue souvre alors sur chacun des ordinateurs. e
envoietcp : Envoie des donnes vers un ordinateur du rseau puis renvoie la rponse de lautre e e e ordinateur. Syntaxe : envoietcp mot liste Le mot dsigne ladresse IP ou le nom de lordinateur ape pel, la liste contient les donnes ` envoyer. Si la communication se fait avec un autre ordinateur e e a o` XLogo est lanc, cet ordinateur rpondra OK une fois lopration termine. Il est galement u e e e e e possible de dialoguer avec un robot muni dune interface rseau, la rponse pourra tre dirente e e e e a ` ce moment. Exemple : tortue veut envoyer ` lievre la squence 3.14159 presque le nombre pi. a e lievre lance ecoutetcp pour se mettre en attente de requte dordinateurs du rseau. tortue e e lance alors : ecris envoietcp "lievre [3.14159 presque le nombre pi].
Une petite astuce : Lancer deux fois XLogo sur le mme ordinateur. e - Dans la premi`re fentre, lancer ecoutetcp. e e - Dans la seconde, lancer executetcp "127.0.0.1 [av 100 td 90] Vous avez ainsi dplacer la tortue sur lautre fentre ! (h oui, 127.0.0.1 dsigne ladresse locale donc e e e e lordinateur lui-mme...) e
40
Chapitre 5
Exemples de programmes
5.1 Dessiner des maisons
Fig. 5.1 Maisons pour maison repete 4[av av 20*:c td repete 3[av fin :c 20*:c td 90] 30 20*:c td 120]
fin pour mai ve lc tg 90 av 200 td 90 bc ct maison 3 dep 3 maison 5 dep 5 maison 7 dep 7 maison 10 fin
42
5.2
Fig. 5.2 Rectangle pour rec :lo :la si :lo=0|:la=0 [stop] repete 2[av :lo td 90 av :la td 90] rec :lo-1 :la -1 fin
5.3
Factorielle
Rappel : 5! = 5 4 3 2 1 = 120 pour fac :n si :n=0[ret 1][ret :n*fac :n-1] fin ec fac 5 120 ec fac 6 720
5.4
pour koch :ordre :lon si :ordre < 1 | :lon <1 [avance :lon stop] koch :ordre-1 :lon/3 tg 60 koch :ordre-1 :lon/3 td 120 koch :ordre-1 :lon/3 tg 60 koch :ordre-1 :lon/3 fin 43
pour kochflake :ordre :lon repete 3 [td 120 koch :ordre :lon] fin kochflake 5 450
44
5.5
Un peu dcriture... e
pour ecrire ct repete 40[av 30 td 9 fcc hasard 7 etiquette [xlogo cest sympa!]] fin
45
5.6
5.6.1
Et de conjugaison...
Premi`re version e
pour futur :mot ec ph "je mot :mot "ai ec ph "tu mot :mot "as ec ph "il mot :mot "a ec ph "nous mot :mot "ons ec ph "vous mot :mot "ez ec ph "elles mot :mot "ont fin futur "parler je parlerai tu parleras il parlera nous parlerons vous parlerez elles parleront
5.6.2
Deuxi`me mouture e
pour fut :mot donne "pronoms [je tu il nous vous elles] donne "terminaisons [ai as a ons ez ont] donne "i 0 repete 6[donne "i :i+1 ec ph item :i :pronoms mot :mot item :i :terminaisons] fin fut "parler je parlerai tu parleras il parlera nous parlerons vous parlerez elles parleront
5.6.3
pour fu :verbe donne "pronoms [je tu il nous vous elles] donne "terminaisons [ai as a ons ez ont] conjugue :verbe :pronoms :terminaisons fin
46
pour conjugue :verbe :pronoms :terminaisons si vide? :pronoms [stop] ec ph premier :pronoms mot :verbe premier :terminaisons conjugue :verbe sp :pronoms sp :terminaisons fin fu "parler je parlerai tu parleras il parlera nous parlerons vous parlerez elles parleront
5.7
5.7.1
Tout dabord, quelques explications : vous remarquerez que la commande fcc prend soit en param`tre une liste soit un nombre. Ici, nous allons nous intresser au codage [r g b] Qusako ? ? ? ? e e e Chaque couleur dans XLOGO est code sur trois composantes, la rouge (red), la verte (green) et la e bleue (blue) do` le nom de ce codage r g b. Les trois nombres donns dans la liste ` la primitive u e a fcc reprsentent donc dans lordre la composante rouge, puis la verte, puis la bleue dune couleur. Ce e codage ntant pas tr`s intuitif, vous pouvez avoir un aperu de la couleur obtenue selon le codage ` e e c a laide la bo de dialogue Options-> Choisir la couleur du crayon. te A laide de ce codage, il est tr`s facile deectuer des transformations sur une image. Par exemple, si e lon veut mettre en niveau de gris une photo couleur, on change la couleur de chaque pixel de limage en la moyenne des trois composantes [r g b]. Je mexplique : imaginons quun point de limage est pour e a couleur [0 100 80]. On calcule la moyenne de ces 3 nombres : 0+100+80 = 60. On raecte alors ` ce 3 pixel la couleur [60 60 60]. Cette opration doit tre eectue sur chaque pixel de limage e e e
5.7.2
Passons ` la pratique a
Nous allons transformer en niveau de gris une image de 100 pixels sur 100 pixels, il y aura donc 100 100 = 10000 pixels ` modier. Vous pouvez trouver limage utilise dans lexemple suivant ` a e a ladresse : http ://xlogo.tuxfamily.org/images/transfo.png Voici comment nous allons procder : nous allons acher limage avec le coin suprieur gauche en [0 e e 0]. Ensuite, la tortue va dcrire les 100 premiers pixels de la premi`re ligne puis les 100 premiers de la e e deuxi`me etc... A chaque fois, on rapatrie la couleur du pixel avec trouvecouleur puis on modie la e couleur en faisant la moyenne des trois composantes [r g b]. Voici le code correspondant : (Noubliez pas de changer le chemin dans la procdure transfo) e
47
pour li :liste # renvoie la moyenne des trois nombres [r g b] donne "r premier :liste donne "liste sp :liste donne "g premier :liste donne "liste sp :liste donne "b premier :liste donne "b arrondi (:r+:g+:b)/3 retourne ph liste :b :b :b fin pour niveaudegris :c si :y=-100 [stop] si :c=100 [donne "c 0 donne "y :y-1] # On prend pour couleur de crayon la couleur "moyenne" du pixel suivant e fcc li tc liste :c :y # On repasse en niveau de gris point liste :c :y niveaudegris :c+1 fin pour transfo # Vous devez changer le chemin vers limage transfo.png # Ex: frep "c:\\windows chargeimage "transfo.png ve ct frep "/home/loic chargeimage "transfo.png donne "y 0 niveaudegris 0 fin
5.7.3
Et si on la voyait en ngatif ? ? e
Pour changer une image en ngaitf, mme procd sauf quau lieu de moyenner les nombres r g b, e e e e on les remplace par leur complment ` 255. Ex : Un pixel a pour couleur [2 100 200], on remplace sa e a couleur par : [253 155 55] Seul la procdure li change par rapport ` tout de suite : e a
48
pour niveaudegris :c si :y=-100 [stop] si :c=100 [donne "c 0 donne "y fcc li tc liste :c :y point liste :c :y niveaudegris :c+1 fin
:y-1]
pour transfo # Vous devez changer le chemin vers limage transfo.png # Ex: frep "c:\\windows\\Bureau chargeimage "transfo.png ct ve frep "/home/loic ci "transfo.png donne "y 0 niveaudegris 0 fin pour li :liste donne "r premier :liste donne "liste sp :liste donne "g premier :liste donne "liste sp :liste donne "b premier :liste retourne ph liste 255-:r 255-:g 255-:b fin
5.8
Je vous laisse apprcier ce magnique programme : e pour inversem :m si vide? :m [retourne "] retourne mot dernier :m inversem sd :m fin
49
pour palindrome :m SI EGAL? :M INVERSEM :M [RETOURNE "VRAI] [RETOURNE "FAUX] fin pour palin :n SI PALINDROME :N [ECRIS :N STOP] ECRIS PH PH PH PH :N "PLUS INVERSEM :N "EGAL SOMME :N INVERSEM :N PALIN :N + INVERSEM :N fin palin 78 78 PLUS 87 EGAL 165 165 PLUS 561 EGAL 726 726 PLUS 627 EGAL 1353 1353 PLUS 3531 EGAL 4884 4884
5.9
pour rosace repete 6[ repete 60[av 2 td 1] td 60 repete 120 [av 2 td 1] td 60] fin pour belle_rosace rosace repete 30[av 2 td 1] rosace repete 15[av 2 td 1] rosace repete 30[av 2 td 1] rosace fin fcfg 0 ve fcc 5 ct rosace lc fpos [-300 0] bc fixecap 0 belle_rosace
50
Chapitre 6
Dsinstallation-mise ` jour e a
6.1 Dsinstallation e
Pour dsinstaller XLogo, il sut de supprimer le chier XLogo.jar et le chier de dmrrage .xlogo e e (il est situ dans votre rpertoire utilisateur cest ` dire /home/votre login pour les linuxiens ou e e a c :\windows\.xlogo
6.2
Mise ` jour a
Pour toute nouvelle version et les corrections de bugs, se rendre de temps en temps sur le site de XLogo cest ` dire http ://xlogo.tuxfamily.org Ne pas hsiter ` crire en cas de probl`me dinstallation a e ae e ou dutilisation. Toute suggestion est la bienvenue.
51
Chapitre 7
Lorsquon sort de lditeur, celui-ci se contente juste de sauver ou de mettre ` jour le contenu de e a lditeur. Le seul moyen deacer une procdure dans XLogo est dutiliser la primitive effacenom ou e e efn. Exemple : effacenom "toto eace la procdure toto. e
7.2
Jutilise la version en espranto mais je ne peux crire les cae e ract`res spciaux ! e e
Lorsque vous tapez dans la ligne de commande ou lditeur, si vous faites un clic avec le bouton droit e de la souris, apparait un menu droulant. Dans ce menu, gurent les traditionnels fonctions ddition e e (copier, couper, coller) et les caract`res spciaux de lespranto lorsque ce langage est slectionn. e e e e e
7.3
Dsol, ce probl`me est connu. Il est d ` la machine virtuelle java. Ce probl`me est totalement e e e ua e alatoire. Par exemple, chez moi, jai un ordinateur qui tourne sous linux et win98. Sous win98, la e liste napparait pas, sous linux si ! ! Pourtant jutilise le mme JRE et je nai aucun probl`me matriel. e e e Dune version dun JRE ` lautre, ce comportement peut changer. a
7.4
Probl`me connu galement et typique des JRE> 1.4.2. Jessaierai dy remdier dans le futur, je e e e peux peut-tre faire quelque chose. Deux solutions pour le moment : e minimiser la fentre et la ragrandir. e e e Utiliser le JRE 1.4.1 07 propos sur le site.
52
7.5
Comment faire pour taper rapidement une commande dj` utiea lise au pralable ? e e
Premi`re mthode : avec la souris, cliquer dans la zone dhistorique sur la ligne dsire, elle e e e e rappara e tra immdiatement dans la ligne de commande. e Deuxi`me mthode : avec le clavier, les `ches Haut et Bas permettent de naviguer dans la liste e e e des derni`res commandes tapes(Tr`s pratique). e e e
7.6
En reportant tout bug constat. Si vous tes capable de reproduire systmatiquement un proe e e bl`me constat, cest encore mieux. e e Vos suggestions en vue de lamlioration sont toujours les bienvenues. e En aidant aux traductions : en particulier langlais... Un petit encouragement fait toujours du bien !
53
Index
absolue abs, 17 ajoute, 19 ajouteligneux, 26 animation, 13 arc, 12 arccosinus, acos, 17 arcsinus, asin, 17 arctangente, atan, 17 arrondi, 17 attends, 38 avance, av, 12 baissecrayon, bc, 13 baissecrayon ?, bc ?, 21 blanc, 11 bleu, 11 bleufonce, 11 cachetortue, ct, 13 cap, 13 caractere,car, 20 catalogue, cat, 25 cercle, 12 changedossier, cd, 25 chargeimage, ci, 25 chattcp, 40 choix, 19 chose, 24 clos, 14 compte, 20 compteur, 33 cosinus, cos, 17 couleurcrayon, cc, 14 couleurfond, cf, 14 couleurtexte, ctexte, 16 cyan, 11 date, 38 debuttemps, 38 denis, def, 24 dernier, der, 19 dessine, de, 13 dierence, 17 distance, 14 div, divise, 17 donne, 24 donnelocale, 24 ec, ecris, 16 ecoutetcp, 39 ecrisligneux, 26 eacenom, efn, 24 eacenoms, efns, 24 eacesequence, efseq, 31 eacevariable, efv, 24 egal ?, 21 enleve, 19 enroule, enr, 14 entier ?, 21 envoietcp, 40 et, 18 etiquette, 12 execute, exec, 24 executetcp, 39 faux, 21 fenetre, fen, 14 fermeux, 26 n, 22 nux ?, 26 nstrument, nstr, 31 ntemps ?, 38 xecap, 12 xecouleurcrayon, fcc, 13 xecouleurfond, fcfg, 13 xecouleurtexte, fct, 16 xeforme, orme, 14 xeindexsequence, ndseq, 31 xenompolice, fnp, 14 xenompolicetexte, fnpt, 16 xeposition, fpos, 12 xerepertoire, frep, 25 xeseparation, fsep, 15 xestyle, fsty, 16 54
xetaillecrayon, ftc, 14 xetaillepolice, ftp, 14 xetaillepolicetexte, ftpt, 16 xetortue, ftortue, 31 xex, 12 xexy, 12 xey, 12 forme, 14 gomme, go, 13 gris, 11 grisclair, 11 hasard, 17 heure, 38 imts, 24 indexsequence, indseq, 31 instrument, instr, 31 inverse, 19 inversecrayon, ic, 13 item, 19 jaune, 11 joue, 31 levecrayon,lc, 13 lis, 35 liscar, 35 liscarux, 26 lisligneux, 26 lissouris, 36 liste, 19 liste ?, 21 listeux, 26 listevariables, 24 locale, 24 log10, 17 magenta, 11 marron, 11 membre, 21 membre ?, 21 message, msg, 15 metsdernier, md, 19 metspremier, mp, 19 moins, 17 montretortue, mt, 13 mot, 19 mot ?, 21 nettoie, 13
noir, 11 nombre ?, 21 nompolice, np, 15 nompolicetexte, npt, 16 non, 18 orange, 11 origine, 12 ou, 18 ouvreux, 25 phrase, ph, 19 pi, 17 point, 13 pos, 13 possouris, 36 pour, 22 precede ?, 21 premier, prem, 19 primitive ?, prim ?, 21 procedure ?, proc ?, 21 produit, 17 puissance, 17 quotient, 17 racine, rac, 17 rafraichis, 13 ramene, 25 recule, re, 12 remplace, 19 remplis, 28 rempliszone, 28 repertoire, rep, 25 repete, 33 repetepour, 33 reste, 17 retourne, 30 rose, 11 rouge, 11 rougefonce, 11 saufdernier, sd, 19 saufpremier, sp, 19 sauve, 25 sauved, 25 separation,sep, 15 sequence, seq, 31 si, 22 sinus, sin, 17 somme, 17 55
souris ?, 36 stop, 30 stoptout, 30 sty, style, 16 taillepolice, tp, 14 taillepolicetexte, tpt, 16 tangente, tan, 17 tantque, 34 tape, 16 temps, 38 tortue, 31 tortues, 31 touche ?, 35 tournedroite, td, 12 tournegauche, tg, 12 trace, 23 tronque, 17 trouvecouleur, tc, 14 tuetortue, 31 unicode, 20 vers, 13 vert, 11 vertfonce, 11 vide ?, 21 videecran, ve, 13 violet, 11 visible ?, 21 vrai, 21 vt, videtexte, 16
56