


     Questa  la descrizione del programma [3mRPN,[0m
     aggiornata alla revisione 1.00 del 31 gennaio 1990.
                                                                [1mMLO 900131[0m
     ---------------------------------------------------------------------


     [1m1) [4mPresentazione e storia
[0m     [1m[4m[0m
            [3mRPN [0m un programma interattivo che permette di eseguire calcoli
     aritmetici,  trigonometrici e statistici  utilizzando tastiera e mouse
     di  un  personal  computer  Commodore  Amiga,  e simulando con esso il
     funzionamento  di un calcolatore da tasca Hewlett-Packard. [3mRPN [0m stato
     sviluppato  originariamente   in  FORTRAN   77  per   un  HP21MX,  poi
     trasportato  su VAX, e implementato anche in  BASIC su PC IBM prima di
     essere  tradotto  in  C  (Lattice  C  V5.04) per l'Amiga; il programma
     originale   simulava  un  pocket  computer  HP-32,  e  nelle  versioni
     successive   si   sono   introdotte   alcune   peculiarit  di modelli
     successivi, in particolare dell'HP-11C.
            Il funzionamento dei pocket computers Hewlett-Packard  fondato
     sulla  notazione polacca  inversa ([3mRPN)  [0mintrodotta da Lukasiewicz nel
     1924,  il  cui  principio  fondamentale  : [3msi dichiarano le variabili
     immediatamente prima delle funzioni che operano su di esse[0m. La maggior
     parte  delle calcolatrici da tasca segue  quasta logica per il calcolo
     delle funzioni di una sola variabile: per estrarre una radice quadrata
     si introduce l'argomento e poi si preme il tasto appropriato. [3mRPN  [0mnon
     complica  l'introduzione  dei  dati  usando  la  notazione inversa per
     alcune funzioni e quella algebrica (che  pi comoda per la  scrittura
     su  carta ma meno  adatta per il  calcolo) in altre;  ma usa la logica
     inversa  per  tutte  le  funzioni  di  due  variabili,  comprese  le 4
     operazioni elementari.


     [1m2) [4mPrimo contatto[0m

            Mandato  in  esecuzione  il  programma  (comando  [3mRPN [0mda CLI, o
     doppio  click  sull'icona  di  [3mRPN[0m),  si  presentano sullo schermo due
     finestre:  la prima contiene  i "tasti" del  calcolatore, da puntare e
     selezionare con il mouse; la seconda i 4 registri dello stack ed i  16
     registri  di memoria. Sei di questi, da [3mA[0m ad [3mF[0m, servono per l'accumulo
     dei  risultati  parziali  nei  calcoli  statistici (media e deviazione
     standard,   interpolazione  lineare);  tutti   sono  comunque  usabili
     dall'utente per conservarvi dei dati.
            L'introduzione dei valori numerici avviene con la tastiera,  ed
     i  caratteri introdotti compaiono nello "string gadget" con la scritta
     [3mInput Field[0m:  questo si  seleziona automaticamente  premendo un  tasto
     associabile  ad un numero floating point (in notazione a virgola fissa
     o  scientifica);    possibile  correggere  quanto  stato introdotto,
     perch  la traduzione dei caratteri  in numero si fa  solo o quando si
     deseleziona  il  gadget  (premendo  il  tasto  [3mReturn[0m),  o  quando  si
     seleziona  un "tasto" od un'opzione dei  menu a discesa. Quando questo
     avviene, il numero viene depositato nel registro [3mX [0mdello stack; e,  se
     era  stata  scelta  una  operazione  da  eseguire  sul  numero  appena
     introdotto, questa viene compiuta subito dopo.



                                     - 1 -



            Un'altra  delle caratteristiche che rendono [3mRPN [0mcomodo da usare
      il trattamento  degli errori: ogni  volta che un'operazione  di tipo
     aritmetico  vietata (per esempio si tenta di effettuare una divisione
     per  zero)  compare  un  [3mrequester[0m  che  segnala  l'errore  ma  [1mnessun
     cambiamento  operato sui registri e sullo stack[0m, per non  danneggiare
     eventuali  risultati  parziali  in  essi  contenuti;  e  anche quando,
     malauguratamente,   una   operazione   sbagliata   venisse effettuata,
     l'opzione[3m  Last  X  [0mdei  menu  a  discesa  consentirebbe di riprendere
     l'ultimo dato usato e, compiendo l'operazione inversa, di ripristinare
     lo stato dello stack e dei registri.


     [1m3) [4mUn esempio[0m

            Vediamo ed esempio come si procede per il calcolo del valore di


                              (Log(X) + 1) / 3.14:

          si introduce X, battendo le cifre una dopo l'altra;

          si seleziona con il mouse il gadget "Ln" (logaritmo  natura-
          le): il  risultato parziale Log(X) compare sullo schermo nel
          registro [3mX;[0m

          si introduce la costante 1 con la tastiera e si seleziona il
          gadget  "+" (addizione): il risultato parziale Log(X)+1 com-
          pare sullo schermo;

          si introduce con la tastiera  la costante 3.14 (o si  usa il
          gadget  "pi greco" per introdurre la costante matematica con
          16 cifre significative):  sullo schermo sono visibili i  due
          fattori;

          si seleziona il gadget "/" (divisione) ed il risultato fina-
          le compare nel registro [3mX.[0m

            I vantaggi sono evidenti: non si deve mai far uso di parentesi;
     non     necessario  un  tasto   conclusivo  ("uguale")  per  dire  al
     calcolatore quando  eseguire le  operazioni; ed  inoltre sono  sempre [1m
     visibili[0m ed [1maccessibili[0m i risultati parziali.
            Per  un calcolo cos semplice  sono sufficienti due dei quattro
     registri dello stack; per calcoli pi complessi si rimanda ai  manuali
     che accompagnano i pocket computers Hewlett-Packard. In questi calcoli
     la  visibilit  continua  dello  stack  e  dei  registri  di memoria 
     perticolarmente utile  per l'apprendimento  della logica  [3mRPN [0me quindi
     interessante anche dal punto di vista didattico.









                                     - 2 -



     [1m4) [4mFunzioni disponibili[0m

          Le quattro operazioni aritmetiche.

          Reciproco, radice quadrata, quadrato, potenza, percentuale.

          Funzioni esponenziali e logaritmiche, naturali e decimali.

          Seno, coseno e tangente trigonometrici ed iperbolici, e loro
          funzioni inverse.

          Funzioni di conversione: a radianti, a gradi sessagesimali o
          centesimali;  dal sistema decimale  a quello sessagesimale e
          viceversa; da coordinate rettangolari a polari e viceversa.

          Funzioni statistiche:  media, deviazione  standard, correla-
          zione,  interpolazione lineare, calcolo di punti sulla retta
          interpolante e dell'errore sulle ordinate dei punti interpo-
          lati con la formula di Fisher.

          Operazioni aritmetiche dirette sui registri di memoria.


            Per  le  funzioni  trigonometriche  la  misura degli angoli pu
     essere  scelta in  radianti, gradi  sessagesimali o gradi centesimali;
     tutti  i  calcoli  sono  eseguiti  in  doppia precisione (64 bits); il
     risultato  viene  presentato  in  virgola  fissa  quando possibile, od
     automaticamente  convertito  in  notazione  scientifica se l'esponente
     supera le capacit di visualizzazione.
            Il   tasto   [3mInv   [0mserve   [1msolo[0m   ad   introdurre   le funzioni
     trigonometriche inverse, e non ha effetto con altre funzioni; [3mHyp  [0mpoi
     introduce  le funzioni trigonometriche iperboliche, e [3mHyp Inv [0m(oppure [3m
     Inv Hyp[0m) le loro inverse.
            Per un buon uso di  [3mRPN [0msi raccomanda di consultare  un manuale
     di  istruzioni  per  un  pocket  computer Hewlett-Packard tipo HP-11C;
     nelle pagine seguenti  si riassumono le  istruzioni per le  operazioni
     fondamentali.


     [1m5) [4mBrevi note[0m

          Il tasto "%" calcola in [3mX [0ml'[3mX [0mper cento di [3mY.

          [0mLe  sequenze [3mRecall <operazione> registro [0mcompiono un [3mEnter,
          [0mquindi mettono in [3mX [0mil risultato di [3mX <operazione> registro.
          [0m

          Le sequenze [3mStore <operazione> registro [0mmettono nel registro
          il risultato di [3mRegistro <operazione> X.[0m

          Per media e deviazione standard, si impostano i dati in [3mX  [0me
          si preme il tasto [3mSommatoria +; [0min [3mX [0m visibile il numero di
          dati  immessi. Premendo [3mMean [0mla media  in [3mX [0me la deviazione
          standard in [3mY.


                                     [0m- 3 -
[3m


          [0m
          Per  l'interpolazione lineare, si impostano le ascisse in [3mX [0m
          e le ordinate in [3mY; [0mpremendo alla fine [3mL.R., [0ml'intercetta  
          in [3mX [0me la pendenza in [3mY. [0mI registri di memoria contengono:[3m

                         A:[0m            Numero di dati immessi
                         [3mB:[0m            Somma delle [3mX
          [0m               [3mC:[0m            Somma delle [3mX [0mal quadrato
                         [3mD:[0m            Somma delle [3mY [0m
                         [3mE:[0m            Somma delle [3mY [0mal quadrato
                         [3mF:[0m            Somma dei prodotti [3mX [0mper [3mY [0m

          e  vengono azzerati con l'opzione [3mClear accumulator [0mdei menu
          a discesa.

          Conversione da coordinate  cartesiane a polari  e viceversa:
          il raggio vettore  in [3mX [0me l'azimuth in [3mY.[0m


     [1m6) [4mIl programma[0m

            [3mRPN  [0m  scritto  in  C  per  il  compilatore  SAS-C  (una volta
     Lattice-C) Versione 5.10;   stato sviluppato  su di un  Amiga 500 con
     512  KBytes di chip RAM e 2.5 MBytes  di Fast Ram, e non dovrebbe dare
     problemi in  nessun'altra configurazione.  Si schedula  da CLI  con il
     comando  [3mRPN, [0mo  da Workbench  selezionando l'icona  relativa (beware:
     real men don't use icons).
            Il programma stesso  accluso in sorgente, con il [3mMakefile  [0mche
       servito a  compilarlo ed  a linkarlo;  si dovrebbe  trasportare con
     minime difficolt sotto l'Aztec-C della Manx.
            Sentitevi liberi di giocare con [3mRPN [0me di diffonderlo a volont;
     ma  considerate  che,  anche  se  provato  a lungo, potrebbe contenere
     ancora  qualche errore che si manifesti solo in occasioni particolari.
     Se per caso apportate dei  cambiamenti, per correggere errori o  anche
     solo  perch non vi piace la forma estetica, siete gentilmente pregati
     di darne comunicazione al sottoscritto:

                           Maurizio LORETI (o MLO, o I3NOO)
                           Via G. Donizetti, 6
                     35010 CADONEGHE (PD)
                           ITALY

            Sono anche raggiungibile per  posta elettronica come LORETI  at
     IPDINFN  (BITNET), o  come VAXFPD::LORETI  (DECnet); VAXFPD   il nodo
     numero  38.257  (o  anche  39169)  della  rete. Tutti questi indirizzi
     corrispondono allo stesso computer, un VAX 8600 sotto sistema VMS.

                                                   HAVE FUN !
                                                                  by MLO







                                     - 4 -
