    PROGRAMIRANJE DzEPNOG KALKULATORA
   
   Comp+Comp=resenje


 Racunanje je bio prvi umni rad koji je covek pokusao (i uspeo) da poveri
masinama. Prvo su to bile mehanicke racunaljke koje su vec odavno 
zaboravljene jer obicni smrtnici mogu sebi priustiti dzepni kalkulator i
druge elektronske sprave za racunanje. Danas srednjoskolac pritiskom na
dva tastera izracunava logaritam na dva puta vise decimala nego sto u
znoju lica svoga racunali naucnici pre nekoliko decenija. Jeste da
kalkulatori ne spadaju u racunare ali mnogi neznaju da iskoriste
mogucnosti svog kalkulatora, sto je prava steta.

 Kalkulatori se mogu podeliti u tri velike grupe:
 1. diplomatski
 2. inzinjerski
 3. naucno-programabilni

1. Diplomatski su najjednostavniji. Tako su nazvani jer pored osnovnih
operacija imaju i procente (%). Cesto imaju i koren, jednu memoriju i
1/X. Arhitektura im je jednostavna; imaju dva registra (memorija u kojoj
se privremeno pamte brojevi) prvi za zadnji rezultat i drugi za otkucan
broj, mala memorija za poslednju operaciju i jos jedna memorija kojoj se
moze dodati/oduzeti poslednji rezultat (onaj na displeju). O prioritetu
racunskih operacija ovi kalkulatori ne vode racuna. Ako brojeve kucate
onako kako su napisani pogresicete. Npr. 2+3*5 ako ovako budete kucali
dobicete rezultat 25 (kalkulator je racunao ovako: 2+3 =5 *5 =25). Mozete
rucno uneti 3*5+2 (sto ce dati tacan rezultat - 17) ili mozete uporebiti
memoriju:
 CM   ;brise memoriju
 2    ;
 M+   ;unosi 2 u memoriju
 3*5= ;
 M+   ;dodaje 15 u memoriju
 RM   ;poziva rezultat
Ovo je jednostavan primer koji pokazuje kako se memorija moze iskoristiti.

2. Inzinjerski kalkulatori su svi koji znaju vise od diplomatskih ali se
ne mogu programirati. Obavezno imaju trigonometrijske funkcije (sin, cos,
tan), decimalni i prirodni logaritmi i njihove inverzne funkcije. 
Pored ovih funkcija koje imaju svi kalkulatori ove klase postoje
kalkulatori koji iamju dodatne funkcije u zavisnosti od toga kome su
namenjeni. Tako poslovni kalkulatori imaju ugradjen kalendar, statisticke
funkcije (analiza trenda, varijante, korelacije, standardnu devijaciju),
kamatno-kamatni racun... Najbolji kalkulatori namenjeni matematicarima i
elektrotehnicarima umeju da racunaju sa kompleksnim brojevima, gama
funkcijom, faktorijelom... Preciznost ide do 10 ili 12 mesta. Ovi
kalkulatori vode racuna o prioritetu operacija za razliku od diplomatskog.
Davno su postojala dva standarda: RPN (Reversed Polish Notation) sistem i
drugi koji je omogucavao unosenje znakova onako kako su napisani na papiru.
danas kalkulatori rade po drugom sistemu (kucaj kako je napisano). Noviji
inzinjerski kalkulatori imaju mogucnost ucenja. Ali o tome cu pisati
posto opisem programabilne kalkulatore.
@IMAGE "TI59.IMG" 0
                           3. Programabilni kalkulatori su bili popularni
                           dok se nisu pojavili mini racunari koji mogu da
                           stanu u dzep. Jedan od najboljih programabilnih
                           kalkulatora su HP41 (Hewlett Packard) i TI59
                           (Texas Instruments) koji je pre 20 godina kostao
                           preko 1200DM! TI59 ima ROM module sa programima
                           i ima mogucnost zapisivanja i citanja programa
                           sa magnetne kartice. Ovi kalkulatori imaju
                           kontrolne naredbe GOSUB, GOTO... kojima se moze
                           menjati tok programa. Ovi kalkulatori obicno 
                           imaju prostranu memoriju koja se moze po potrebi
                           pretvoriti u mesta za pamcenje koraka u programu
                           (oko 5000 koraka - TI59). O ovim kalkulatorima 
                           se moze mnogo toga napisati ali posto ih retko
                           ko ima skraticemo pricu o njima i preci na

                           PROGRAMIRANJE KALKULATORA
                           Kalkulatori koji se mogu programirati imaju 
                           dirku na kojoj obicno pise COMP (computing) a
                           iznad nje (sto znaci da se poziva sa Shift) LRN
                           (learning). Program je u stvari stvarni redosled
                           pritiskanja dirki koje bi trebalo pritiskati pri
                           racunanju. Ako treba vise puta racunati nesto po
                           nekom obrascu najjednostavnije je napraviti 
                           program koji ce od nas traziti da unesemo samo
                           promenljive dok ce on obaviti sva racunanja bez
naseg kucanja operacija. Kazu da se najlakse uci na primerima pa ce mo
programiranje i objasniti na primeru usput objasnjavajuci neke pojmove.
Za primer ce mo uzeti pravljenje programa za resavanje kvadratne jednacine:
@IMAGE "KVADRATN.IMG" 23 




Napravicemo program koji ce od nas traziti da unesemo a,b i c i izracunati
za par sekundi X1 i X2. Najbole bi bilo da prvo na papiru napisete
kvadratnu jednacinu u kojoj je a=1, b=5 i c=6 od pocetka do kraja, korak po
@IMAGE "LRNDIGIT.IMG" 40 
korak. Resenja  ce  biti X1=-3 i X2=-2.
Prvo treba pritisnuti LRN (2ndF (shift)
pa LRN), ovim se aktivira mod za ucenje
(unosenje programa) i brise se iz memo-
rije  predhodni  program. Pre  nego sto 
pocnemo sa unosom programa da napomenem
da  kalkulatori obicno  mogu da zapamte
oko  40 koraka  (korak  je  pritisak na
dirku) i obicno imaju po jednu memoriju
i 2 konstante (K1 i K2). U konstantu se
moze  uneti  broj  koji je  trenutno na
displeju (X->K1 ili X->K2)  ali se  pri
vracanju  iz memorije  mnozi sa  brojem 
koji je na displeju dajuci njihov proi-
zvod. Ako  zelimo  da  vratimo  broj iz
konstante prvo pritisnemo 1 pa tek onda
K1  ili  K2.  Za  razliku  od  memorije
konstanti  ne  mozete  dodati  broj  na
displeju. Da se vratimo na nas program.
Promenljive, u  nasem slucaju a, b i c,
se unose pritiskom na [X] posle toga se
unosi broj koji odgovara toj promenlji-
voj, prva  promenljiva  je 1, druga 5 i
treca 6. Program ce, kad ga zavrsite na
mestu gde ste uneli [x] stati i traziti
od vas da  unesete promenljivu i nasta-
viti  da racuna dok ne naidje  na druge
promenljivu  ili na  komandu HLT (halt)
koja zaustavlja program da bi ste vide-
li  sta  je trenutno na  displeju (neki
medjurezultat). Posle unosa promenljive
treba pritisnuti COMP isto  kao i posle
komande HLT za  nastavak programa. Program se startuje takodje pritiskom na
COMP. Mislim da sam rekao sve sto je vazno, pa bi mogli da se upustimo
(napokon) u programiranje. Sledi program za gore navedenu formulu, korak po
korak uz objasnjenje:
Legenda: ^ - kvadrat
         / - deljenje
      \/ - koren
         * - puta

korak | dirka | objasnjenje
------+-------+----------------------------------------------- --- -- -  -
  1.  |  [x]  | Unosimo prvu promenljivu, promenljivu a
  2.  |   1   | vrednost promenljive - a, npr. 1 *
  3.  | x->k1 | promenljivu a upisujemo u konstantu 1
  4.  |  [x]  | unosimo drugu promenljivu, promeljivu b
  5.  |   5   | vrednost promenljive - b, npr. 5 *
  6.  | x->k2 | promenljivu b upisujemo u konstantu 2
  7.  |   x^  | kvadrira broj na displeju odnosno promenljivu b
  8.  |   -   | od b oduzima
  9.  |   4   | 4
 10.  |   k1  | i to sve mnozi sa k1 odnosno sa promenljivom a
 11.  |   *   | i to mnozi sa
 12.  |  [x]  | unosimo trecu promenljivu, promenljivu c
 13.  |   6   | vrednost promenljive - c, npr. 6 *
 14.  |   =   | da bi smo dobili potkorenu velicinu (b^-4ac)
 15.  |  HLT  | zaustavljamo program **
 16.  | \/  | korenujemo b^-4ac
 17.  |   -   | od nje oduzimamo
 18.  |   k2  | konstantu 2 odnosno promenljivu b
 19.  |   =   | dobijamo rezultat koji
 20.  |   /   | delimo sa
 21.  |   2   | dva
 22.  |   /   | pa opet delimo sa
 23.  |   k1  | konstantom 1 odnosno promenljivom a
 24.  |   =   | dobijamo X1 (prvo resenje)
 25.  |  HLT  | zaustavljamo program da bi smo procitali vrednos X1
 26.  |  +/-  | menjamo znak X1 (prvom resenju)
 27.  |   -   | od njega oduzimamo
 28.  |   k2  | konstantu 2 odnosno b
 29.  |   /   | delimo sa
 30.  |   k1  | konstantom 1 odnosno a
 31.  |   =   | i dobijamo X2 (drugo resenje) 
------+-------+----------------------------------------------- --- -- -  -

 * - moze biti bilo koja promenljiva ali je preporucljivo pri programiranju
     uzeti promenljive za koje znama rezultat
** - program zaustavljamo da bi smo videli da li je D pozitivna ili 
     negativna velicina jer ako je negativna velicina mnogi kalkulatori ce
     javiti grasku jer ne znaju da rade sa imaginarnim velicinama

 Ako ste sve pravilno uneli resenja bi trebala da budu X1=-2 i X2=-3.
Kad pokrenete program sa COMP prvo ce se prikazati [1] sto je znak da treba
da unesete prvu promenljivu, u nasem programu a. Kad unesete promenljivu
pritisnite COMP za nastavak programa, zatim ce se pojaviti [2] sto znaci
po analogiji na predhodni slucaj da treba da unesete drugu promenljivu 
odnosno b. Posle unosa promenljive i pritiska na COMP pojavljuje se [3],
unesite trecu promenljivu, c, i pritisnite COMP. Kalkulator ce nastaviti sa
racunanjem. Zatim ce se pojaviti podkorena velicina, program se zaustavio
na ovom mestu zobog onog HLT u programu, za nastavak pritisnite COMP i
pojavice se prvo resenje (X1) i posle sledeceg pritiska na COMP pojavice se
i drugo resenje (X2). Kako napisati neki svoj program za izracunavanje neke
formule? Treba jednostavno smisliti kako bi ste izracunali tu formulu iz
jednog cuga, odnosno bez pritiskanja tastera ON/C (resetovanja kalkulatora)
kad to uradite ukljucite LRN i kucajte sve to jos jednom s tim sto na mestu
gde imate neku promenljivu prvo pritisnite prvo [x] pa tek onda unesite 
promenljivu. Cini mi se da sam dosta rekao za pocetak ako bude nekih
problema slobodno me kontaktirajte. Takodje ako ste napravili neki program
mozete ga poslati i bice objavljen u sledecem broju!

                                                       (Izvor: Moj mikro)

\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/\_/
