Micro Systèmes n°48 décembre 1984
Micro Systèmes n°48 décembre 1984
  • Prix facial : 24 F

  • Parution : n°48 de décembre 1984

  • Périodicité : mensuel

  • Editeur : Société Parisienne d'Edition

  • Format : (203 x 271) mm

  • Nombre de pages : 246

  • Taille du fichier PDF : 187 Mo

  • Dans ce numéro : MSX... un nouveau standard ?

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 206 - 207  |  Aller à la page   OK
Pages suivantes >
206 207
Enumération des ascendants L'énumération des ascendants de la nième génération d'un individu se fait au moyen du mot ENUMASC qui utilise le mot PARBASC dans lequel la variable test de poursuite de montée a pour valeur le CFA du mot TPMI et la variable test de fin de parcours, celle du CFA du mot TFP1. TPMI (PFA — PFA flag) fonctionne de la même façon que le mot TESTPD. TFP1 (PFA — PFA flag) vérifie si après un double dépilage, on se trouve en présence du PFA de la racine. On remarquera la façon dont les variables-test se voient affecter leur valeur : utilisation des deux mots [et] pour que, lors de la compilation, on passe en mode exécution le temps que le mot FIND aille chercher le PFA voulu et le dépose sur la pile ; le rôle du mot LITERAL est alors de prendre ce PFA et de le compiler dans la zone paramètre du mot en cours de chargement dans le dictionnaire. De la même façon que ENUMDESC, le mot ENU- MASC doit être précédé, lors de son emploi, du nom de l'individu choisi et du numéro désiré. Après exécution du mot PARBASC, le PFA de la racine reste sur la pile. D'où le DROP en fin de mot. Nous verrons par la suite pourquoi ce DROP n'a pas été intégré au mot PARBASC comme il aurait semblé logique de le faire. Dernière observation importante : faire très attention à toute modification du dictionnaire avant les mots employant LITERAL, car les adresses compilées par ce dernier risquent de ne plus être les bonnes. Recherche d'un ancêtre commun Nous avons vu qu'il fallait marquer les ascendants de l'un des deux individus, puis remonter l'arbre de l'autre en recherchant le premier ascendant portant la marque « précédant ». Pour marquer chacun des ascendants rencontrés, on utilise le bit 1 de l'octet indicateur resté jusqu'à présent disponible. L'état de ce bit est modifié chaque fois que l'on utilise le mot MARQ (PFA — PFA), ce qui permet avec le même mot de procéder au marquage d'un individu, puis à l'effacement de la 206 — MICRO-SYSTEMES marque. Le mécanisme utilisé réside dans la séquence 1 XOR du mot. Le processus de marquage de la totalité d'un arbre est concrétisé par le mot MARQARB, abrégé de marquage de l'arbre des ascendants. Ce mot utilise PARBASC dans lequel le test de poursuite de montée concrétisé par TPM2 se réduit au mot PERE ? précédé du mot MARQ, tandis que le test de fin de parcours reste le même, c'est-à-dire TFP1. Le DROP final efface la racine restant sur la pile. La recherche de la marque dans le second arbre se fait au moyen de RECHMARQ, abrégé de recherche de la marque, lui aussi utilisant le mot PARBASC dans lequel le test de poursuite de montée se réduit à PERE ? Quant au test de fin de parcours, TFP2, il consiste à vérifier si l'octet indicateur contient la quantité 1, séquence 1 IND ?, et dans l'affirmative à sortir du mot TFP2 après avoir édité le nom de l'individu trouvé et déposé un 1 sur la pile pour sortir ensuite de la boucle BEGIN UNTIL du mot PARBASC. En interrompant de la sorte le parcours, la pile reste encombrée de tous les éléments qui y avaient été placés en vue des mouvements de retour vers la racine. D'où le mot EFF qui procède à leur effacement dans le mot final LIENPAR ? (PFA PFA'-...) extrêmement concis, dont on lit facilement les trois étapes, marquage, recherche de la marque et effacement des marques. Le mot OVER sert à conserver un point de départ pour le dernier parcours. Conclusion Arrivé au terme de notre problème, il est évident que le programme proposé, opérationnel sur Jupiter Ace et facilement adaptable sur d'autres systèmes moyennant la refonte du mot AF, peut être encore perfectionné surtout au niveau des messages de recherche infructueuse. Néanmoins, nous pensons avoir apporté notre contribution à la démonstration des possibilités de Forth capable, à notre sens, de tailler des croupières à Pascal puisqu'il permet de visualiser l'organisation en mémoire des données structurées complexes. DEFINER MM 0C, 0, 0, 0, DOES> ; DEFINER MF 16C, 0, 0, 0, DOES> IND ? OVER @ AND 0> : FILS ? 128 IND ? : FRERE ? 64 IND ? : BENJAMIN 32 IND ? : SEXE ? 16 IND ? : MARIE ? 8 IND ? : PERE ? 4 IND ? : ENFANT ? 128 IND ? SWAP 152 IND ? ROT OR SXOP ? SEXE ? ROT SEXE ? ROT XOR 0= IF. "erreur" ABORT THEN FILS 1+ @ : FRERE 3 + @ : CONJOINT 5 + @ : ENFANT SEXE ? IF CONJOINT THEN FILS PERE BEGIN BENJAM ? 0 = WHILE FRERE REPEAT FRERE > IND OVER C@ OR OVER C ! EP SXOP ? OVER OVER SWAP 8 >IND 5 + ! 8 >IND 5 + ! FU OVER OVER SWAP 128 >IND 1+ ! 100 >IND 3 + ! : CEL DUP >R 1+ PICK OVER 100 > IND 3 + ! R> 1-0 DO OVER 68 >IND 3 + LOOP SWAP 128 >IND 1+ ! 0 VARIABLE COMPT 0 VARIABLE NGEN 0 VARIABLE RACINE : INC COMPT DUP @ 1+ SWAP ! DEC COMPT DUP @ 1— SWAP ! AF DUP 3 - DUP C@ SWAP 4 - OVER - SWAP TYPE SPACE TESTPD NGEN @ COMPT @ = IF AF 0 EXIT THEN ENFANT ?' : PARBDESC ENFANT ? 0= IF DROP. " pas d'enfant " THEN BEGIN TESTPD IF ENFANT INC ELSE BEGIN BENJAM ? WHILE FRERE DEC COMPT @ 0= IF DROP EXIT THEN REPEAT FRERE TH EN 0 UNTIL ENUMDESC NGEN ! 0 COMPT ! PARBDESC 0 VARIABLE TESTPM 0 VARIABLE TESTFP : PARBASC DUP RACINE ! 0 OVER BEGIN TESTPM @ EXECUTE IF PERE SWAP 1+ SWAP MARIE ? IF DUP CONJOINT 3 PICK ROT THEN ELSE DROP DROP THEN TESTFP @ EXECUTE UNTIL : TPMI OVER NGEN @ = IF AF 0 ELSE PERE ? THEN TFP1 DUP RACINE @ = ENUMASC NGEN ! [FIND TPMI] LITERAL TESTPM ! [FIND TFP1] LITERAL TESTFP ! PARBASC DROP ENUMTASC 0 DO DUP I ENUMASC LOOP MARQ DUP C@ 1 XOR OVER C ! : TPM2 MARQ PERE ? : MARQUARB [FIND TPFI] LITERAL TESTFP ! [FIND TPM2] LITERAL TESTPM ! PARBASC DROP TFP2 1 IND ? IF AF 1 EXIT THEN TFP1 : RECHMARQ [FIND TFP2] LITERAL TESTFP ! [FIND PERE ?] LITERAL TESTPM ! PARBASC : EFF BEGIN RACINE @ = UNTIL : LIENPAR ? OVER MARQARB RECHMARQ EFF MARQARB Listing du programme. Décembre 1984
Une tortue Logo en Basic Si le logiciel proposé ici est développé sur un microordinateur Vic 20 équipé de la cartouche super-expander et d'une 16 Ko, il peut également fonctionner sur n'importe quel matériel avec quelques modifications qui seront indiquées. Rien ne vous empêche de changer le nom des mots clefs, ou d'en rajouter d'autres, etc. Le programme Tel qu'il est présenté (tableau 1), le programme se compose de 7 ordres différents qui ne peuvent être employés que manuellement. Au nombre de 16, les instructions dites « initiales » (tableau 2), contrairement aux ordres, ne sont exploitables que dans le mode programme, afin de définir d'autres mots qui sont utilisables d'une part dans un programme et d'autre part manuellement. Le nombre de mots définis est fonction de la capacité mémoire du micro-ordinateur. Ils peuvent être manipulés autant de fois qu'on le désire et être ainsi imbriqués jusqu'à cent fois « les uns dans les autres ». De plus, si la mémoire de votre ordinateur l'autorise, rien ne vous empêche d'augmenter ce chiffre ! La seule précaution à prendre lors des imbrications est de ne pas constituer des boucles interminables qui se finiraient tout de même par une erreur de dimension. Gestion des erreurs Le Vic 20 ne disposant pas d'instruction ON ERROR, celle-ci est simulée à la ligne 200. L'astuce consiste à inscrire dans le tampon clavier : GOTO 4 (RETURN), ce qui donne le même effet que ON ERROR GOTO 4. Ainsi, sur d'autres micro, la ligne 200 devient ON ERROR GOTO 4. De cette manière, une erreur de dépassement d'écran par exemple ne nous fait pas quitter Logo. Les mots inconnus, ou encore mal employés, déclenchent un message tel que : « Je ne connais pas xxxx » ; si le mot désigne un ordre ou s'il se trouve dans un autre mot, l'ordinateur affiche : « Comment faire xxx » ; si en plus le mot inconnu ne se trouve pas dans celui ayant servi d'ordre, notre micro répond : « comment faire xxxx dans yyyy » (tableau 3). Au coeur du programme : la pile Afin de simuler la récurrence, une pile est constituée (variable PL(n)) ainsi qu'un pointeur de pile (P%). Chaque instruction composant un mot est codée par le numéro du mot dont elle fait partie et par son classement dans celui-ci (variable (MC$(n,p)). A noter que la taille des mots est limitée à 4 lettres pour des raisons de mémoire. Examinons maintenant le fonctionnement de la pile. Lors de l'exécution d'un mot, le code de la prochaine instruction à exécuter est stocké dans PL(P%) de la façon suivante : les milliers désignent le numéro du mot dont elle fait partie, les centaines, dizaines et unités nous donnant son classement (par exemple PL(n)=3012 désigne dans le mot numéro 3 la 12'instruction). De la même façon, l'exécution de « REPE n » inscrit dans PL(P%) n fois le code de l'instruction suivant « REPE n ». Dans ce cas, le pointeur de pile (P%) est incrémenté de « n ». L'éditeur pleine page Si vous disposez en Basic d'un éditeur pleine page comme c'est le cas sur le Vic, vous pouvez, pour corriger un mot, le lister tout d'abord grâce à la commande « EDIT xxxx », puis remonter le curseur sur EDIT et écrire à la place POUR, et enfin sauter de lignes en lignes avec la touche RETURN. Si le mot à corriger n'est pas trop long, ou si vous ne disposez pas d'un tel éditeur, vous pouvez le réécrire avec l'ins- LANGAGE : Logo de Stéphane SABBAGUE A l'heure où fait la progrararroation en Logo de grands pas, ce programme permet de sinluler la partie graphique de Logo sur votre ordinateur si celuci possède haute résolution. Langages : Basic + Assembleur 6502 la Ordinateur : Commodore Vic 20 MOTS EDIT xxxx LIST xxxx POUR xxxx FIN EN RE xxxx CHAR xxxx : donne la liste des mots employés : liste le mot xxxx sur l'écran : liste le mot xxxx sur l'imprimante définition du mot xxxx fin de la définition : enregistre sur cassette le mot xxxx charge le mot xxxx qui est sur la cassette Tableau I. I es sept ordres dL'finissant le pro,eramine. AVAN n : avance den, si n<0 alors on recule DROI n : tourne à droite d'un angle de n degrés. GAUC n : tourne à gauche d'un angle de n degrés REPE n : répète n fois les instructions qui suivent INCR n : incrémente l'avancement de n AUGM n : augmente l'angle de n degrés AFFI xxxxxx : affiche à l'écran xxxxxx COUL n p q r : couleur écran, bords et caractères EFFA : efface l'écran PEIN : peint CENT : positionne la tortue au centre MAIS : tortue à la maison (en haut à gauche) CACH : cache la trace de la tortue MONT : remontre la trace CTOR : cache la tortue à la fin du dessin MTOR : montre la tortue à la fin du dessin Tableau'Tes seize instructions dites, ‹ initiales » EDIT TYPE EDIT POUX CENT VIVE POUX FIN FIN TYPE COMMENT FAIRE VIVE DANS POUX ? (Il se produit une erreur si on a oublié de définir VIVE.) Tableau 3. - Exemple de message d'erreur. GRAPHIC2 : mise en mode haute résolution (1,500) GRAPHICO : mise en mode texte (1, 20, 594) Les POKEL.30 : supprime le « ? » après INPUT Les POKEL.90 : met le curseur en mode définition Les POKEL.200 : ERROR GOTO 4 PRINT « xxxx » : joue les notes xxxx (220, 420, 594) DRAW2, x, ytoz,v : trace une ligne de (x, y) à (z, y) COLOR a,b,c,d : change les couleurs SNCLR : efface l'écran graphique (1400) PAINT2,x,y : peint à partir du point (x,y) CHARx,y,a$ : affiche a$ ligne x, colonne y (1992) WAIT 653,4 : attend la frappe de « ctrl » Remarque : Pour revenir au texte lorsque le dessin est fini, il faut appuyer sur la touche « CTRL ». Adaptation (hi programme (1.:lutrcs micro-ord teurs Décembre 1984 MICRO-SYSTEMES — 207



Autres parutions de ce magazine  voir tous les numéros


Liens vers cette page
Couverture seule :


Couverture avec texte parution au-dessus :


Couverture avec texte parution en dessous :


Micro Systèmes numéro 48 décembre 1984 Page 1Micro Systèmes numéro 48 décembre 1984 Page 2-3Micro Systèmes numéro 48 décembre 1984 Page 4-5Micro Systèmes numéro 48 décembre 1984 Page 6-7Micro Systèmes numéro 48 décembre 1984 Page 8-9Micro Systèmes numéro 48 décembre 1984 Page 10-11Micro Systèmes numéro 48 décembre 1984 Page 12-13Micro Systèmes numéro 48 décembre 1984 Page 14-15Micro Systèmes numéro 48 décembre 1984 Page 16-17Micro Systèmes numéro 48 décembre 1984 Page 18-19Micro Systèmes numéro 48 décembre 1984 Page 20-21Micro Systèmes numéro 48 décembre 1984 Page 22-23Micro Systèmes numéro 48 décembre 1984 Page 24-25Micro Systèmes numéro 48 décembre 1984 Page 26-27Micro Systèmes numéro 48 décembre 1984 Page 28-29Micro Systèmes numéro 48 décembre 1984 Page 30-31Micro Systèmes numéro 48 décembre 1984 Page 32-33Micro Systèmes numéro 48 décembre 1984 Page 34-35Micro Systèmes numéro 48 décembre 1984 Page 36-37Micro Systèmes numéro 48 décembre 1984 Page 38-39Micro Systèmes numéro 48 décembre 1984 Page 40-41Micro Systèmes numéro 48 décembre 1984 Page 42-43Micro Systèmes numéro 48 décembre 1984 Page 44-45Micro Systèmes numéro 48 décembre 1984 Page 46-47Micro Systèmes numéro 48 décembre 1984 Page 48-49Micro Systèmes numéro 48 décembre 1984 Page 50-51Micro Systèmes numéro 48 décembre 1984 Page 52-53Micro Systèmes numéro 48 décembre 1984 Page 54-55Micro Systèmes numéro 48 décembre 1984 Page 56-57Micro Systèmes numéro 48 décembre 1984 Page 58-59Micro Systèmes numéro 48 décembre 1984 Page 60-61Micro Systèmes numéro 48 décembre 1984 Page 62-63Micro Systèmes numéro 48 décembre 1984 Page 64-65Micro Systèmes numéro 48 décembre 1984 Page 66-67Micro Systèmes numéro 48 décembre 1984 Page 68-69Micro Systèmes numéro 48 décembre 1984 Page 70-71Micro Systèmes numéro 48 décembre 1984 Page 72-73Micro Systèmes numéro 48 décembre 1984 Page 74-75Micro Systèmes numéro 48 décembre 1984 Page 76-77Micro Systèmes numéro 48 décembre 1984 Page 78-79Micro Systèmes numéro 48 décembre 1984 Page 80-81Micro Systèmes numéro 48 décembre 1984 Page 82-83Micro Systèmes numéro 48 décembre 1984 Page 84-85Micro Systèmes numéro 48 décembre 1984 Page 86-87Micro Systèmes numéro 48 décembre 1984 Page 88-89Micro Systèmes numéro 48 décembre 1984 Page 90-91Micro Systèmes numéro 48 décembre 1984 Page 92-93Micro Systèmes numéro 48 décembre 1984 Page 94-95Micro Systèmes numéro 48 décembre 1984 Page 96-97Micro Systèmes numéro 48 décembre 1984 Page 98-99Micro Systèmes numéro 48 décembre 1984 Page 100-101Micro Systèmes numéro 48 décembre 1984 Page 102-103Micro Systèmes numéro 48 décembre 1984 Page 104-105Micro Systèmes numéro 48 décembre 1984 Page 106-107Micro Systèmes numéro 48 décembre 1984 Page 108-109Micro Systèmes numéro 48 décembre 1984 Page 110-111Micro Systèmes numéro 48 décembre 1984 Page 112-113Micro Systèmes numéro 48 décembre 1984 Page 114-115Micro Systèmes numéro 48 décembre 1984 Page 116-117Micro Systèmes numéro 48 décembre 1984 Page 118-119Micro Systèmes numéro 48 décembre 1984 Page 120-121Micro Systèmes numéro 48 décembre 1984 Page 122-123Micro Systèmes numéro 48 décembre 1984 Page 124-125Micro Systèmes numéro 48 décembre 1984 Page 126-127Micro Systèmes numéro 48 décembre 1984 Page 128-129Micro Systèmes numéro 48 décembre 1984 Page 130-131Micro Systèmes numéro 48 décembre 1984 Page 132-133Micro Systèmes numéro 48 décembre 1984 Page 134-135Micro Systèmes numéro 48 décembre 1984 Page 136-137Micro Systèmes numéro 48 décembre 1984 Page 138-139Micro Systèmes numéro 48 décembre 1984 Page 140-141Micro Systèmes numéro 48 décembre 1984 Page 142-143Micro Systèmes numéro 48 décembre 1984 Page 144-145Micro Systèmes numéro 48 décembre 1984 Page 146-147Micro Systèmes numéro 48 décembre 1984 Page 148-149Micro Systèmes numéro 48 décembre 1984 Page 150-151Micro Systèmes numéro 48 décembre 1984 Page 152-153Micro Systèmes numéro 48 décembre 1984 Page 154-155Micro Systèmes numéro 48 décembre 1984 Page 156-157Micro Systèmes numéro 48 décembre 1984 Page 158-159Micro Systèmes numéro 48 décembre 1984 Page 160-161Micro Systèmes numéro 48 décembre 1984 Page 162-163Micro Systèmes numéro 48 décembre 1984 Page 164-165Micro Systèmes numéro 48 décembre 1984 Page 166-167Micro Systèmes numéro 48 décembre 1984 Page 168-169Micro Systèmes numéro 48 décembre 1984 Page 170-171Micro Systèmes numéro 48 décembre 1984 Page 172-173Micro Systèmes numéro 48 décembre 1984 Page 174-175Micro Systèmes numéro 48 décembre 1984 Page 176-177Micro Systèmes numéro 48 décembre 1984 Page 178-179Micro Systèmes numéro 48 décembre 1984 Page 180-181Micro Systèmes numéro 48 décembre 1984 Page 182-183Micro Systèmes numéro 48 décembre 1984 Page 184-185Micro Systèmes numéro 48 décembre 1984 Page 186-187Micro Systèmes numéro 48 décembre 1984 Page 188-189Micro Systèmes numéro 48 décembre 1984 Page 190-191Micro Systèmes numéro 48 décembre 1984 Page 192-193Micro Systèmes numéro 48 décembre 1984 Page 194-195Micro Systèmes numéro 48 décembre 1984 Page 196-197Micro Systèmes numéro 48 décembre 1984 Page 198-199Micro Systèmes numéro 48 décembre 1984 Page 200-201Micro Systèmes numéro 48 décembre 1984 Page 202-203Micro Systèmes numéro 48 décembre 1984 Page 204-205Micro Systèmes numéro 48 décembre 1984 Page 206-207Micro Systèmes numéro 48 décembre 1984 Page 208-209Micro Systèmes numéro 48 décembre 1984 Page 210-211Micro Systèmes numéro 48 décembre 1984 Page 212-213Micro Systèmes numéro 48 décembre 1984 Page 214-215Micro Systèmes numéro 48 décembre 1984 Page 216-217Micro Systèmes numéro 48 décembre 1984 Page 218-219Micro Systèmes numéro 48 décembre 1984 Page 220-221Micro Systèmes numéro 48 décembre 1984 Page 222-223Micro Systèmes numéro 48 décembre 1984 Page 224-225Micro Systèmes numéro 48 décembre 1984 Page 226-227Micro Systèmes numéro 48 décembre 1984 Page 228-229Micro Systèmes numéro 48 décembre 1984 Page 230-231Micro Systèmes numéro 48 décembre 1984 Page 232-233Micro Systèmes numéro 48 décembre 1984 Page 234-235Micro Systèmes numéro 48 décembre 1984 Page 236-237Micro Systèmes numéro 48 décembre 1984 Page 238-239Micro Systèmes numéro 48 décembre 1984 Page 240-241Micro Systèmes numéro 48 décembre 1984 Page 242-243Micro Systèmes numéro 48 décembre 1984 Page 244-245Micro Systèmes numéro 48 décembre 1984 Page 246