Provided by: manpages-fi_0.2-2_all bug

NIMI

       dc - laskin, jolla on rajoittamaton laskentatarkkuus

YLEISKATSAUS

       dc

KUVAUS

       Dc   on   ‘‘käänteistä   puolalaista’’   laskentajärjestystä   käyttävä
       pöytälaskin, jolla on rajoittamaton laskentatarkkuus.  Se  sallii  myös
       makrojen  määrittelyn  ja  kutsun.  Normaalisti dc lukee vakiosyötettä;
       jos sille annetaan komentoriviargumentteja, ne ovat tiedostonimiä ja dc
       lukee   ja   suorittaa   tiedostojen   sisällön  ennen  kuin  se  lukee
       vakiosyötettä.   Kaikki  normaali  tulostus  menee   vakiotulosteeseen.
       Kaikki virhetulostus menee virhetulosteeseen.

       ‘‘Käänteistä  puolalaista’’  logiikkaa  käyttävä laskin tallettaa luvut
       pinoon.  Syötetty  luku  työnnetään  pinoon.  Laskutoimitukset  ottavat
       argumentit pinosta ja työntävät tulokset pinoon.

       Luvun   syöttö   dc-laskimeen   tapahtuu   näppäilemällä   numerot   ja
       mahdollisesti  desimaalipiste.  Eksponenttimuotoa   ei   voi   käyttää.
       Negatiivisen  luvun  syöttö  tapahtuu  syöttämällä  sen  alkuun  ‘‘_’’.
       Miinusmerkkiä ‘‘-’’ ei voi tässä käyttää, koska  se  on  vähennyslaskun
       binäärinen  operaattori.   Kaksi  lukua  voi  syöttää peräkkäin, jos ne
       erotetaan välilyönnillä tai rivinvaihdolla, joilla  ei  ole  merkitystä
       komentoina.

Tulostuskomennot

       p      Tulostaa  pinon  päällimmäisen  arvon  muuttamatta pinoa.  Arvon
              jälkeen tulostetaan rivinvaihto.

       P      Tulostaa pinon päällimmäisen arvon ja  tuhoaa  sen;  ei  tulosta
              rivinvaihtoa.

       f      Tulostaa  pinon  koko sisällön muuttamatta mitään.  Tämä on hyvä
              komento, jos olet eksyksissä  tai  haluat  tietää,  mikä  jonkin
              komennon vaikutus oli.

Laskutoimitukset

       +      Ottaa  kaksi arvoa pinosta, laskee ne yhteen ja työntää tuloksen
              pinoon.  Tuloksen tarkkuuden määrää vain argumenttien  arvot  ja
              se on riittävän suuri antamaan tarkan tuloksen.

       -      Ottaa  kaksi  arvoa  pinosta,  vähentää  ensin  otetun  toiseksi
              otetusta ja työntää tuloksen pinoon.

       *      Ottaa kaksi  arvoa  pinosta,  kertoo  ne  keskenään  ja  työntää
              tuloksen  pinoon.   Tuloksen  desimaalien  lukumäärää kontrolloi
              käypä tarkkuusarvo (katso alempana), eikä se riipu  kerrottavien
              arvoista.

       /      Ottaa  kaksi arvoa pinosta, jakaa toiseksi otetun ensin otetulla
              ja  työntää  tuloksen  pinoon.  Desimaalien  lukumäärä   riippuu
              tarkkuusarvosta.

       %      Ottaa  kaksi  arvoa  pinosta, laskee jakojäännöksen komennolla /
              suoritettavasta jakolaskusta ja työntää  sen  pinoon.  Jakolasku
              tehdään niin monella desimaalilla kuin tarkkuusarvo määrittelee,
              ja jakojäännös lasketaan yhtä monella desimaalilla.

       ~      Ottaa kaksi arvoa pinosta, jakaa toiseksi otetun  arvon  ensiksi
              otetulla.   Osamäärä  työnnetään  ensin  pinoon  ja  jakojäännös
              seuraavaksi.  Tarkkuusarvo määrittelee jakolaskussa  käytettyjen
              desimaalien   lukumäärän.   (Jono  SdSn  lnld/  LnLd%  voi  myös
              toteuttaa  tämän  funktion,  virhetarkistuksen  ollessa   hiukan
              erilainen.)

       ^      Ottaa  kaksi arvoa pinosta ja tekee potenssiin korotuksen, jossa
              ensin  otettu  arvo  on  eksponentti  ja  toiseksi   otettu   on
              kantaluku.   Eksponentin   mahdollisia   desimaaleja   ei  oteta
              huomioon.  Tarkkuusarvo määrittelee pinoon työnnettävän tuloksen
              desimaalien lukumäärän.

       |      Ottaa  kolme  arvoa  pinosta  ja  laskee modulaarisen potenssiin
              korotuksen.  Ensimmäinen pinosta otettu arvo on reduktiomodulus,
              jonka   täytyy   olla   nollasta   poikkeava   ja   tulisi  olla
              kokonaisluku.   Toista   pinosta   otettua    arvoa    käytetään
              eksponenttina;  sen  tulee  olla  ei-negatiivinen  luku  ja  sen
              desimaaliosaa ei oteta huomioon. Kolmas pinosta otettu  arvo  on
              kantaluku,   joka  korotetaan  potenssiin.  Tarkkuusarvo  määrää
              tuloksen desimaalien lukumäärän. Pienillä luvuilla  tämä  toimii
              samoin kuin jono Sm lble^ Lm%, mutta toisin kuin ^, tämä komento
              toimii mielivaltaisen suurilla eksponenteilla.

       v      Ottaa pinosta yhden arvon, laskee  sen  neliöjuuren  ja  työntää
              tuloksen  pinoon.  Tarkkuusarvo määrittelee tuloksen desimaalien
              lukumäärän.

       Useimpiin  laskutoimituksiin  vaikuttaa  ‘‘tarkkuusarvo’’,  jonka  voit
       asettaa  komennolla  k.  Oletustarkkuus on nolla, mikä tarkoittaa sitä,
       että kaikki laskutoimitukset yhteen- ja vähennyslaskua  lukuunottamatta
       antavat tulokseksi kokonaisluvun.

       Jakojäännösoperaatio   %   vaatii   selityksen:  kun  sitä  sovelletaan
       argumentteihin ‘‘a’’ ja ‘‘b’’, se antaa tulokseksi ‘‘a  -  (b  *  (a  /
       b))’’, jossa ‘‘a / b’’ lasketaan käytössä olevalla tarkkuudella.

Pinon hallinta

       c      Tyhjentää pinon.

       d      Tekee  pinon päällimmäisestä arvosta kaksoiskappaleen ja työntää
              sen pinoon.  Siten ‘‘4d*p’’ laskee luvun 4  neliön  ja  tulostaa
              sen.

       r      Vaihtaa pinon kahden päällimmäisen arvon järjestyksen.

Rekisterit

       Dc  antaa  käytettäväksi  256  muistirekisteriä,  joilla  jokaisella on
       yksimerkkinen nimi.  Voit tallettaa luvun tai  merkkijonon  rekisteriin
       ja hakea sen myöhemmin.

       sr     Ottaa  pinon päällimmäisen arvon ja tallettaa sen rekisteriin r.

       lr     Kopioi arvon rekisteristä r ja työntää sen pinoon. Rekisterin  r
              sisältö ei muutu.

       Jokaisella  rekisterillä  on myös oma pinonsa. Rekisterin käypä arvo on
       sen pinon päällimmäinen arvo.

       Sr     Ota (pää)pinon päällimmäinen arvo  ja  työnnä  se  rekisterin  r
              pinoon. Rekisterin edelliseen arvoon ei pääse käsiksi.

       Lr     Ota   rekisterin   r  pinon  päällimmäinen  arvo  ja  työnnä  se
              pääpinoon.  Rekisterin r pinon edelliseen arvoon, jos  sellainen
              on, voidaan nyt päästä käsiksi komennolla lr.

Parametrit

       Dc:llä  on kolme parametria, jotka hallitsevat sen toimintaa: tarkkuus,
       syöttökantaluku ja tulostuskantaluku.  Tarkkuus  määrittelee  useimpien
       laskutoimitusten    tuloksen   edellyttämän   desimaalien   lukumäärän.
       Syöttökantaluku     valvoo     syötettävien     lukujen      tulkintaa.
       Tulostuskantalukua käytetään lukuja kirjoitettaessa.

       Syöttö-  ja tulostuskantaluvut ovat erillisiä parametreja; voit asettaa
       ne  erisuuriksi,   mikä   voi   olla   hyödyllistä   tai   häiritsevää.
       Syöttökantaluvun  tulee  olla  välillä  2  --  36 (mainitut arvot ml.).
       Tulostuskantaluvun tulee olla vähintään 2.  Tarkkuuden tulee olla nolla
       tai  suurempi.   Tarkkuus  mitataan  aina  desimaalilukuna  riippumatta
       käytetystä syöttö- tai tulostuskantaluvun arvosta.

       i      Ottaa pinon päällimmäisen arvon ja asettaa sen  syöttökantaluvun
              arvoksi.

       o      Ottaa    pinon    päällimmäisen    arvon    ja    asettaa    sen
              tulostuskantaluvun arvoksi.

       k      Ottaa  pinon  päällimmäisen  arvon  ja  asettaa  sen  tarkkuuden
              arvoksi.

       I      Työntää käytössä olevan syöttökantaluvun arvon pinoon.

       O      Työntää käytössä olevan tulostuskantaluvun arvon pinoon.

       K      Työntää käytössä olevan tarkkuusarvon pinoon.

Merkkijonot

       Dc   voi   operoida   lukujen   ohella   merkkijonoilla.   Ainoa,  mitä
       merkkijonoilla voi tehdä, on niiden tulostus ja suoritus makroina (mikä
       tarkoittaa sitä, että merkkijonon sisältö prosessoidaan dc-komentoina).
       Kaikki rekisterit ja pino voivat sisältää merkkijonoja,  ja  dc  tietää
       aina,  onko  tietty  kohde luku vai merkkijono.  Jotkut komennot (kuten
       laskutoimitukset)  vaativat   lukuja   argumenteiksi   ja   ilmoittavat
       virheestä,  jos  ne  saavat  merkkijonoja.   Toiset komennot hyväksyvät
       kumman tahansa;  esimerkiksi  komento  p  hyväksyy  kumman  tahansa  ja
       tulostaa kohteen sen tyyppiä vastaavasti.

       [merkit]
              Tekee merkkijonon, joka sisältää merkit (sijoitettuna merkkien [
              ja  ]  väliin),  ja  työntää  sen  pinoon.   Esimerkiksi  [foo]P
              tulostaa merkit foo (ei rivinvaihtoa).

       a      Ottaa  pinon  päällimmäisen  kohteen.  Jos se oli luku, sen alin
              tavu konvertoidaan merkkijonoksi ja työnnetään pinoon.   Muutoin
              pinon  päällimmäinen  kohde  oli  merkkijono  ja sen ensimmäinen
              merkki työnnetään pinoon.

       x      Ottaa arvon pinosta ja suorittaa sen makrona.   Normaalisti  sen
              pitäisi  olla  merkkijono;  jos  se on luku, se yksinkertaisesti
              työnnetään takaisin pinoon.  Esimerkiksi [1p]x suorittaa  makron
              1p, joka työntää 1 pinoon ja tulostaa 1 erilliselle riville.

       Makrot  talletetaan  useimmiten rekistereihin; [1p]sa tallettaa makron,
       joka kirjoittaa 1 rekisteriin a ja lax kutsuu tämän makron.

       >r     Ottaa kaksi arvoa pinosta ja vertaa niitä olettaen, että ne ovat
              lukuja,   toteuttaen   rekisterin   r   sisällön   makrona,  jos
              alkuperäinen pinon päällimmäinen arvo on suurempi.  Siten 1  2>a
              kutsuu rekisterin a sisällön, mutta 2 1>a ei kutsu.

       <r     Kuten  edellinen,  mutta  kutsuu  makron, jos alkuperäinen pinon
              päällimmäinen arvo on pienempi.

       =r     Kuten edelliset, mutta kutsuu makron, jos pinosta  haetut  luvut
              ovat yhtäsuuret.

       ?      Lukee  rivin  päätteeltä  ja suorittaa sen.  Tämä komento sallii
              makron pyytää tietoa käyttäjältä.

       q      Poistuu makrosta ja myös sitä kutsuneesta makrosta.   Kutsuttuna
              ylimmältä   tasolta  tai  makrosta,  jota  on  kutsuttu  suoraan
              ylimmältä tasolta, komento q saa aikaan  poistumisen  ohjelmasta
              dc.

       Q      Ottaa    arvon    pinosta    ja   käyttää   sitä   poistuttavien
              makrosuoritustasojen lukumääränä.   Siten  3Q  poistuu  kolmelta
              makrotasolta.    Komento   Q   ei  koskaan  aiheuta  poistumista
              ohjelmasta dc.

Tilakysely

       Z      Ottaa arvon  pinosta,  laskee  sen  numeroiden  lukumäärän  (tai
              merkkien  lukumäärän,  jos  kyseessä  on  merkkijono) ja työntää
              tämän luvun pinoon.

       X      Ottaa  arvon  pinosta,  laskee  sen  desimaalien  lukumäärän  ja
              työntää  tämän  luvun  pinoon.  Merkkijonon kysymyksessä ollessa
              pinoon työnnettävä arvo on 0.

       z      Työntää pinoon pinon syvyystiedon;  pinossa  olleiden  kohteiden
              lukumäärä ennen komentoa z .

Sekalaista

       !      Toteuttaa loput rivistä systeemikomentona.

       #      Tulkitsee loput rivistä kommentiksi.

       :r     Ottaa   pinon   kaksi   päällimmäistä   arvoa.   Vanha  toiseksi
              päällimmäinen  pinon  arvo  talletetaan   taulukkoon   r,   joka
              indeksoidaan vanhalla päällimmäisellä pinon arvolla.

       ;r     Ottaa  pinon  päällimmäisen  arvon  ja  käyttää  sitä  indeksinä
              taulukkoon r.  Valittu arvo työnnetään pinoon.

HUOMAUTUKSIA

       Taulukko-operaatioita : ja ; käytetään tavallisesti  vain  ohjelman  bc
       perinteisissä  toteutuksissa.   ( GNU bc on itsenäinen ohjelma, joka ei
       tarvitse ohjelmaa dc toimiakseen.)

BUGIT

       Postita    bugiraportit    (englanniksi!)     osoitteeseen     bug-gnu-
       utils@prep.ai.mit.edu.    Muista   kirjoittaa   sana   ‘‘dc’’  kenttään
       ‘‘Subject:’’ .