Provided by:
manpages-fi_0.2-2_all 
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:’’ .