Micro Systèmes n°29 mars 1983
Micro Systèmes n°29 mars 1983
  • Prix facial : 20 F

  • Parution : n°29 de mars 1983

  • Périodicité : mensuel

  • Editeur : Société Parisienne d'Edition

  • Format : (203 x 271) mm

  • Nombre de pages : 206

  • Taille du fichier PDF : 168 Mo

  • Dans ce numéro : Forth... un langage sans programmes.

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 90 - 91  |  Aller à la page   OK
Pages suivantes >
90 91
Le point virgule termine la compilation et rend la main à l'interpréteur. Dossier LE LANGAGE FORTH Compilation  : pour créer de nouveaux mots Si nous voulons créer un opérateur (appelé mot en Forth) effectuant un travail bien précis, il suffit de donner sa définition et de lui associer un nom. Supposons que nous voulions effectuer une rotation inverse de ROT, c'est-à-dire faire passer l'élément du dessus de la pile sous les deux autres éléments. Pour cela nous allons définir un opérateur que l'on appellera, par exemple, —ROT et qui effectuera en fait deux rotations  : en effet, si nous avons sur la pile les nombres 2 5 1, une première application de ROT donnera 5 1 2, et une deuxième donnera 1 2 5, ce qui est bien le résultat voulu. La définition du mot —ROT est réalisée tout simplement de la manière suivante :  : —ROT ROT ROT ; Le symbole':'indique à l'interpréteur que nous allons compiler une définition. Le nom du mot à compiler suit le symbole':'. Le corps de la définition est alors compris entre ce nom et le symbole' ; '. Si nous appliquons alors l'opérateur —ROT sur une pile contenant par exemple 2 6 4, nous obtenons 4 2 6. Il est possible de cette manière de créer de nouveaux opérateurs de la pile. Ainsi, opérateur TRIPLE dont la fonction serait de reproduire trois fois le nombre placé au sommet de la pile pourrait s'écrire :  : TRIPLE DUP DUP ; Nous allons maintenant analyser des définitions plus complètes faisant intervenir des structures de contrôles  : boucles, choix etc. Les boucles  : Les boucles de type FOR... NEXT en Basic sont réalisées à l'aide des deux mots DO... LOOP. Les paramètres de boucles sont passés en argument du mot DO, le premier nombre est le paramètre de fin de boucle et le second la valeur initiale. Les instructions FOR I = 1 to 10... NEXT I s'écrivent en Forth  : 11 1 DO... LOOP Afin d'illustrer ce propos, nous allons créer un mot destiné à visualiser les chiffres de 1 à 9.  : SUITE-A 10 1 DO I. LOOP ; La définition commence par "  : SUITE-A", qui indique à l'interpréteur que l'on commence la compilation de l'opérateur (ou « mot ») SUITE-A. Cet en-tête est suivi de deux nombres  : 10 et 1, lesquels serviront de paramètres de boucle. Ces derniers, au cours de l'exécution du mot SUITE-A, seront déposés sur la pile. Pour l'instant, le compilateur les évalue et les range en mémoire. Les mots DO et LOOP encadrent les deux mots « I » et «. ». Le I est un mot particulier du 1111 (DUP CUBE CARRE Forth qui représente la valeur du compteur de la boucle. En effet, comme il n'y a pas de variable associée à la boucle, la valeur du compteur est symbolisée par I. Lors de l'exécution, la valeur du compteur sera empilée. Le symbole suivant, le «. », est un mot de base du langage permettant d'afficher la valeur située au sommet de la pile et de l'ôter de cette dernière. La fin de la définition est annoncée par le point virgule, qui termine la compilation et rend la main à l'interpréteur. L'exécution du mot ainsi défini est effectuée en tapant simplement le nom SUITE-A  : 1 2 3 4 5 6 7 8 9 ok Le mot « ok » indique que l'interpréteur est en attente d'une nouvelle commande. Les paramètres du DO sont ici inclus dans la définition du mot SUITE-A. Mais en fait, la boucle DO, lors de son exécution, prend ses paramètres sur la pile. Il n'est donc pas obligatoire de définir les paramètres lors de la compilation du mot, à condition que ceux-ci soient présents sur la pile au moment de l'exécution. Ainsi, le mot SUITE-A peut être redéfini  : Créer de nouvelles procédures en Forth revient à construire des mots à partir de primitives. Ici, la structure du mot « cube » est réalisée à partir des définitions suivantes :  : CARRE DUP * ;  : CUBE DUP CARRE * ; 90 - MICRO-SYSTEMES Mars 1983
Le langage Forth Dossier  : SUITE-A 1 DO I. LOOP ; A l'exécution, il faut laisser sur la pile le paramètre de fin de boucle avant l'appel du mot SUITE-A, ce qui peut s'effectuer comme suit  : 10 SUITE-A Cette exécution montre l'un des principes essentiels de Forth. Les paramètres sont passés par la pile. Les mots prennent leurs arguments sur le sommet de la pile et y déposent leur résultat, leur tâche accomplie. Dès lors, si nous appelons SUITE-A en mettant sur la pile le nombre 20, nous obtiendrons une suite allant de 1 à 20. Mais cette valeur déposée sur la pile peut aussi bien être le résultat de l'exécution d'un autre mot  : supposons que nous définissions le mot CARRE de la manière suivante :  : CARRE DUP * ; F OK 01 ***** SUITE-A ***** PARAM LITERAI 1 DO 1 DO DO I DO 4 DO I 5 10 10 4 ***** SUITE-G PARAM LITERAL 1 DO 1 DO DO I DO 8 4 8 DO 6 6 DO 16 8 16 DO 7 DO DO 8 DO 64 8 I 32 DO I 64 9 9 64 LOOP +LOOP Fig. 1. — Le déroulement pas à pas des mots SUITE-A et SUITE-G montre les actions effectuées ainsi que l'état de la pile au cours de leur exécution. L'appel est réalisé par  : 3 CARRE Le résultat, déposé sur la pile (dans ce cas  : 9), peut être utilisé comme paramètre du mot SUITE-A  : 3 CARRE SUITE-A qui délivre  : 1 2 3 4 5 6 7 8 ok Examinons maintenant la définition suivante :  : SUITE-G 100 1 DO I. I +LOOP ; Cette définition du mot SUITE-G ne diffère de celle de SUITE-A que par le I +LOOP. Le I, nous l'avons déjà vu, mettra, lors de l'exécution, la valeur du compteur de boucle sur la pile. Le +LOOP est en fait, à peu de chose près, l'équivalent du LOOP. La seule différence réside dans le fait que le +LOOP prend sur la pile, à chaque tour de boucle, la valeur située sur la pile et incrémente le compteur de boucle de cette valeur  : nous avons ici une boucle avec un pas réellement variable. De ce fait, ce mot définit une suite géométrique de raison 2. Comme précédemment, l'exécution est effectuée en tapant le mot SUITE-G. Le résultat donne  : 1 2 4 8 16 32 64 ok La figure 1 montre le déroulement pas à pas de l'exécution des mots SUITE-A et SUITE- G. Le mot LITERAL se trouvant dans la colonne de gauche indique qu'un nombre plus grand que• 3 se trouve dans le Mars 1983 MICRO-SYSTEMES — 91



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