Obligement - L'Amiga au maximum

Jeudi 25 avril 2024 - 10:08  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

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

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des 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,
ALL


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


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


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 publicité, 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]