Provided by: manpages-hu_20010119-6_all bug

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>

GNU Project                                        1997-03-25                                              DC(1)