Provided by:
manpages-hu_20010119-5_all 
NÉV
dc - tetszőleges pontosságú számológép
ÁTTEKINTÉS
dc
LEÍRÁS
A dc egy korlátlan pontosságú számítások elvégzésére alkalmas
fordított-lengyel (postfix) asztali számológép, amely lehetőséget ad
makrók definiálására és végrehajtására. A bemenetet a szabványos
bemenetről veszi; ha argumentumot adsz meg neki, azt fájlnévként
értelmezi és azon fájlok tartalmát veszi és hajtja végre, majd ezután
olvas a szabványos bemenetről. A kimenet a szabványos kimenet, a hibák
a szabványos hibakimenetre íródnak.
A fordított-lengyel számológép a számokat egy veremben tárolja. Új szám
bevitele esetén a szám a verem tetejére kerül. A műveletek az
argumentumukat a verem tetejéről veszik, majd az eredményt visszateszik
a verembe.
A bevitelhez a számot egyszerűen beírod, követheti opcionálisan
tizedespont. A hatványalak használata nem támogatott. Negatív számok
beviteléhez a számot ``_'' karakterrel kezdd. Az előjel nem lehet
``-'', mivel ez a kivonás műveleti operátora. Több számot egymástól
szóközzel vagy új sorral elválasztva lehet bevinni, ezen karakterek nem
parancsok.
KIÍRÓ PARANCSOK
p Kiírja a verem tetején levő számot a verem megváltoztatása
nélkül. A szám után egy újsor karakter is kiíródik.
P Kiveszi a verem tetejéről a számot, kiírja, és nem ír utána
újsor karaktert.
f Kiírja a verem teljes tartalmát anélkül, hogy bármit
változtatna. Akkor jó, ha teljesen eltévedtél, vagy ki akarod
találni, hogy egy parancs vajon mit csinált.
SZÁMÍTÁSOK
+ Leveszi a verem két felső elemét, összeadja őket, és az
eredményt a verembe helyezi. A pontosságot kizárólag az
argumentumok értéke határozza meg.
- Leveszi a verem két felső elemét, az elsőt (ami eredetileg felül
volt) kivonja a másodikból, majd az eredményt a verembe helyezi.
* Leveszi a verem két felső elemét, összeszorozza őket, majd az
eredményt a verembe helyezi. A tizedesjegyek számát az aktuális
pontosságérték (l. lentebb) határozza meg, és nem függ a
szorzandóktól.
/ Leveszi a verem két felső elemét, az elsőt elosztja a
másodikkal, majd az eredményt a verembe helyezi. A tizedesjegyek
számát a pontosságérték határozza meg.
% Leveszi a verem két felső elemét, a / által végzett osztás
maradékát a verembe helyezi. Az osztás a pontosságérték által
meghatározott pontossággal végződik el, és a maradék is ennek
megfelelő számú jegyre számolódik ki.
~ Leveszi a verem két felső elemét, az elsőt elosztja a
másodikkal. Először a hányadost, aztán a maradékot helyezi a
verembe. Az osztásban használt tizedesjegyek értéke a
pontosságértéktől függ. (A SdSn lnld/ LnLd% hatása hasonló, a
hibakezelése más egy kicsit.)
^ Leveszi a verem két felső elemét, az elsőt (ami eredetilg felül
volt) kitevőként, a másodikat alapként használva elvégzi a
hatványozást. Ha a kitevőnek van törtrésze, azt figyelmen kívül
hagyja. A pontosságérték határozza meg, hogy az eredmény hány
tizedesjegyre számítódik ki.
| Törtkitevős hatványozást végez. Leveszi a verem felső három
elemét. Az első (ami eredetileg felül volt) lesz a kitevő
nevezője, ez nem lehet nulla, és egésznek kell lennie. A második
a kitevő számlálója, ez nem lehet negatív. Ha van tizedesjegye,
azt figyelmen kívül hagyja. A harmadik szám lesz a hatványozás
alapja. A pontosságérték határozza meg, hogy az eredmény hány
tizedesjegyre számítódik ki. Kis számok esetén hasonlít hozzá a
Sm lble^ Lm% szekvencia, de a ^-tól eltérően ez a parancs nem
alkalmazható tetszőlegesen nagy kitevőkre.
v Levesz egy elemet a veremről, kiszámítja a négyzetgyökét, majd
az eredményt a verembe helyezi. A pontosságérték határozza meg,
hogy hány tizedesjegyre végződik el a számítás.
A legtöbb számítás eredményét befolyásolja a k paranccsal beállítható
pontosságérték. Ez alapértelmezésben nulla, ami azt jelenti, hogy az
összeadás és a kivonás kivételével minden művelet erdménye egész lesz.
A % maradék-művelet kis magyarázatra szorul. Ha az argumentumai ``a''
és ``b'', akkor a művelet eredménye ``a - (b * (a / b))'', ahol ``a /
b'' az aktuális pontosságérték szerint számítódik.
VEREMKARBANTARTÁS
c Kitörli a verem minden elemét, a verem üres lesz.
d A verem tetején levő elemet megduplázza és a verem tetejére
helyezi, így a ``4d*p'' eredménye 16.
r Megfordítja (kicseréli) a verem két felső elemét.
REGISZTEREK
A dc 256 memóriaregisztert képes kezelni, mindegyikük neve egyetlen
karakter. A regiszterben tárolható és később újrafelhasználható egy
szám vagy egy karakterlánc.
sr A verem tetején levő értéket leveszi és az r regiszterben
eltárolja.
lr Az r regiszter tartalmát a verembe helyezi. Ez a művelet nem
változtatja meg az r regiszter tartalmát.
Minden regiszternek megvan a saját verme, az aktuális regiszterérték
van a verem tetején.
Sr A (fő) verem tetején levő értéket leveszi és az r regiszter
vermébe helyezi. A regiszter előző értéke így elérhetetlen.
Lr Az r regiszter verméből leveszi az elemet és a fő verembe
helyezi. Ha az r regiszter vermében volt régebben valami érték,
akkor az most a lr paranccsal elérhetővé válik.
PARAMÉTEREK
A dc működését három paraméter befolyásolja: a pontosság, a beviteli
alap és a kimeneti alap. A pontosság határozza meg, hogy a műveletek
eredményéből hány tizedesjegy maradjon meg. A beviteli alap mutatja
meg, hogy a begépelt számok hányas számrendszerben vannak; minden
begépelt szám ebben a számrendszerben értelmeződik. Számok kiírásakor a
számok a kimeneti alap szerinti számrendszerben íródnak ki.
A beviteli és a kimeneti alapok különböző paraméterek, nem kell
feltétlenül egyenlőnek lenniük; ez lehet hasznos és zavaró is. A
bemeneti alap legalább 2, legfeljebb 36 lehet. A kimeneti alapnak
legalább 2-nek kell lennie. A pontosságnak nullának vagy nagyobbnak
kell lennie. A pontosság a beviteli és kimeneti alaptól függetlenül
mindig tizedesjegyeket jelent.
i Leveszi a verem tetején levő számot és erre állítja a beviteli
alapot.
o Leveszi a verem tetején levő számot és erre állítja a kimeneti
alapot.
k Leveszi a verem tetején levő számot és erre állítja a
pontosságot.
I Az aktuális beviteli alapot a verem tetejére helyezi.
O Az aktuális kimeneti alapot a verem tetejére helyezi.
K A pontosság aktuális értékét a verem tetejére helyezi.
KARAKTERLÁNCOK
A dc képes karakterláncokat is kezelni. A karakterláncokat csak tárolni
vagy makróként végrehajtani (azaz a tartalmuk dc parancsként
értelmeződik) lehet. Karakterláncok tárolására minden regiszter és a
verem is képes. Néhány parancs, mint például az aritmetikai műveletek
számokat várnak argumentumként, és hibát jeleznek, ha karakterláncot
találnak helyette. Más parancsok számot és karakterláncot is
elfogadnak; ilyen például a p parancs, ami mindegyiket elfogadja és a
típusának megfelelő módon írja ki.
[karakterek]
A karakterek -et tartalmazó karakterláncot (azokat a
karaktereket, amik [ és ] karakterek között vannak) tartalmazó
karakterláncot képez és a veremre helyezi. Például a [foo]P
kiírja a foo szöveget és nem ír utána újsor karaktert.
a Leveszi a verem legfelső elemét. Ha ez szám, akkor az alacsony
helyiértékű bájtját karakterré konvertálja és a verembe helyezi.
Ha ez karakterlánc, akkor ennek első karakterét helyezi vissza a
verembe.
x Leveszi a verem legfelső elemét és makróként végrehajtja.
Normális esetben ez az elem egy karakterlánc; ha szám, akkor
visszahelyezi a verembe. Például a [1p]x végrhajtja a 1p makrót,
ami egy 1 -est tesz a verembe és új sorban kiírja az 1 -et.
A makrókat leggyakrabban regiszterekben tároljuk; a [1p]sa az a
regiszterbe tesz egy olyan makrót, ami egy 1 -est ír ki. A lax parancs
hajtja végre ezt a makrót.
>r Leveszi a verem két felső elemét, feltételezi, hogy ezek számok,
összehasonlítja őket, és végrehajtja az r regiszterben lévő
makrót, ha az eredetileg a verem tetején levő szám nagyobb. Az 1
2>a parancs végrehajtja az a regiszterben tárolt makrót, míg a 2
1>a parancs nem.
<r Hasonló, de akkor hajtja végre a makrót, ha az eredetileg a
verem tetején levő szám kisebb.
=r Hasonló, de akkor hajtja végre a makrót, ha a két levett elem
egyenlő.
? Beolvas egy sort a terminálról és végrehajtja. Ezzel a
paranccsal lehet felhasználói bevitelt kérni.
q Kilép a makróból és az azt hívó makróból is. Ha a legfelső
szinten hajtod végre, a q parancs kilép a dc -ből.
Q Leveszi a verem legfelső elemét és ennyi szintet lép ki a
makrókból. A Q parancs soha nem lép ki a dc -ből.
ÁLLAPOTLEKÉRDEZÉS
Z Leveszi a verem tetején levő elemet, megszámolja hány jegyű (ha
szám) vagy hány karakterből áll (ha karakterlánc), és ezt a
számot teszi a verembe.
X Leveszi a verem tetején levő elemet, megszámolja, hány
tizedesjegye van, majd ezt a számot teszi a verembe. Ha a levett
elem karakterlánc, akkor 0 -t tesz a verembe.
z A verembe teszi a verem aktuális mélységét; azt, hogy a z
parancs végrehajtása előtt hány elem volt a veremben.
EGYÉB
! A sor többi részét mint rendszerparancsot futtatja.
# A sor többi részét megjegyzésként kezeli.
:r A verem két felső elemét leveszi. A második elemet az r tömbbe
helyezi, amit az első elemmel indexel.
;r Leveszi a verem felső elemét és az r tömb indexeként használja.
A kiválasztott elem a verembe kerül.
MEGJEGYZÉSEK
A : és a ; tömbműveteket általában csak a bc hagyományos implementációi
használják. (A GNU bc ezt tartalmazza, nem szükséges a futásához a dc.
)
HIBÁK
A hibákat e-mail-ben jelentsd a bug-gnu-utils@prep.ai.mit.edu címen. A
levél tárgyában valahol legyen benne a ``dc'' szó.
MAGYAR FORDÍTÁS
Tevesz Tamás <ice@rulez.org>