L'Ordinateur Individuel n°45 février 1983
L'Ordinateur Individuel n°45 février 1983
  • Prix facial : 20 F

  • Parution : n°45 de février 1983

  • Périodicité : mensuel

  • Editeur : Groupe Tests

  • Format : (202 x 281) mm

  • Nombre de pages : 254

  • Taille du fichier PDF : 257 Mo

  • Dans ce numéro : création artistique et informatique... tout un programme !

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 172 - 173  |  Aller à la page   OK
Pages suivantes >
172 173
2040 GOSUB 400:Y'=—Y ! : GOSUB 410:GOTO 1090 2050 GOSUB 400:Y ! =SGN(Y !) : GOSUB 410:GOTO 1090 2999 REM =================))) TRAITEMENTS D'ERREUR (((=================== 3000 3010 3020 3030 3040 3050 3060 3070 3080 3090 3100 3110 3120 3130 3140 E=ERR/2+1 IF E=1 PRINT"TERMINATEUR PTTENDU.":RESUME500 IF E=2 PRINT"TYPE ":11$:" NON AUTORISE.":RESUME500 IF E=4 AND FL=1 PRINT"NOM:":X$:" NON DEFINI.":RESUME500 IF E=15 PRINT"TERMINATEUR DE CHAINE MANQUANT.":RESUME500 IF E=22 PRINT"':'RTTENDU.":RESUME500 IF E=10 PRINT"DEBORDEMENT PROGRAMME.":PP=DP:RESUME600 IF E=23PRINT"VARIABLE ":A$:" NON DECLAREE.":RESUME500 IF E=3 PRINT"ERREUR DE STRUCTURATION.":RESUME500 IF E=12 PRINT"SORTIE DE BOUCLE OU TEST INVALIDE.":RESUME500 IF E=6 PRINT"OVERFLOW.":RESUME500 IF E=11 PRINT"DIVISION PAR ZERO.":RESUME500 IF E=9 PRINT"DEBORDEMENT PILE.":RESUME500 IF E=5 PRINT"MANIPULATION PILE ERRONEE.":RESUME500 IF E=9 AND (ERL=1190 OR ERL=2000) PRINT"TROP D'APPELS ET/OU DE BOUCLES IMBRIQUEES.":RESUME500 (suite) 3150 IF E=9 AND ERL=1060 PRINT"TROP DE VARIABLES.B:RESUME500 3160 IF E=4 PRINT"DEBORDEMENT PROGRAMME : TERMINATEUR ABS":RESUME500 3170 PRINT ERL,ERR:END 3499 REM ======== ====))) COMMANDE) DUMP <((======================== 3500 CLS:IF DV=FV THEN PRINT"PAS DE VARIABLES DANS LE SEGMENT OU S'EST PRODUITE L'ERREUR." 3510 PRINT"POINTEUR VARIPBLE:" ; DV ; " FIN VARIABLES:" ; FV : FOR VC=0 TO 255:PRINT VC,NV$(VC),:GOSUB 420:PRINT Y, IF INKEY$="A" VC=256 3520 NEXT 3530 PRINT"POINTEUR PILE UTILISATEUR : " ; PU FOR I=0 TO 50 : PRINT I ; SU(I),:IF INKEY$="A"I=256 3535 NEXT 3540 PRINT"POINTEUR PILE MACHINE : " ; MA FOR I=0 TO 255:PRINT I ; SM(I),:IF INKEY$="A"I=256 3550 NEXT:DOT0500 courant du pointeur et délimité à droite par l'un des caractères blanc !, (virgule),. : Mais il ne s'arrête pas sur un saut de ligne (c'est à modifier éventuellement). 1010 : initialisation des pointeurs. 1020-1030 : X$ contient le nom du sous-programme à exécuter. On commence par chercher un # (35 en ASCII) dans la zone mémoire où le programme est enregistré (1022), puis on lit le mot après le symbole # ; s'il ne correspond pas à X$, on recherche le « # » suivant (1025). Si le nom est trouvé, on fait l'équivalent de RST 08 de la MEM, pour tester si le caractère suivant est « : » (48 en ASCII). 1040-1080 : vérifie si le caractère suivant est% (ce qui correspond à la déclaration d'une variable) à la ligne 1040. S'il ne s'agit pas d'une telle déclaration, on passe en 1100. En 1050, on contrôle la syntaxe en recherchant le caractère « : », puis en 1060 on entre la variable dans la table : incrémentation de VC et FV et codage du type de la manière suivante : TV (VC) = Type Localisation 8 bits TV (VC) = TYPE * 256 + LOCALI- SATION (sur le tas) avec la convention 1 pour les variables de type ENTIER et 2 pour L'Oreateurlieudue celles de type REEL. On lui alloue une place sur le « tas » réel ou entier. En 1080, on cherche le caractère « ; » qui termine une instruction et on remonte en 1040 pour examiner s'il n'y a pas d'autres variables déclarées. Aiguillage vers le traitement des instructions 1105-1135 : instruction sur 8 bits, sinon : 1140 : recherche d'un nom. Si ce nom est SIGNE, OPPOSE ou SORTIE, on se dirige vers le traitement correspondant, sinon : 1190 : recherche d'un nom dans le dictionnaire ; on empile l'adresse de retour et les pointeurs de variables, ce qui permet la récursivité, puis saut à 1040 après initialisation de X$. Bibliothèque de sous-programmes Elle utilise quatre sous-programmes situés en 400, 420 et 430. Les deux premiers sont utilisés lorsqu'on effectue une instruction 4, ou t : le programme n'empile pas la valeur mais l'adresse et le type de celle-ci. 400 : récupération de la valeur du sommet de la pile (plus précisément la valeur pointée par le contenu du sommet de la pile). Le résultat est mis dans Y ! 410 : empile une valeur (la valeur 172 est empilée sur le tas machine), notamment pour empiler des constantes numériques ou bien le résultat d'un calcul. A ce propos, un problème risque de se poser très rapidement du fait que le programme ne « nettoie » pas le « tas » (encore une modification à faire !). 420 : récupération de la valeur d'une variable dans Y ! 430 : met la valeur Y ! (ou INTIY I)) dans la variable pointée par VC. Et maintenant décrivons les routines proprement dites Revenons aux routines proprement dites : 1210-1230-1260 et 1280 : effectuent les quatre opérations (respectivement : *, +,/). 1270 : sortie d'un sous-programme par un caractère « » avec vérification que l'on ne sorte pas illicitement (sans avoir épuisé les boucles et les tests par exemple). Retour au moniteur, si l'on arrive à la base de la pile. 1290-1310 : traitement de 1290 : recherche du nom de la variable ou valeur de la constante ; si ni l'un ni l'autre, duplication du sommet de la pile. 1292 : traitement si l'opération est une constante. 1295 : traitement dey @ (saisie au clavier). 1300-1310 : recherche si la variable a été déclarée et empilage. 1330-1360 : traitement det, même principe que 4, (à l'envers). Tests On fait appel ici aux sous-programmes 1641 et 1645. 1641 : recherche < ELSE ou (ENDIF) ; utilise 1645. 1645 : parcourt le programme à la recherche d'un (ENDIF), c'està-dire le caractère « ! » se rapportant au IF traité. Si ce sousprogramme rencontre un < IF), il s'appelle lui-même, pour tenir compte des imbrications. 1600 : empile le code (IF (1) sur la pile machine (ainsi que le pointeur programme ; cela sert simplement en cas d'erreur fatale). 1610-1625 : traitement des variables. 1630 : test proprement dit et traitement du (THEN). 1635 : traitement du < ELSE ›. 1700 : traitement (ENDIF : désempilage de la pile machine avec les contrôles nécessaires. n'45 Février 83
Traitement des « blocs-boucies » 2000 : début de boucle, empilement du code boucle (0) et pointeur programme. 2010 : fin de boucle et retour à l'origine après les précautions d'usage. 2020-2030 : traitement de la procédure « SORTIE. » ; on remarquera la ligne 2022 qui élimine des tests : lorsque l'on sort au milieu d'un test du programme, on n'est pas obligé de mettre un symbole « ! » (ou plusieurs) après la boucle. On utilise le sous-programme suivant. 2035 : fonctionne d'une manière analogue au 1645, pour sauter les boucles imbriquées. 2040 : procédure « OPPOSE ». 2050 : procédure « SIGNE ». Cette procédure a été ajoutée pour pouvoir tester autre chose que des égalités, en effectuant une soustraction pour comparer deux nombres. AP82. AMTO _5L OvC) NEDz STRÔEVOLL c'E5T Tour cE UE TE PEUX V005 DIRE POVR LE MOMENT 3000-3170 : messages d'erreurs ; certainement incomplets. 3500-3580 : programme DUMP ; un petit utilitaire-gadget qui permet de visualiser les mémoires utilisées par l'interpréteur. Cela peut même servir à trouver des erreurs (c'est d'ailleurs la raison pour laquelle ce bout de programme a été fait). Que cent mille bricoleurs s'épanouissent Les possibilités de bricolage de ce programme se présentent sous divers aspects :. amélioration de certains « défauts de jeunesse » : le problème des TAS, le fait que les instructions de base ne fassent pas partie du dictionnaire, etc., amélioration de certaines procédures mal conçues amélioration des performances : par un meilleur emploi des variables, en mettant les sous-programmes en début de programme, en construisant une table des noms du dictionnaire pour ne pas être obligé de reparcourir tout le programme pour chercher une définition, etc.. ajout des instructions : c'est facile ajout des instructions en clair et précompilation au niveau de l'éditeur, un peu comme fait Basic, mais en mieux, bien sûr, et en français ajout des types de données, des types structures (RECORDS, ARRAYS), des traitements de chaînes de caractères ajout des manipulations de AVEZ VOUS FINI VOTRE RAPPORT SUR LE 118e n Coni CDRÈS pointeurs pour traiter des listes et des arbres transcription progressive des routines en assembleur en faisant un maximum d'appels en MEM ; après, pourquoi ne pas programmer une EPROM pour avoir ces deux langages résidents ? A ce niveau, on devrait avoir un langage très performant ! Ne pas oublier alors d'ajouter des instructions graphiques, etc.. écriture d'une routine pour sauvegarder les programmes sur cassette ; pour manipuler des « PA- CKAGE » et des « TASK » comme en Ada, pour avoir des procédures avec un passage d'arguments plus sérieux, etc. Ecrire dans le langage ainsi créé un compilateur et le faire se compiler lui-même. En conséquence du « non nettoyage des TAS », vous verrez que le programme HANOI tourne pour trois disques, mais se coince pour cinq. Pour le faire tourner, il faut soit augmenter les dimensions des tableaux (solution bulldozer), soit rectifier le programme. Suggestions :. rectifier les lignes 410 et 1270 pour nettoyer les tas rectifier la ligne 1290 ; vous comprendrez pourquoi en reprenant le programme. Un logiciel de ce type peut être toujours amélioré. Passer d'un système simple à un système sophistiqué, par de multiples raffinements, est un moyen sûr de toucher au but, quand on aborde ce genre d'études. Bernard Pinon n'45 Février 83 173 L'Ordinateur Individuel



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 :


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