Vous êtes sur la page 1sur 57

Manuel dutilisation de XLOGO :

Le Coq Lo c 25 mars 2007

Table des mati`res e


1 Prsentation de linterface : e 1.1 Fentre principale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 1.2 Lditeur de procdures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e e 2 Options des menus : 2.1 Menu Fichier . 2.2 Menu Edition . 2.3 Menu Options 2.4 Menu Aide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 4 5 5 5 5 6 8 8 8 9 9 10 11 12 12 15 17 19 21 22 22 22 23 23 25 28 30 30 31 33 33 33 34 35

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

Options des menus :


2.1 Menu Fichier

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

Conventions adoptes dans XLOGO e


Voici la prsentation de certaines choses ` savoir concernant le langage LOGO lui-mme et dautres e a e concernant XLOGO spciquement. e

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

R`gles concernant les majuscules et minuscules e

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 :

ecris "Bonjour ----> "Bonjour (on garde le B majuscule)

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

Liste des primitives


Comme il a t indiqu auparavant, le contrle de la tortue seectue ` laide de commandes ee e o a internes appeles primitives . Voici une classication de ces primitives : e

4.1

Dplacement de la tortue, gestion du crayon et des couleurs e

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

enroule,enr fen, fenetre

aucun aucun

clos

aucun

trouvecouleur,tc

a : liste

fixetaillecrayon, ftc fforme, fixeforme

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.

forme fixetaillepolice, ftp

aucun n : entier

taillepolice, tp fixenompolice, fnp

aucun n : entier

14

Primitives nompolice, np

Arguments aucun

fixeseparation, fsep

a : nombre

separation, sep message, msg

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

Achage du texte dans la zone dhistorique

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

Primitives vt, videtexte ec, ecris

Param`tres e aucun mot, liste ou nombre

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

mot, liste ou nombre a : nombre

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.

n : entier fixenompolicetexte, fnpt aucun

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

Oprations arithmtiques et logiques e e


Primitives somme Arguments a b : nombres ` a additionner a b : nombres ` a soustraire a : nombre Utilisation Additionne les deux nombres a et b puis retourne le re sultat. Ex : somme 40 60 retourne 100 Retourne a-b. Ex : difference 100 20 retourne 80 Retourne loppos de a. e Ex : moins 5 retourne -5 .Voir la remarque ` la suite de a ce tableau Retourne le produit de a par b. Retourne le quotient de a par b divise 15 6 retourne 2.5 Retourne le quotient entier de a par b quotient 15 6 retourne 2 Retourne le reste de la division de a par b. Retourne lentier le plus proche du nombre a. arrondi 6.4 renvoie 6 tronque ` lunit le nombre a. a e tronque 6.8 renvoie 6 Renvoi a lev ` la puissance b. e ea puissance 3 2 renvoie 9 renvoie la racine carre de n e renvoie le logarithme dcimal de n e renvoie le sinus du nombre a. (a est exprim en degr) e e Renvoie le cosinus du nombre a. (a est exprim en degr) e e Renvoie le tangente du nombre a. (a est exprim en degr) e e Renvoie langle dont le cosinus vaut a. (langle est exprim e en degr) e Renvoie langle dont le sinus vaut a. (langle est exprim e en degr) e Renvoie langle dont la tangente vaut a. (langle est exprim en degr) e e Renvoie le nombre (3.141592653589793) Renvoie un nombre alatoire compris entre 0 et n-1. e Renvoie la valeur absolue (distance ` zro) du nombre a e propos. e 17

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

Oprations sur les listes et les mots e


Primitives mot liste Param`tres e ab ab Utilisation Concat`ne les deux mots a et b. e Exemple : ec mot "a 1 renvoie a1 Retourne une liste compose de a et b. Par exemple, e liste 3 6 renvoie [3 6]. liste une liste renvoie [une liste] Retourne une liste compose de a et b. Si a ou b est une e liste, alors chacun des composants de a ou b devient lment de la liste cre (les crochets sont supprims). ee ee e Ex : ph [4 3] bonjour renvoie [4 3 bonjour] ph [comment ca] va renvoie [comment ca va] Ins`re a en premi`re position de la liste b. e e Ex : mp coucou [2] renvoie [coucou 2] Ins`re a en derni`re position de la liste b e e Ex : md 5 [7 9 5] renvoie [7 9 5 5] Inverse lordre des lments de la liste a ee inverse [1 2 3] renvoie [3 2 1] Si a est un mot, renvoie une des lettres de a au hasard.Si a est une liste, renvoie un des lments de a au ee hasard. Enl`ve llment a de la liste b sil appara dedans. e ee t Ex : enleve 2 [1 2 3 4 2 6 ] renvoie [1 3 4 6] Si b est un mot renvoie la lettre a du mot (1 dsigne e la premi`re lettre). Si b est une liste renvoie llment e ee numro a de la liste. e Si a est une liste, renvoie toute la liste sauf le dernier lment. Si a est un mot, renvoie le mot sans sa ee derni`re lettre. e Si a est une liste, renvoie toute la liste sauf le premier lment. Si a est un mot, renvoie le mot sans sa ee premi`re lettre. e Si a est une liste, renvoie le dernier lment de la liste. ee Si a est un mot, renvoie la derni`re lettre du mot. e Si a est une liste, renvoie le premier lment de la liste. ee Si a est un mot, renvoie la premi`re lettre du mot. e Dans la liste li, remplace llment numro n par le ee e mot ou la liste propos. e remplace [a b c] 2 8 --> [a 8 c] Dans la liste li, ajoute en position numro n le mot e ou la liste propos. e ajoute [a b c] 2 8 --> [a 8 b c] 19

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

dernier, der premier, prem remplace

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

compte unicode caractere, car

a : liste ou mot a : mot a : nombre

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

bc ?, baissecrayon ? visible ? prim ?, primitive ? proc ?, procedure ?

aucun aucun a : mot a : mot

21

4.6

Eectuer un test ` laide de la primitive si a

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

Gestion des procdures et des variables e


Les procdures e

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

Param`tres e a b : a mot, b quelconque

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

a : mot a : mot a : mot aucun aucun aucun a :liste

24

4.8

Gestion des Fichiers


Arguments a : mot Utilisation Ache le chier image contenu dans la liste. Son coin supe rieur gauche sera plac o` se trouve la tortue . Les formats e u supports sont le png et le jpg. Le chemin spci doit tre e e e e relatif par rapport au rpertoire courant. Ex : chargeimage e "tortue.jpg] Liste le contenu du rpertoire par dfaut. (Equivalent de la e e commande ls pour linux et dir pour DOS) Fixe le rpertoire en cours. Le chemin doit tre absolu et e e doit tre spci ` laide dun mot. e e ea Permet de choisir le rpertoire courant. Le chemin est relatif e par rapport au rpertoire courant actuel. On peut utiliser la e notation .. pour faire rfrence au rpertoire parent. ee e Rend le rpertoire en cours. Par dfaut, il est x au re e e e pertoire utilisateur cest ` dire /home/votre_login pour les a linuxiens, C :\WINDOWS pour les autres. Un bon exemple pour expliquer cela : sauve "essai.lgo [proc1 proc2 proc3] sauve dans le chier essai.lgo du re pertoire courant les procdures proc1, proc2 et proc3. Si e lextension .lgo est omise, elle est rajoute par dfaut. Le e e mot spci dsigne un chemin relatif par rapport au rpere e e e toire courant. Cette commande ne fonctionne pas avec un chemin absolu. sauved "test.lgo sauve dans le chier test.lgo du rpere toire courant lensemble des procdures dnies actuellee e ment. Si lextension .lgo est omise, elle est rajoute par de e faut. Le mot spci dsigne un chemin relatif par rapport e e e au rpertoire courant. Cette commande ne fonctionne pas e avec un chemin absolu. Ouvre et interprete le chier m. Par exemple, pour eacer toutes les procdures dnies et charger le chier essai.lgo, e e on crira : efns charge "essai.lgo. Le mot spci de e e e signe un chemin relatif par rapport au rpertoire courant. e Cette commande ne fonctionne pas avec un chemin absolu. Lorque lon veut lire ou crire dans un chier, il faut au e pralable ouvrir un ux vers ce chier. Largument fich e doit tre le nom du chier considr. On doit utiliser un mot e ee pour indiquer le le nom du chier dans le rpertoire courant. e Largument id est le numro que lon aecte ` ce ux an e a de pouvoir lidentier.

Primitives chargeimage, ci

cat, catalogue frep, fixerepertoire changedossier, cd rep, repertoire sauve

aucun m : mot m : mot

aucun

m : mot l :liste

sauved

m : mot

ramene

m : mot

ouvreflux

id fich

25

Primitives listeflux lisligneflux liscarflux

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

Fonction avance de remplissage : e

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

Fig. 4.3 Avec la primitive rempliszone, en tapant : fcc 0 rempliszone

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

Fig. 4.4 Arc-en-LOGO

4.10

Les instructions de saut

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

Primitives ftortue, fixetortue

Param`tres e a : nombre

tortue tortues tuetortue

aucun aucun 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

Primitives seq, sequence

joue instr, instrument finstr, fixeinstrument

aucun aucun a : nombre

indseq, indexsequence findseq, fixeindexsequence efseq, effacesequence

aucun a : nombre aucun

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

0.5 la si 1 :+ re 2 :- sol ] si 0.5 la si 1 si 0.5 la si 1 0.5 la si 1 :+ re 2 :- sol ]

do do :- si si 0.5 sol la si sol :+ do re 2 :- la ] :+ do re 2 :- la ] do do :- si si 0.5 sol la si sol

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

efseq tabac findseq 2 tabac joue

# # # # #

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

Une boucle avec repete

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

Une boucle avec repetepour

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

7 49 5.5 30.25 4 16 2.5 6.25

4.13.3

Une boucle avec tantque

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

Intercepter des actions de lutilisateur

XLOGO peut interagir avec lutilisateur pendant lexcution dun programme par lintermdiaire e e du clavier et de la souris.

4.14.1

Interaction avec le clavier

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

Quelques exemples dutilisation :

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

Intercepter certains vnements provenant de la souris e e

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

Quelques exemples dutilisation

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

pour carre repete 4 [av 40 td 90] td 90 av 40 tg 90 fin

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

Se servir du rseau avec XLogo e


Le rseau : comment a marche ? e c

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

Primitives orientes resau e e

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]

pour dep :c lc tg 30 re :c*20 td 90 av :c*22 tg 90 bc 41

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

Dessiner un rectangle plein

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

Le ocon (Merci ` Georges Nol) a e

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

Fig. 5.3 Le ocon

44

5.5

Un peu dcriture... e

pour ecrire ct repete 40[av 30 td 9 fcc hasard 7 etiquette [xlogo cest sympa!]] fin

Fig. 5.4 Xlogo cest sympa !

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

Ou alors : Un peu de rcursivit ! e e

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

Avec les couleurs


Introduction

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

Fig. 5.5 XLOGO fait de la retouche dimages....

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

Fig. 5.6 XLOGO se prend pour LE GIMP ...(prtentieux o :)) e

5.8

Un bel exemple dutilisation des listes (Merci Olivier SC)

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

Une belle rosace

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

Foire aux questions - Astuces - trucs ` a conna tre


7.1 Jai beau eacer une procdure dans lditeur, elle rappara e e e t tout le temps !

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

Dans longlet Son de la bo de dialogue Prfrences, aucun te ee instrument nest disponible.

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

Jai des probl`mes de rafraichissement dcran lorsque la tortue e e dessine !

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

Comment peut-on vous aider ?

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