Obligement - L'Amiga au maximum

Lundi 22 mai 2017 - 17:23  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Soutien

N'hésitez pas à soutenir le projet Obligement



Contact

David Brunet

Courriel

 


Programmation : AMOS - calculette RPN
(Article écrit par Denis Bernard et extrait d'Amiga News - septembre 1994)


Les inconditionnels des calculatrices HP vont être ravis : voici une calculette RPN (Reverse Polski Notation ou Notation Polonaise Inversée tout bonnement), dédiée aux conversions de bases, du décimal à l'hexadécimal et vice-versa.

Vu la taille du programme, je vais surtout vous expliquer comment vous en servir, commençons donc par quelques mots à propos de la notation polonaise inversée (que j'appellerai "notation RPN" par la suite). Il ne s'agit pas d'une forme exotique d'affichage des nombres, mais plutôt d'une forme (comme une autre) de dialoguer avec la calculette. Prenons plutôt un exemple concret : sur une calculette dite "standard", du type de celles qu'on vous donne comme support de pub, lorsque vous voulez calculer 2+2, et bien vous appuyez, dans l'ordre, sur les touches "2", "+", "2" et enfin "=" pour obtenir "4" à l'écran. Avec une calculette fonctionnant en notation RPN, la séquence de touches est la suivante : "2", "Entrée", "2", "Entrée" et enfin "+" pour obtenir le résultat.

Avant d'aller plus loin, tapez le programme et lancez le. Pour ceux qui n'ont pas AMOS Pro, vous pouvez enlever la ligne "Set Accessory", remplacez la ligne "If A$<>0 or A<>0" par "If (A$<>0)or A<>0", faites d'ailleurs de même pour toute ligne où dans une même condition If on effectue simultanément un test sur une chaîne et un test sur un nombre : il faut mettre le test sur une chaîne entre parenthèses. Ne cherchez pas le caractère (plus ou moins) sur votre clavier, il suffit de presser les touches "Alt" et "W". Une heure plus tard...

Maintenant que vous avez une belle calculette qui fonctionne, vous allez pouvoir comprendre ce que je vous raconte.

Description de la calculette

A gauche, l'affichage avec les 10 éléments de la pile (sans mercure), numérotés de bas en haut de 0 à 9. Juste en dessous (le dernier "0" affiché tout en bas), c'est la zone d'édition, c'est là que le nombre que vous entrez s'affiche. La partie de droite, c'est le clavier (il est bô hein ?). Notez qu'à part pour les touches "DEC", "BS", "CLR" et "ENTER", le raccourcis clavier de chaque touche (à l'écran) correspond exactement à sa première lettre : si vous appuyez sur la touche "5" du clavier de votre Amiga, un "5" sera entré dans la zone d'édition, de même si vous faites "Shift" + "<" (>), cela reviendra au même que si vous aviez cliqué sur la touche ">>" à l'écran, ainsi que "S" correspond à "STO". Voici un bref descriptif avec un petit exemple pour chaque :

En noir, les chiffres de 0 à 9 et de A à F (pour les nombres hexa)...

Les touches blanches sont les opérateurs :
  • +, *, / : tout le monde connaît.
  •            : opposé (1 devient -1 ).
  • ~ : not (non) (0 devient -1, en hexa $0 devient $FFFFFFFF).
  • << : décalage à gauche des bits (1 2<<donne 4).
  • >> : décalage à droite des bits (4 2>>donne 1).
  • & : and (et) (1 3 & donne 1).
  • | : or (ou) (1 2 | donne 3).
  • ^ : xor (ou exclusif) (3 I ^ donne 2).
  • % : modulo (15 8 % donne 7).
Les touches bleues sont les touches à actions spéciales :
  • DEC : choix du mode d'affichage et d'entrée des nombres (par défaut). Raccourci clavier : Espace. Si vous cliquez sur cette touche, le texte en deviendra "HEX", et si vous cliquez une autre fois, celle-ci reviendra à l'état "DEC". Notez qu'à chaque fois le nombre édité est converti dans la base correspondante.
  • STO : stockage dans une mémoire (stocke l'élément 1 de la pile dans la mémoire dont le numéro est l'élément 0 de la pile).
  • RCL : restitue le contenu d'une mémoire (l'élément 0 de la pile devient le contenu de la mémoire dont le numéro est l'élément 0 de la pile).
  • BS : Backspace, efface le dernier caractère entré dans la zone d'édition. Raccourci clavier : touche "Backspace" (juste au-dessus de la touche "Entrée").
  • CLR : vide la zone d'édition. Raccourci clavier : touche "Del".
  • $ : change la base du nombre dans la zone d'édition (et le convertit par la même occasion). Par exemple, si vous aviez "15" dans la zone d'édition, vous obtiendrez "$F" après avoir utilisé cette touche et vice-versa.
  • U : Undo (pas vraiment), effectue simplement un "désempilage" (ou ...ationnement), en remontant toute la pile d'un cran après avoir reporté l'élément 0 dans la zone d'édition.
  • ENTER : Entrée, place le nombre entré (affiché dans la zone d'édition) au sommet de la pile (élément 0) et met "0" ou "$0" dans la zone d'édition.
Il faut vous dire que j'ai choisi la notation RPN pour une question de préférence personnelle, mais aussi de facilité de programmation. Disons que le rapport performances/effort est imbattable, et puis vous verrez, l'essayer c'est l'adopter (à part pour quelques rares individus...) ! Ce système de calcul est basé sur une pile de nombres... Imaginez que vous avez une presse papier, c'est la même chose : pour faire une opération, on prend les deux éléments du dessus, on fait le calcul puis on repose le résultat sur la pile. Allez, deux petits exemples de calculs pour que ceux qui débarquent comprennent bien comment ça fonctionne (regardez bien sur votre écran ce qui se passe au niveau de la pile !), chaque touche ou nombre entré étant encadré entre crochets (<>) pour que vous ne fassiez pas de confusions :

Calcul de "7*(3+2)" : <7> <ENTER> <3> <ENTER> <2> <ENTER> <+> <*>

Ou encore : <3> <ENTER> <2> <ENTER> <+> <7> <ENTER> <*>

Si vous ne trouvez pas 35, c'est que vous avez fait une erreur en tapant le programme.

Conversion du résultat de "(3+$F) Xor 2" en hexadécimal (la touche DEC/HEX doit indiquer DEC avant d'effectuer l'opération) : <3> <ENTER> <$> <F> <ENTER> <2> <ENTER> <^> <DEC>

La touche <DEC> devenant <HEX>, tous les nombres sont maintenant affichés en hexa, le résultat est donc $13. Notez que le raccourci clavier pour l'opérateur "^" (Xor) est la touche permettant d'obtenir un accent circonflexe sur le clavier de votre Amiga, je fais ce rappel puisque, d'habitude, cette touche n'a de résultat que sur la touche suivante (et uniquement sur les voyelles).

Voilà, j'espère surtout que vous saurez vous en servir car c'est tellement utile d'avoir une calculette qui fasse les conversions. Pour ceux qui ne connaissaient pas la notation RPN, vous verrez, on s'y fait très vite.

Code source

AMOS
AMOS
AMOS
AMOS
AMOS

Pour le mois prochain, j'ai sous le coude un évaluateur d'expressions (RPN toujours) : vous passez par exemple la chaîne "15 2* 0 STO SIN0 RCLCOS +" et la procédure vous retourne le résultat de l'expression (normale) "Sin(15*2) + Cos(15*2)", ce qui vous permet de faire un traceur de courbes, ou tout ce que vous voulez qui soit capable de faire des calculs (dynamiquement !).


[Retour en haut] / [Retour aux articles] [Article précédent]