Provided by: manpages-hu_20010119-5_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>