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 : 204 - 205  |  Aller à la page   OK
Pages suivantes >
204 205
cià 14J cc O classiques du fichier, avec mobilisation éventuelle d'une mémoire de masse lorsque le volume de celles-ci devient trop important. Pour en revenir aux pointeurs, plusieurs choix possibles vont déterminer des algorithmes d'exploitation différents. Le premier choix qui vient naturellement à l'esprit est celui correspondant au schéma de la figure 1. Cette disposition se caractérise par le fait que chaque élément contient un pointeur pour son conjoint (époux ou épouse) et autant de pointeurs qu'il a d'enfants. S'il est techniquement possible de commencer à mettre en oeuvre ce choix, il en résulte rapidement les inconvénients suivants : compte tenu de la philosophie Forth, chaque membre de la généalogie ne peut être défini que si l'on connaît le nombre de ses enfants, de façon à pouvoir réserver le nombre d'octets nécessaires aux pointeurs ; il est indispensable d'incorporer ce nombre à la donnée structurée d'ensemble, de façon à en permettre la lecture, avec toutes les complications que cela représente dans la gestion de la pile de données ; s'il est facile de passer d'un père à ses fils, l'inverse est beaucoup plus délicat dans la mesure où, au préalable, il faut avoir descendu l'arbre à partir de sa racine en posant sur la pile de données « les petits cailloux blancs » permettant de rebrousser chemin. Dans ces conditions il est illusoire de penser pouvoir remonter facilement un arbre des ascendants dans sa totalité. En définitive, ce premier choix s'avère donc une impasse, sauf si on le complète par des pointeurs de retour allant dans le sens fils-père. Mais même après cette adaptation, les deux premiers inconvénients subsistent. Cependant, une autre solution dans le choix des pointeurs permet de remédier à ces inconvénients tout en accélérant les temps de parcours et en économisant la taille mémoire (fig. 2). Trois différences apparaissent par rapport à la première solution : Chaque donnée ne pointe que sur l'un de ses enfants ; par commodité, nous l'appellerons l'ainé Fig. 2. — Autre solution dans le choix des pointeurs. chaque donnée, à l'exception d'une seule, pointe vers l'un de ses frères ; cette exception est le benjamin, qui, au lieu de pointer sur son frère aîné, pointe sur son père ; chaque zone paramètre a la même longueur. Cette solution n'est viable qu'à condition de pouvoir distinguer le benjamin de ses frères. Pour cela, il suffit d'un octet indicateur accompagnant les pointeurs dans. la zone paramètre. Cet octet indicateur peut sembler dans un premier temps anti-économique au point de vue mémoire ; il serait en effet possible soit de rendre négative l'adresse contenue dans le pointeur frère du benjamin, soit d'utiliser un bit non employé dans des informations numériques telles que le mois de la date de naissance... En fait, ces deux dernières façons de procéder seraient plutôt acrobatiques, dans la mesure où, par la suite, nous aurons besoin d'autres indicateurs, notamment celui déjà mentionné qui doit porter la marque servant à l'identification d'un ancêtre commun. Mieux vaut donc employer un octet entier offrant alors la possibilité de disposer de 8 indicateurs situés au niveau de chacun de ses bits (fig. 3). Finalement, la zone paramètre de notre donnée est représentée à la figure 4. Pour faciliter la compréhension de la suite, n'oublions pas que l'appel d'un individu par son nom donne directement l'adresse de cet octet indicateur, adresse qui, bien entendu, n'est autre que le PFA de l'individu. Le choix de l'ordre fils-frèreconjoint pour les pointeurs peut paraître moins judicieux que celui de frère-conjoint-fils, dans la mesure où le pointeur fils peut être supprimé pour un individu sur deux (pour aller à un enfant ou en revenir, on passe par le conjoint). Pourquoi ce choix ? Dans nombre d'autres problèmes (réseaux sémantiques, décomposition d'un ensemble en sous-ensembles disjoints) on retrouve la même structure d'arbre, mais dépouillée de toute incidence liée à la différenciation entre sexes. La structure de donnée correspondante est identique à la précédente, mais sans le pointeur conjoint, qu'il vaut mieux alors placer après les autres de façon à pouvoir conserver d'un problème à l'autre le maximum d'algorithmes. Construction d'une généalogie Avec la structure de donnée choisie, le mot de définition d'un individu masculin se réduit à : DEFINER MM 0C, 0, 0, 0, DOES> ; et celui d'un individu féminin à : DEFINER MF 16C, 0, 0, 0, DOES> ; et la création d'une donnée à : MM (ou MF) NOM où NOM est le libellé du nom de l'individu accompagné d'autant de prénoms qu'il est nécessaire pour éviter toute homonymie avec un autre individu ; chacun de ces prénoms doit être séparé des autres par un point ou tout autre séparateur autorisé pour que l'ensemble ne constitue qu'un seul mot au sens Forth du terme. La création des liens de filiation peut se faire individu par individu ; dans ce cas, il est nécessaire de distinguer trois procédures distinctes selon que le fils est l'aîné, le benjamin ou ni l'un ni l'autre. Pour simplifier et éviter toute erreur, il est préférable d'utiliser des mots définissant en une seule fois tous les pointeurs d'une cellule familiale entière. Ce sont les mots CEL et FU. Au préalable, le mot IND doit avoir été défini ; 1ND (PFA n — PFA) introduit dans l'octet indicateur la quantité n lorsqu'elle n'y est pas. Dans ces deux mots, la quantité 100 =4+32+64 correspond au fait que l'individu choisi a un père (4), est le benjamin (32) et a un » frère », en fait son père (64). De même, la quantité 68=64+4 correspond au fait que l'individu a un frère (64) et un père (4). CEL (PFApère PFAenfant 1 PFAenfant2... PFAenfantn...) abrégé de cellule, est à utiliser lorsqu'il y a plusieurs enfants. n est le nombre d'enfants du père. FU (PFApère PFAfils unique...), abrégé de famille avec fils unique, est à utiliser lorsqu'il n'y a qu'un enfant. On remarque qu'avec ces deux mots, seuls les éléments masculins ont le « droit » de décaler une relation de filiation. Rien n'empêcherait que ce soit les éléments féminins. L'important est qu'un sexe seulement soit chargé de cette mission de déclaration des liens de filiation. Le choix en faveur du sexe masculin répond à un souci de conformité avec les règles d'état civil et à la volonté de conserver la même terminologie que dans les arbres ne faisant pas intervenir la notion de sexe. La création des liens de mariage se fait par le mot EP, abrégé d'époux, précédé du nom des deux individus à marier. EP (PFA PFA...) vérifie par l'intermédiaire du mot SXOP ? abrégé de sexe opposé, que les deux individus sont de sexes opposés, puis introduit dans leur octet indicateur la quantité 8. SEXE ? (PFA — PFA flag), présent dans le mot précédent, 204 — MICRO-SYSTEMES Décembre 1984
bit 8 — valeur I : existence d'un fils ou d'une fille 0 : pas de fils bit 7— valeur I : existence d'un frère ou d'une sœur 0 : pas de frère bit 6 — valeur I : qualité de benjamin ou de benjamine 0 : n'est pas le benjamin bit 5 — valeur I : personne de sexe féminin 0 : personne de sexe masculin bit 4— valeur I : existence d'un conjoint 0 : pas de conjoint bit 3 — valeur 1 : existence d'un père 0 : pas de père bit 2 et I disponibles Fig. 3. — Liste des 8 indicateurs situés au niveau de chacun de ses bits. r L octet indicat. adresse fils aîné adresse frère adresse PFA PFA + I PFA + 3 PFA + 5 Fig. 4. — Définition de la zone paramètre des données. Adresse ONE MEMOIR Nom de la zone mémoire nb d'octets Contenu de la zone NFA Zone nom caractère I code ASCII par Zone longueur du mot 2 nb d'octets de la zone paramètre + 7 LFA Zone liaison 2 adresse de la zone long. du nom du mot précédent Zone longueur du nom I CFA Zone code 2 PFA Zone paramètre Fig. 5. — Structure de l'en-tète des mots cherche le sexe de l'individu sans détruire son PFA. IND ? (PFA n PFA flag), présent dans le mot précédent, vérifie, toujours sans détruire le PFA, que l'octet indicateur contient la quantitén. Ce mot sert dans la série de tests similaires : FILS ? vérifie si l'individu a un fils FRERE ? vérifie si l'individu a un frère BENJAM ? vérifie si l'individu est le benjamin MARIE ? vérifie si l'individu est marié PERE ? vérifie si l'individu a un père ENFANT ? vérifie si l'individu a un enfant Chacun de ces mots préserve le PFA testé qui reste alors sur le sommet de la pile de données. Mots d'exploitation de la généalogie La généalogie construite, il s'agit maintenant de l'exploiter. Nous savons que la solution à nos deux grands problèmes passe par la mise au point d'un algorithme de parcours pour chacun de nos deux arbres, algorithmes que nous allons construire progressivement. Edition de l'en-tête Tout d'abord, construisons le mot permettant d'éditer le nom de l'individu dont nous ne connaîtrions que le PFA. Il suffit pour cela d'éditer son en-tête grâce au mot TYPE précédé de l'adresse de début de l'en-tête et du nombre de caractères contenus dans cette dernière. Dans le Jupiter Ace, la structure de l'en-tête des mots est un peu différente de celle des autres systèmes Forth (fig. 5). Le mot AF (PFA - PFA), abrégé de l'affichage de l'entête dont nous avons besoin, s'en déduit immédiatement. Seule particularité pour laquelle aucun remède n'a été trouvé : la dernière lettre du mot édité apparaît en vidéo inverse. Parcours simples Le passage d'un individu dont le PFA est sur la pile vers son frère, son conjoint, son père, se fait très simplement à l'aide des mots suivants qui, tous, préservent les PFA de façon à permettre de nouveaux parcours : FRERE (PFA - PFA') CONJOINT (PFA - PFA') PERE (PFA - PFA') Le passage à un enfant concrétisé par le mot ENFANT (PFA - PFA') utilise le mot FILS (PFA - PFA') qui est reserve aux seuls individus masculins. Parcours de l'arbre des descendants Celui-ci se fait au moyen du mot PARBDESC qui doit être précédé par le PFA de la racine de l'arbre. Au lieu d'éditer l'entête de tous les mots rencontrés, il n'édite que celui des mots se situant à une génération fixée à l'avance (au moyen de la variable NGEN, abrégé de nombre de générations). Pour ce faire, il est nécessaire de disposer d'un compteur, la variable COMPT, qui est incrémentée ou décrémentée à l'aide des deux mots INC et DEC qui sont sans effet sur la pile. Le mot INC est employé chaque fois que l'on descend une génération, par l'intermédiaire du mot ENFANT. Le mot DEC chaque fois que l'on passe au « frère » d'un benjamin. TESTPD (PFA - PFA flag), abrégé de test de poursuite de descente, vérifie si l'individu rencontré se trouve à la génération voulue. Si oui, il procède à l'affichage de l'en-tête puis dépose un 0 sur la pile et sort du mot. Le dépôt du 0 sert à indiquer que la descente ne doit pas se poursuivre et qu'il faut passer à un frère qui sera le père si l'on se trouve à un benjamin. Si non, il vérifie que l'individu a un enfant. On remarque que l'algorithme emploie au moyen des mots O UNTIL une boucle infinie dont on ne sort que par le mot EXIT qui est déclenché lorsque l'on revient à la racine, c'est-à-dire lorsque la variable NGEN est à nouveau nulle. ENUMDESC, abrégé de énumère les descendants de la générationn, doit trouver sur la pile le PFA de l'individu racine choisi, surmonté du numéro de la génération que l'on souhaite afficher. Parcours de l'arbre des ascendants Le principe de l'algorithme précédent ne peut être repris car, à chaque mouvement de retour vers la racine, il faut pour tout père ou toute mère retrouver l'enfant par lequel on était passé pour aller jusqu'à eux. La seule possibilité est donc de laisser sur la pile l'adresse de chaque élément traversé dans le sens de l'aller pour pouvoir après dépilage le retrouver au retour. Par ailleurs, ce mécanisme d'empilage-dépilage, s'il permet de garder le mécanisme précédent d'incrémentation, n'autorise pas à garder celui de décréme n tat ion d'un compteur extérieur. La solution est alors d'accompagner chacun des éléments empilés par le numéro de sa génération (on mettra ce numéro sous chaque adresse empilée) de façon à créer la pile suivante : Racine I mère 2 mère 3 mère... n mère n père. Le mot de parcours de l'arbre des ascendants PARBASC doit être précédé par le PFA de la racine choisie. Il appelle un certain nombre de commentaires. Grâce au mot EXECUTE précédé du rappel d'une variable-test, le mot de parcours se. présente sous une forme très générale de façon à pouvoir utiliser des tests d'aiguillage différents. Différences qui sont nécessaires selon que l'arbre est parcouru pour énumérer des ancêtres, procéder au marquage d'une généalogie, rechercher cette marque puis l'effacer. La première variable-test est TESTPM, abrégé de test de poursuite de montée. Lorsque le test est positif, on remonte par l'intermédiaire du mot PERE d'une génération en incrémentant le numéro correspondant grâce à la séquence SWAP 1 + SWAP. Si l'individu obtenu a un conjoint, on empile le PFA de ce dernier (DUP CONJOINT) ainsi que son numéro de génération (3 PICK), ROT rétablit l'ordre nécessaire dans la pile. Lorsque le test est négatif, c'est-à-dire quand on arrête le mouvement d'éloignement de la racine, il faut procéder à un double dépilage. La seconde variable test, TESTFP, abrégé de test de fin de parcours, sert à sortir de la boucle BEGIN... UNTIL. Décembre 1984 MICRO-SYSTEMES — 205



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