dc - laskin, jolla on rajoittamaton laskentatarkkuus
dc [-V] [--version] [-h] [--help]
[-e scriptexpression] [--expression=scriptexpression]
[-f scriptfile] [--file=scriptfile]
[file ...]
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öttöä; jos sille annetaan
komentoriviargumentteja, ne ovat tiedostonimiä, ja dc lukee ja
suorittaa tiedostojen sisällön ennen kuin se lukee
vakiosyötöstä. Kaikki normaali tulostus menee
vakiotulostimeen. Kaikki virhetulostus menee virhetulostimeen.
“Käänteistä puolalaista”
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.
To enter a number in dc, type the digits (using upper case
letters A through F as "digits" when working with
input bases greater than ten), with an optional decimal point. Exponential
notation is not supported. To enter a negative number, begin the number with
“_”. “-” cannot be used for this, as it is a
binary operator for subtraction instead. To enter two numbers in succession,
separate them with spaces or newlines. These have no meaning as
commands.
dc may be invoked with the following command-line
options:
- -V
- --version
- Print out the version of dc that is being run and a copyright
notice, then exit.
- -h
- --help
- Print a usage message briefly summarizing these command-line options and
the bug-reporting address, then exit.
- -e skripti
- --expression=skripti
- Add the commands in script to the set of commands to be run while
processing the input.
- -f
skriptitiedosto
- --file=skriptitiedosto
- Add the commands contained in the file script-file to the set of
commands to be run while processing the input.
If any command-line parameters remain after processing the above,
these parameters are interpreted as the names of input files to be
processed. A file name of - refers to the standard input stream. The
standard input will processed if no script files or expressions are
specified.
- p
- Tulostaa pinon päällimmäisen arvon muuttamatta pinoa.
Arvon jälkeen tulostetaan rivinvaihto.
- n
- Prints the value on the top of the stack, popping it off, and does not
print a newline after.
- P
- Pops off the value on top of the stack. If it it a string, it is simply
printed without a trailing newline. Otherwise it is a number, and the
integer portion of its absolute value is printed out as a "base
(UCHAR_MAX+1)" byte stream. Assuming that (UCHAR_MAX+1) is 256 (as it
is on most machines with 8-bit bytes), the sequence KSK0k1/_1Ss
[ls*]Sxd0>x [256~Ssd0<x]dsxxsx[q]Sq[Lsd0>qaPlxx]
dsxxsx0sqLqsxLxLK+k could also accomplish this function. (Much of the
complexity of the above native-dc code is due to the ~ computing the
characters backwards, and the desire to ensure that all registers wind up
back in their original states.)
- 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.
- +
- 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 eksaktin 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ä on kuin jono Sm lble^ Lm%, mutta toisin kuin
^, tämä komento toimii mielivaltaisen suurilla
eksponenteilla.
- v
- Pops one value, computes its square root, and pushes that. The maximum of
the precision value and the precision of the argument is used to determine
the number of fraction digits in the result.
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.
- c
- Clears the stack, rendering it empty.
- 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
- Reverses the order of (swaps) the top two values on the stack. (This can
also be accomplished with the sequence SaSbLaLb.)
- R
- Pops the top-of-stack as an integer n. Cyclically rotates the top
n items on the updated stack. If n is positive, then the
rotation direction will make the topmost element the second-from top; if
n is negative, then the rotation will make the topmost element the
n-th element from the top. If the stack depth is less than
n, then the entire stack is rotated (in the appropriate direction),
without any error being reported.
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
- Copy the value in register r and push it onto the stack. The value
0 is retrieved if the register is uninitialized. This does not alter the
contents of r.
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.
dc :llä on kolme parametria, jotka hallitsevat sen
toimintaa:has three parameters that control its operation: 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 -- 16
(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.
dc has a limited ability to operate on strings as well as
on numbers; the only things you can do with strings are print them and
execute them as macros (which means that the contents of the string are
processed as dc commands). All registers and the stack can hold
strings, and dc always knows whether any given object is a string or
a number. Some commands such as arithmetic operations demand numbers as
arguments and print errors if given strings. Other commands can accept
either a number or a string; for example, the p command can accept
either and prints the object according to its type.
- [characters]
- Tekee merkkijonoon, joka sisältää characters
(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
pinon 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.
- !<r
- Similar but invokes the macro if the original top-of-stack is not less
than (greater than or equal to) what was the second-to-top.
- =r
- Similar but invokes the macro if the two numbers popped are equal.
- !=r
- Similar but invokes the macro if the two numbers popped are not
equal.
- ?
- 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 .
- Z
- Pops a value off the stack, calculates the number of decimal digits it has
(or number of characters, if it is a string) and pushes that number. The
digit count for a number does not include any leading zeros, even
if those appear to the right of the radix point.
- 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.
- !
- Will run the rest of the line as a system command. Note that parsing of
the !<, !=, and !> commands take precedence, so if you want to run a
command starting with <, =, or > you will need to add a space after
the !.
- #
- Tulkitsee loput rivistä kommentiksi.
- :r
- Ottaa pinon kaksi päällimmäistä arvoa. Vanha
toiseksi päällimmäinen pinon arvo talletetaan
sääntiöön r, joka indeksoidaan vanhalla
päällimmäisellä pinon arvolla.
- ;r
- Ottaa pinon päällimmäisen arvon ja
käyttää sitä indeksinä
sääntiöön r. Valittu arvo
työnnetään pinoon.
Note that each stacked instance of a register has its own array
associated with it. Thus 1 0:a 0Sa 2 0:a La 0;ap will print 1,
because the 2 was stored in an instance of 0:a that was later popped.
- ~/.dcrc
- The commands in this file will be executed when dc is first
run.
Ilmoita ohjelmistovioista (englanniksi) osoitteeseen
bug-dc@gnu.org.
Tämän käsikirjan suomenkielisen
käännöksen tekivät Tuukka Forssell
<taf@jytol.fi>
Tämä käännös on ilmainen
dokumentaatio; katso tekijänoikeusehdot
GNU General
Public License -versiosta 3 tai uudemmasta. Emme ota vastuuta.