Provided by: manpages-fi_4.26.0-1_all 

NIMI
dc - laskin, jolla on rajoittamaton laskentatarkkuus
YLEISKATSAUS
dc [-V] [--version] [-h] [--help]
[-e scriptexpression] [--expression=scriptexpression]
[-f scriptfile] [--file=scriptfile]
[file ...]
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ö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.
VALITSIMET
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.
Tulostuskomennot
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.
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 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.
Pinon hallinta
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.
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 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.
Parametrit
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.
Merkkijonot
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 .
Tilakysely
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.
Sekalaista
! 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.
TIEDOSTOT
~/.dcrc The commands in this file will be executed when dc is first run.
BUGIT
Ilmoita ohjelmistovioista (englanniksi) osoitteeseen bug-dc@gnu.org.
KÄÄNNÖS
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.
GNU Project 22. toukokuuta 2008 dc(1)