': PC-LASKURIN KÄYTTÖOHJE Aimo Niemi, 1994 päivitetty 5.4.2006 JOHDANTO Pc-laskuri on laskinohjelma, jossa on mm. kokosivun kaavaeditori, 2000 rivin tai yli 50000 merkin työmuisti sekä 30 rekisteriä vakioiden ja välitulosten talletukseen. Peruslaskutoimitusten lisäksi ohjelma tuntee mm. trigonometriset, logaritmiset, loogiset ja käyttäjän itse määrittelemät funktiot. Sen sisäinen laskentatarkkuus on 16 numeroa ja kymmenjärjestelmän lisäksi luvut voi antaa tai tulostaa myös seksagesimaali heksadesimaali- tai oktaalijärjestelmän lukuina. Ohjelman käyttöliittymä on intuitiivinen. Kaavat ja vakioiden arvot kirjoitetaan muistiin aivan kuin paperille ja aina kun ENTER-näppäintä painetaan, ohjelma laskee kursorin osoittaman rivin arvon. Vastaus jää myös muistiin ja näkyy ko. rivin jatkona aina kuin itse rivikin. Kaavojen ja lukuarvojen lisäksi muistiin voi kirjoittaa myös esim. kaavojen käyttöön liittyviä kommentteja tai yleensä mitä vain haluaa. Lisäksi ohjelmassa on tuki moninumeroisten lukujen peruslaskutoimituksille. OHJELMAN LATAUS Jos haluat kokeilla ohjelmaa, lataa se koneellesi ja pura siirtynyt tiedosto calcul.zip haluamaasi kansioon. Ohjelma on hyvin pieni, pakattuna vain 49 KB ja purettuna 89 KB. Purettuna sillä on nimi Pc-calc.exe mutta nimen voi halutessa vapaasti vaihtaa. OHJELMAN KÄYNNISTYS Ohjelma käynnistyy klikkaamalla sen ikonia, jolloin se samalla avaa työtiedostonsa pcal.fml. Jos tiedostoa ei ole, luo ohjelma sellaisen tai halutessa sille voi parametrinä antaa myös jonkin muun tiedoston. Työtiedoston maksimikoko on n. 50KB mutta käytännössä se kannattaa pitää lyhyempänä, jotta myös kaikki istunnon aikaiset uudet toimitukset mahtuisivat mukaan. Avattuna työtiedoston 1. rivi ei tule näkyviin mutta siellä on tallessa kursorin edellinen paikka ja laskurin käyttämien värien koodit. Jakelussa olevalla laskurin versiolla värejä ei voi vaihtaa mutta jollakin muulla editorilla sen voi kokeilemalla tehdä. KAAVAEDITORI Kaavojen syöttö tapahtuu kaavaeditorissa, joka on kuten mikä tahansa tekstieditori omine käskyineen kursorin siirtämiseksi ja tekstin luomiseksi. Kaavakokoelman maksimikoko on joko 2000 riviä tai hieman yli 50000 merkkiä. Rivin maksimipituus on 254 merkkiä. Laskurin käyttöliittymä on niin intuitiivinen, että jälempänä tulevia ohjeita saatat tarvita vain, jos haluat käyttää sitä omien pikku ohjelmien luomiseen. Mainittakoon, että edes ohjelman tekijä, vaikka käyttääkin laskuria lähes päivittäin, ei koskaan ole tosimielessä tarvinnut laskurin ohjelmointiominaisuutta. Tuo mahdollisuus tulikin mukaan vain, koska tekijä halusi kokeilla, osaako hän sellaisen ohjelmoida. Editorin tuntemat komennot ovat: Nuolet - Siirrä kursoria Ctrl -> - Siirry seuraavaan sanaan Ctrl <- - Siirry edelliseen sanaan Home - Siirry rivin alkuun End - Siirry rivin loppuun Ctrl-Home - Siirry tekstin alkuun Ctrl-End - Siirry tekstin loppuun PgDn - Seuraava sivu PgUp - Edellinen sivu Ctrl-PgDn - Siirry puoliväliin kohti loppua Ctrl-PgUp - Siirry puoliväliin kohti alkua Ctrl-A - Vieritä tekstiä alas Ctrl-X - Kuten Ctrl-A Ctrl-Z - Vieritä tekstiä ylös Back Space - Tuhoa edellinen merkki, rivin alussa - yhdistä rivi Del - Tuhoa kursorin osoittama merkki Ins - Väliinkirjoitus on/ei (Insert) Alt-b - Katkaise rivi (break), rivin alussa - siirrä riviä alaspäin Alt-c - Kopioi rivi (copy) Alt-d - Tuhoa rivi (delete) Alt-e - Funktiolaajennus (extension) on/ei Alt-f - Etsi merkkijono (find) Ctrl-l - Etsi lisää Alt-i - Lisää tyhjä rivi (insert) Alt-n - Kavenna editoria (narrow). Jos laskuria käytetään Windowsin dos-ikkunassa, voi sitä tällöin ajaa pienemmässä ikkunassa. Komento kumotaan painamalla kahdesti F9. Alt-p Piirrä kuvaaja (plot). Komento sisältyy vain ohjelman laajaan versioon ja vaatii vähintään EGA-tasoisen näytön. Alt-z - Kuten Alt-b mutta mukavampi antaa. F1 - Lyhyt avustus, keskeyttää myös silmukan. F2 - Vaihda värit. Komento sisältyy vain ohjelman laajaan versioon. F3 - Valitse rivi, jolloin sitä voi nuoli- näppäimillä siirtää ylös tai alas. F4 - > talletamerkki. (Joistakin koneista tämä ja eräät muutkin merkit voivat puuttua tai ne saattavat muutoin olla vaikeat antaa.) F5 - £ rivifunktio (=punnan merkki) F6 - @ vastausrekisteri F7 - * kertomerkki F8 - ^ potenssiinkorotus F9 - Näytä nollasta eroavat vakiot A-Z. F10 - Poistu. Jos muistin ensimmäinen merkki on kaksoispiste (:), poistutaan välittömästi, muutoin työmuisti talletetaan ensin. TAB - õ sigma operaattori + ENTER. Näppäin aktivoi kaavatulkin, joka laskee ko. rivin arvon ja lisää sen rekisteriin f. KAAVATULKKI JA OHJELMAN KÄYTTÖ Peruslaskutoimitusten lisäksi ohjelma tuntee joukon funktioita, joiden lyhenteet voi nähdä kaavaeditorin alapuolella. Perussääntö on, että kaavoissa pienet kirjaimet on varattu funktioille ja isot vakioille ja välituloksille. Tästä ovat poikkeuksena f, x, y ja z, jotka ovat työrekistereitä ja esittävät eri lukuja kuin vastaavat isot kirjaimet F, X, Y tai Z. Lisäksi käytettävissä on rekisteri @, joka sisältää aina viimeksi lasketun rivin tuloksen. Ellei sulkein ole toisin osoitettu, kaavat suoritetaan vasemmalta oikealle aritmetiikan sääntöjen mukaisesti - ensin potenssiin korotukset (^), sitten funktiot, sitten kerto- ja jakolaskut sekä lopuksi yhteen- ja vähennyslaskut. Kaavoissa kertomerkin käyttö on vapaaehtoista paitsi, jos on kerrottava kaksi numeroin osoitettua lukua. Tällöin merkki tarvitaan, jotta ohjelma tietää lukujen rajakohdan. Muutoin kaavatulkki on lukujen syötössä varsin vapaamielinen. Numerot voi esim. välilyöntien avulla ryhmitellä, jolloin pitkien numerosarjojen luettavuus paranee. Desimaalierotin voi taas olla joko piste (.) tai pilkku (,) tai vaikka molemmat yht'aikaa. Jos erottimia on useita, silloin ensimmäinen ratkaisee. Esim. 6543.123,456 = 6 543,123 456 = 6543.123456. Kymmenjärjestelmän lisäksi luvut voi antaa myös heksadesimaali-, oktaali- tai seksagesimaalimuodossa. Tällöin luvun tyyppi osoitetaan etuliitteellä h, o tai g. Esim. hFF.8'= o377.4 = 255.5 ja g182458.5'= 18+24/60+58.5/3600 = 18.41625. Luvun tulostus halutussa järjestelmässä suoritetaan vastaavasti komennolla ?, ?h, ?o tai ?g. Numeroarvojen lisäksi kaavoissa voi esiintyä myös vakioita ja funktioita. Vakioita ovat kaikki isot kirjaimet A-Z sekä lisäksi pikkukirjaimet f, x, y ja z. Vakioiden arvot annetaan joko omalla rivillään komennoilla = tai kaavan sisällä komennolla >. Esim. A=100 B=456>x+A asettaa A:ksi 100, B:ksi=556 ja x saa arvon 456. Kaavan sisällä lukuja voi tallettaa tilapäisesti myös rekisteriin @ mutta tällöin on huomattava, että lopuksi @ saa aina viimeksi suoritetun rivin arvon. Kaavatulkin tunnistamat funktiot ja operaattorit ovat: koodi merkitys esimerkkejä a = arc = trig. arcus funktio as1=arcsin(1)=90 b = abs = itseisarvo b2=b(-2)=2 c = cos = trig. kosini c60=c(--60)=0.5 e = exp = e potenssiin parametri e1=e(2-1)=2.718282 g = muunna seksages. desimaaliksi g112233=11.3758333 h = heksadesimaaliluvun etuliite hff.8 =255.5 i = int = erota kokonaisosa i3.6=3, i(-4.1)=-5 l = log = logaritmi l100=2 n = ln = luonnollinen logaritmi ne1=1, n2=0.693147 o = oktaaliluvun etuliite o377.4=255.5 p = pi = 3.141592653589793 2pp=19.7392088 q = sqr = neliöjuuri q2=1.414213562 k = kuutiojuuri k8=2 r = 0>f>x>y>z (reset) r* = nollaa kaikki vakiot s = sin = trig. sini s210 = -0.5 t = tan = trig. tangentti t45=1 + = plusmerkki 1+2=3 - = miinusmerkki 5-3=2 * = kertomerkki 2*3=6 / = jakomerkki 8/2=4 ^ = korota potenssiin x^3=xxx, 2^0.5=q2 \ = laske keskiarvo 1+2+3+4\ = 2.5 == = looginen operaattori "=" (x==x)=-1, (1==2)=0 < = looginen operaattori "<" (1<2)=-1, (2<1)=0 £ = rivifunktio £135, £x, £(5+2x) = = Aseta vakion arvo x=3.14, A=2x+1 > = Talleta vakioksi 600>x>£x>£(22+x) ; = Talleta rekisteriin @ 9;2*2-@@ = 14 9;2^2-@@ = -7 u = Talleta parametri rekisteriin f ja sijoita u:ksi rivin 2 tulos ux=£(2+x>f0) w = Talleta parametri rekisteriin f ja sijoita w:ksi rivin 3 tulos wx=£(3+x>f0) õ = Lisää rivin arvo rekisteriin f ja suorita tabulointi (TAB). ? = Kirjoita tulos työmuistiin ?g= Kirjoita tulos seksagesimaalimuodossa ?h= Kirjoita tulos heksadesimaalimuodossa ?o= Kirjoita tulos oktaalimuodossa ' = Kommentti seuraa. : = Kommentti seuraa. Ensimmäisen rivin alussa = muistia ei talleteta. Huomaa, että yleensä funktion jäljessä on sen argumentti. Tästä ovat ainoat poikkeukset \ > ja ? Huomaa myös puolipisteen prioriteetti. Se on suurempi kuin kerto- ja jakolaskun mutta pienempi kuin potenssin. Jos kaavassa on jokin laiton operaatio, kuten q-2, ohjelma varoittaa asiasta äänimerkillä mutta yrittää silti jatkaa suoritusta. Tällöin esim. q-2 = q2+piippaus. SUURET LUVUT Jos ohjelman tarkkuus ei riitä, voi pitkillä luvuilla laskea myös suoraan kaavamuistiin. Tällöin luvut kirjoitetaan alekkain ja asetetaan haluttu operaattori, + - * tai / alimman luvun alkuun. Jos nyt kursori on tällä rivillä ja painetaan ctrl+enter, lisätään laskun tulos rivien alle seuraavan rivin väliin. Luvun maksimipituus voi olla jopa 250 merkkiä mutta, jos esim. kertolaskun tulos moudostuu paljon tätä pidemmäksi, saattaa se jumittaa ohjelman. Jakolaskussa kokonaisluvuille ilmoitetaan myös jakojäännös. Jos tulos halutaan desimaalilukuna, on jaettavaan lisättävä haluttu määrä desimaaleja. Esim. 123456789123456789.000 000 000 /987654321 =124 999 998.985 937 498 Peruslaskujen lisäksi kaavamuistiin voi samalla periaatteella laskea myös pitkien lukujen neliö- tai kuutiojuuria sekä kaikki trigonometriset funktiot. Myös luvun pii voi kertoa p:n jäljessä annetulla luvulla tai jakaa luvun tekijöihinsä, jos rivin alkuun on asetettu operaattori f (factor). Jos tekijät ovat isoja, saattaa haku kyllä kestää melko kauan. Haun voi silloin keskeyttää painamalla ESC-näppäintä. esim. q2.000 000 000 000 000 000 000 =1.414 213 562 373 095 048 8016 k5.000000000000000 =1.7099759466766969 p2.00 6.28318530717958647692528676655900576839433879875000 f 4415059749223 'Painamalla Ctrl+ENTER ohjelma etsii f142421282233*31* 'pienimmän tekijän, joka on suurempi f123522361*1153*31* 'kuin edellisessä haussa löydetty. 31327*3943*1153*31* 'No more factors RIVIFUNKTIO £ Vaikka Pc-laskurissa yksi rivi voi olla jopa 254 merkkiä pitkä, on usein mukavampi jakaa laskun suoritus useammalle riville. Rivit voi sitten suorittaa joko yksitellen tai rivifunktion avulla kaikki yhdellä kertaa. Rivifunktion muoto on £n missä parametri n on suoritettavan rivin numero. Numeroarvon lisäksi n voi olla myös vakio tai esim. loogisia operaatioita sisältävän laskututoimituksen tulos. Arvokseen rivifunktio saa osoittamansa rivin arvon. Esim. x=£10£11£12 £(10-3(1<2)) suorittaa rivit 10, 11, 12 ja 13 sekä asettaa x:ksi ko. rivien tulon. Sisäkkäisten rivifunktiokutsujen maksimiluku on 19. Jos rivifunktio kutsuu itseään, tätä rajoitusta ei kuitenkaan ole. Funktio ei silloin saa mitään arvoa mutta rivin suoritus sen sijaan alkaa uudelleen alusta. Jos tällainen tilanne syntyy vahin- gossa, saattaa helposti syntyä ikuinen silmukka, josta pääsee kuitenkin pois funktionäppäimellä F1. Rivifunktion avulla lukuja voi tallettaa myös työmuistiin. Tällöin komento on x>£y '(talleta x riville y). Huomaa, että muoto £y=x ei toimi tässä. OMAT FUNKTIOT Rivifunktion ansiosta käyttäjän omien funktioiden luonti on PC-laskurissa erittäin helppoa. Mikä tahansa työmuistin rivi on itse asiassa valmis funktio, jonka arvon voi rivifunktion avulla sijoittaa käsillä olevaan kaavaan. Ennen sijoitusta on vain katsottava, että ko. rivillä esiintyvät vakiot, eli tässä tapauksessa ko. funktion parametrit, saavat niille toivotut arvot. Jos esim. rivillä 273 olisi kaava at(x/q(1-xx))' = arcsin(x) (rivi 273) voisimme ensin asettaa vaikka x=0.5 ja suorittaa sitten y=£273, jolloin y saisi arvon arcsin(0.5)=30. Sama tulos saataisiin myös suoraan asettamalla y=£(273+0.5>x0) Parempi keino parametrin välitykseen on kuitenkin rekisterin @ ja puolipisteen käyttö. Jos määritte- lemmekin at(@/q(1-@@))' = arcsin(@) (rivi 283) voi funktiota kutsua nyt yksinkertaisesti y=£(283;0.5)' = arcsin(0.5)=30. Mikäli omia funktioita on paljon, saattaa niiden rivinumeroiden muistaminen olla vaikeaa. Tällöin numero kannattaakin tallettaa vakioksi. Sen muistaminen on helpompaa ja funktion suorituskin nopeutuu hieman. Jos asetetaan esim. S=283, voi edellä olevan esimerkin suorittaa myös y=£(S;0.5) tai vielä lyhyemmin y=£;0.5S RIVIFUNKTIOT u ja w Funktiot u ja w ovat yleisen rivifunktion £n erikoistapauksia. Molemmat tallettavat parametrin arvonsa rekisteriin f minkä jälkeen u suorittaa rivin 2 ja w vastaavasti rivin 3. Niiden yleiset rivifunktio- vastineet ovat: ux = £(2+x>f0), u(x;y) = £(2+x>f0+y>@0), wx = £(3+x>f0), ;ywx = £(3+x>f0+y>@0). FUNKTIOT Laskurin tuntemat funktiot ja niiden lyhenteet on lueteltu kaavaeditorin alapuolella. Yksikirjaimisten lyhenteiden lisäksi kaavoissa voi käyttää myös niiden pidempiä vastineita mikäli ohjelma on ns. "Funktion extension" tilassa. Tämä tila asetetaan ja poistetaan komennolla alt-e. Jos siis funktiolaajennus on päällä, on esim. sin 30' = s30 = 0.5 Jos taas laajennus ei ole päällä, on sin 30' = s(i(n30)) = 0.0523... OHJELMASILMUKAT JA -HAARAT Vaikka PC-laskuri ei pyri kilpailemaan korkean tason ohjelmointikielien kanssa, voi sillä periaatteessa kuitenkin ratkaista myös hyvinkin vaativia laskutehtäviä. Tosin sen tarjoamat apuneuvot päätöksentekoon tai ohjelmahaarojen ja -silmukoiden luomiseen ovat niukat mutta moneen tarkoitukseen kuitenkin täysin riittävät. Rivifunktion avulla halutut kaavat voi suorittaa yhdellä kertaa ja antamalla parametriksi loogisia operaatioita sisältävän lausekkeen, voi ohjelman kulkua ohjata haluamallaan tavalla. Seuraava lyhyt esimerkki valaisee ohjelmasilmukoiden luomista ja tekniikkaa, jolla niistä pääsee hallitusti pois. 1>f £(K+1)' Hyppy silmukkaan (rivi K), @*f>f+£(K+1-(@<3);(@-1))' Silmukka (rivi K+1), 0' Poistu (rivi K+2). Esimerkki määrittelee luvun n kertoman ' n! =1*2*...*(n-1)*n joka saa parametrin arvonsa rekisteristä @ (@=n). Kertoman suoritus alkaa riviltä K, missä sen alkuarvo 1 talletetaan rekisteriin f. Rivi jatkuu rivifunkitiolla £(K+1), joka suorittaa seuraavan rivin. Tällä rivillä termi @*f laskee ensin kertoman välituloksen, joka talletetaan rekisteriin f. Sitten seuraa rivifunktio £(K+1-(@<3);(@-1)), joka on tämän esimerkin pääkohta. Jos @>=3, saa looginen operaatio (@<3) arvon 0 (ei tosi), jolloin rivifunktio kutsuu siis riviä K+1 eli itseään. Sitä ennen termi ;(@-1) asettaa kuitenkin rekisterin @ uudeksi arvoksi @-1, joka näin pienenee ja on lopulta <3. Tällöin termi (@<3) saa arvon -1 (tosi) ja ko. rivifunktio suorittaakin nyt rivin K+2. Tämän rivin arvo on 0, joka sijoitetaan ensin riville K+1 ja sitten rivin K+1 arvo riville K, mikä päättää kertoman suorituksen. Määrittelyn avulla kertoman lasku on nyt helppoa. Jos määrittely alkaa riviltä K, annamme vain K:lle oikean arvon, esim. K=382, minkä jälkeen esim. 9! lasketaan £(K;9) '=9!=362880 tai lyhyemmin £;9K ESIMERKKEJÄ Kopioi oheiset esimerkit työmuistin alkuun ja tutustu niihin huolella saadaksesi täyden hyödyn PC-laskurin tarjoamista mahdollisuuksista. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ 'ESIMERKIT ALKAA (rivi 1) 'Varattu funktiolle u() (rivi 2) 'Varattu funktiolle w() (rivi 3) 'HYPERBOLISET FUNKTIOT (e@-e(-@))/2 'sinh(@) (rivi 6) (e@+e(-@))/2 'cosh(@) (e@-e(-@))/(e@+e(-@)) 'tanh(@) (e@+e(-@))/(e@-e(-@)) 'coth(@) l(@+q(@@+1)) 'arsinh(@) l((1+@)/(1-@))/2 'artanh(@) (rivi 11) 'PÄÄSIÄISEN LASKU VUONNA y. 'Tuloksena x=kuukausi, f=päivä (pääsiäissunnuntai) (y-100(i(y/100)>D))>A' (rivi 16) (A-4i(A/4))>B (y-19i(y/19))>C i(D/4)>E i((D-15)/25)>F i((D-F)/3)>G ((19C+D+15-E-G)>K-30i(K/30))>K ((18+2D-E+2B+4A-K)>L-7i(L/7))>L (((K+L)>J+7(34J+22+7(J==34)(K==28)(10J (3-(31x (J+31(31f' (rivi 26) 'LINEAARINEN REGRESSIO, y=A+Bx 'nollaa työrekisterit 0>X>Y>Z>F>f>G' (rivi 30) 'Lisää havainnot 'Huomaa! Mitä lyhyempi rivi, sitä nopeampi suoritus. X=X+xY=Y+yZ=Z+xxF=F+yyG=G+xyf=f+1' (rivi 33) 'Poista virheellinen havainto X=X-x Y=Y-y Z=Z-xx F=F-yy G=G-xy f=f-1' (rivi 35) 'ESIMERKKEJÄ YO. FUNKTIOIDEN KÄYTÖSTÄ: 'Hyperboliset funktiot £(6;1.4)@-;1,4£7@' = sinh(1.4)^2 - cosh(1.4)^2 = -1 'Pääsiäinen 'Aseta y=vuosi ja suorita rivit 16-26 1992>y+£16£17£18£19£20£21£22£23£24£25£26 'Lineaarinen regressio £30' Muista aluksi nollata työrekisterit. 'Anna x ja y sekä suorita rivi 33 'Käytä päällekirjoitusmoodia ja kopioi niin monta 'riviä kuin tarvitset. -10>x+ 990>y+£33 -5>x+ 993>y+£33 0>x+ 998>y+£33 + 5>x+1003>y+£33 10>x+1006>y+£33 15>x+1008>y+£33 20>x+1010>y+£33 'Ratkaise vakiot A ja B B=(fG-XY)/(fZ-XX) :(B= 0.7) A=(Y-BX)/f :(A= 997.6428571) 'Ratkaise korrelaatiokerroin R (fG-XY)/q((fZ-XX)(fF-YY))>R :(R= 0.985933455) 'Ratkaise y kun x tunnetaan :(x=17) x=17 y=A+Bx :(y=1009.542857) 'Ratkaise x kun y tunnetaan :(y=1005) y=1003 x=(y-A)/B :(x=7.653061224) 'tai 1005 >y, +(y-A)/B>x :(x=10.51020408) COPYRIGHT Ohjelmaa saa vapaasti levittää ja kopioida mutta ohjelman sisältämiä ideoita ei saa väittää omikseen eikä niitä myöskään saa patentoida. Jos olet lahjoittanut UNICEFille jotain, voit lisätä työtiedoston alkuriville kommenttimerkit ':, jolloin voit poistua laskurista ilman tuota lahjoituspyyntöä.