Provided by: manpages-pl_0.5-1_all bug

NAZWA

       dc - kalkulator dowolnej precyzji

SKŁADNIA

       dc  [-V] [--version] [-h] [--help] [-e wyraż-skryptowe] [--expression= wyraż-skryptowe] [-f plik-skryptu]
       [--file= plik-skryptu] [plik...]

OPIS

        Uwaga! To tłumaczenie może być nieaktualne!

       Dokument ten opisuje dc w wersji 1.06, z listopada 2000.

       dc jest kalkulatorem pracującym w odwrotnej notacji  polskiej,  obsługującym  arytmetykę  nieograniczonej
       precyzji.  Pozwala również na definiowanie i wywoływanie makr.  Zwykle dc czyta ze standardowego wejścia.
       Jeśli  użyto  argumentów  polecenia dc, to są one traktowane jak nazwy plików. Zawartość tych plików jest
       odczytywana i wykonywana  przez  dc  przed  odczytem  standardowego  wejścia.   Wszystkie  zwykłe  wyniki
       kierowane  są  na standardowe wyjście; wszystkie komunikaty o błędach kierowane są na standardowe wyjście
       błędów.

       Kalkulator odwrotnej notacji polskiej przechowuje liczby na stosie.  Wprowadzenie liczby  odkłada  ją  na
       stos.  Operacje arytmetyczne pobierają argumenty ze stosu i odkładają na nim wyniki.

       W  celu  wprowadzenia  liczby do dc wpisujemy cyfry z opcjonalną kropką dziesiętną. Nie jest rozpoznawana
       notacja wykładnicza.  Liczbę ujemną poprzedzamy znakiem podkreślenia ``_''. Nie można posłużyć się w  tym
       celu  znakiem  ``-''  (minus),  gdyż  jest  to  dwuargumentowy operator odejmowania.  Dwie kolejne liczby
       wprowadzamy oddzielając je spacjami lub znakami nowej linii.  Nie mają one znaczenia jako polecenia.

OPCJE

       Dc można wywoływać z następującymi opcjami wiersza poleceń:

       -V

       --version
              Wypisuje numer wersji uruchomionego dc i informację  o  prawach  autorskich,  a  następnie  kończy
              działanie.

       -h

       --help Wypisuje komunikat o sposobie wywołania, podając w skrócie opcje wiersza poleceń i adres, na który
              należy zgłaszać błędy, a następnie kończy działanie.

       -e skrypt

       --expression=skrypt
              Dodaje  polecenia  ze  skryptu  do  zestawu poleceń, jakie mają być wykonane podczas przetwarzania
              wejścia.

       -f plik-skryptu

       --file=plik-skryptu
              Dodaje polecenia zawarte w pliku-skryptu do zestawu  poleceń,  jakie  mają  być  wykonane  podczas
              przetwarzania wejścia.

       Jeżeli  po  przetworzeniu  powyższych opcji pozostaną jeszcze jakieś parametry wiersza poleceń, to są one
       interpretowane jako nazwy plików wejściowych, które należy wykonać.  Nazwa - odnosi się do  standardowego
       strumienia wejściowego.  Jeśli nie podano ani opcji -e ani żadnych plików, to polecenia do wykonania będą
       czytane ze standardowego wejścia.

Polecenia wypisywania

       p      Wypisuje  wartość  z  wierzchołka  stosu,  bez jego zmiany. Po wartości wypisywany jest znak nowej
              linii.

       n      Wypisuje wartość z wierzchołka stosu, zdejmując ją równocześnie ze stosu.  Nie  wypisuje  po  niej
              znaku  nowej linii.  P Zdejmuje wartość z wierzchołka stosu.  Jeśli jest to łańcuch, to jest on po
              prostu wypisywany bez końcowego znaku nowej linii. W przeciwnym razie  jest  to  liczba,  a  część
              całkowita   jej   wartości   bezwzględnej  wypisywana  jest  jako  strumień  bajtów  "o  podstawie
              (UCHAR_MAX+1)". Zakładając, że (UCHAR_MAX+1) wynosi  256  (jak  to  jest  w  większości  maszyn  o
              8-bitowych  bajtach),  funkcję tę realizuje także sekwencja KSK 0k1/ [_1*]sx d0>x [256~aPd0<x]dsxx
              sxLKk, z wyjątkiem skutku ubocznego, jakim jest nadpisanie wartości z rejestru x.

       f      Wypisuje całą zawartość stosu nie zmieniając niczego.  Jest polecenie przydatne  w  sytuacji,  gdy
              się pogubiliśmy lub chcemy się zorientować, jaki był efekt pewnych poleceń.

Arytmetyka

       +      Zdejmuje  ze  stosu  dwie  wartości,  dodaje je i odkłada wynik na stos.  Dokładność wyniku zależy
              wyłącznie od wartości argumentów i jest wystarczająco ścisła.

       -      Zdejmuje ze stosu dwie wartości, odejmuje pierwszą zdjętą od drugiej i składa  wynik  ponownie  na
              stos.

       *      Zdejmuje  ze stosu dwie wartości, mnoży je i odkłada wynik na stos.  Liczba cyfr ułamkowych wyniku
              jest kontrolowana przez aktualną wartość  dokładności  (patrz  niżej)  i  liczby  cyfr  ułamkowych
              mnożonych wartości.

       /      Zdejmuje  ze  stosu  dwie wartości, dzieli drugą zdjętą przez pierwszą i odkłada wynik ponownie na
              stos.  Liczba cyfr ułamkowych wyniku określana jest przez wartość dokładności.

       %      Zdejmuje ze stosu dwie wartości, oblicza resztę z dzielenia,  jakie  byłoby  wykonane  przez  /  i
              odkłada wynik na stos.  Obliczona wartość jest tą samą, co otrzymana z sekwencji Sd dld/ Ld*-.

       ~      Zdejmuje  ze  stosu  dwie wartości, dzieli drugą zdjętą przez pierwszą.  Odkłada na stos iloraz, a
              następnie resztę z dzielenia.  Dzielenie  wykonywane  jest  z  liczbą  cyfr  ułamkowych  określoną
              wartością  dokładności.   (Funkcję  tę  może  też  spełniać  sekwencja  SdSn  lnld/ LnLd%, z nieco
              odmiennym sprawdzaniem błędów.)

       ^      Zdejmuje ze stosu dwie wartości i  wykonuje  potęgowanie,  posługując  się  pierwszą  zdjętą  jako
              wykładnikiem,  zaś  drugą  jako  podstawą potęgowania.  Ułamkowa część wykładnika jest ignorowana.
              Wartość dokładności określa liczbę cyfr ułamkowych wyniku.

       |      Zdejmuje ze stosu trzy wartości i oblicza potęgowanie modulo [od tłum: modular  exponentiation  ==
              (a^b) mod c].
              Pierwsza ze zdjętych wartości używana jest jako dzielnik operacji (reduction modulus).  Wartość ta
              musi  być  niezerowa i powinna być liczbą całkowitą.  Druga używana jest jako wykładnik i musi być
              liczbą nieujemną, a jej część  ułamkowa  zostanie  zignorowana.   Trzecia  z  pobranych  ze  stosu
              wartości  określa  podstawę  potęgowania,  powinna  ona  być  całkowita.  Dla małych liczb jest to
              zbliżone do sekwencji Sm^Lm%, ale, w odróżnieniu od ^,  polecenie  to  działa  z  dowolnie  dużymi
              wykładnikami.

       v      Zdejmuje  ze  stosu  pojedynczą  wartość, oblicza jej pierwiastek kwadratowy i odkłada go na stos.
              Wartość dokładności określa liczbę cyfr ułamkowych wyniku.

       Na większość operacji arytmetycznych wpływa ``wartość dokładności'', którą ustala się za pomocą polecenia
       k.  Domyślną wartością dokładności jest zero, co oznacza, że wszystkie działania arytmetyczne z wyjątkiem
       dodawania i odejmowania dają wyniki całkowite.

       Operacja reszty % wymaga pewnego wyjaśnienia: zastosowana do argumentów  ``a'' i ``b'' daje w wyniku  ``a
       - (b * (a / b))'', gdzie ``a/b'' obliczane jest z bieżącą dokładnością.

Kontrola stosu

       c      Czyści stos, powoduje, że będzie on pusty.

       d      Powiela  wartość  na  wierzchołku  stosu,  odkładając na stos jej kopię.  Zatem ``4d*p'' oblicza 4
              podniesione do kwadratu i wypisuje wynik.

       r      Zamienia miejscami dwie górne wartości na stosie.

Rejestry

       dc udostępnia 256 rejestrów pamięciowych, każdy nazwany pojedynczym znakiem. W rejestrze można przechować
       liczbę lub łańcuch znakowy i później je odtworzyć.

       sr     Zdejmuje wartość z wierzchołka stosu i zapisuje w rejestrze r.

       lr     Kopiuje wartość zawartą w rejestrze r i odkłada ją na stos.  Nie zmienia to zawartości r.

       Każdy z rejestrów posiada również swój własny stos. Bieżącą wartością  rejestru  jest  wierzchołek  stosu
       rejestru.

       Sr     Zdejmuje  wartość  z  wierzchołka  stosu  (głównego) i odkłada ją na stosie rejestru r. Poprzednia
              wartość rejestru staje się niedostępna.

       Lr     Zdejmuje wartość z wierzchołka stosu rejestru r i odkłada ją na głównym stosie. Poprzednia wartość
              stosu rejestru r, jeśli była takowa, jest teraz dostępna poprzez polecenie lr.

Parametry

       dc posiada trzy parametry kontrolujące jego pracę: dokładność, podstawę  systemu  pozycyjnego  wejścia  i
       podstawę wyjścia.  Dokładność określa liczbę cyfr dziesiętnych, jaka będzie zachowana w wyniku większości
       operacji  arytmetycznych.   Podstawa  wejścia  odpowiada  za interpretację wprowadzanych liczb; wszystkie
       wprowadzane liczby używają tej podstawy.  Podstawa wyjścia używana jest do wypisywania liczb.

       Podstawa wejścia i wyjścia są odrębnymi parametrami;  można  spowodować,  że  będą  różne,  co  może  być
       użyteczne  lub  mylące.   Podstawa  wejścia  musi być liczbą z zakresu od 2 do 16.  Podstawa wyjścia musi
       wynosić co najmniej 2.  Dokładność musi być równa zeru lub większa. Dokładność zawsze określana jest jako
       liczba cyfr dziesiętnych, niezależnie od bieżącej podstawy wejścia czy wyjścia.

       i      Zdejmuje wartość z wierzchołka stosu i posługuje się nią do ustawienia podstawy wejścia.

       o      Zdejmuje wartość z wierzchołka stosu i posługuje się nią do ustawienia podstawy wyjścia.

       k      Zdejmuje wartość z wierzchołka stosu i posługuje się nią do ustawienia dokładności.

       I      Odkłada bieżącą wartość podstawy wejścia na stosie.

       O      Odkłada bieżącą wartość podstawy wyjścia na stosie.

       K      Odkłada bieżącą dokładność na stosie.

Łańcuchy znakowe

       dc oprócz pracy z liczbami może też działać na łańcuchach znakowych.  Łańcuchy można jedynie wypisywać  i
       wykonywać  jako  makra  (co  oznacza, że zawartość łańcucha przetwarzana jest jako polecenia dc).  Stos i
       wszystkie rejestry mogą przechowywać łańcuchy, a dc zawsze  wie,  czy  dany  obiekt  jest  łańcuchem  czy
       liczbą.   Niektóre  z  poleceń,  jak  np.  operacje  arytmetyczne, wymagają liczb jako swych argumentów i
       wyświetlają błędy, jeśli dostarczono im łańcuch.  Inne akceptują zarówno liczby, jak i łańcuchy  znakowe.
       Na przykład, polecenie p akceptuje oba rodzaje argumentów i wypisuje obiekt stosownie do jego typu.

       [znaki]
              Tworzy  łańcuch  zawierający znaki (zawarte pomiędzy nawiasami kwadratowymi [ i ]) i odkłada go na
              stos.  Na przykład, [foo]P wypisuje znaki foo (bez zakończenia znakiem nowej linii).

       a      Zdejmowany jest wierzchołek stosu.  Jeżeli jest to liczba, to młodszy bajt  (low-order  byte)  tej
              liczby  zamieniany  jest na łańcuch i odkładany na stos. W przeciwnym przypadku, wierzchołek stosu
              był łańcuchem, a z powrotem na stos odkładany jest pierwszy znak tego łańcucha.

       x      Zdejmuje wartość ze stosu i wykonuje ją jako makro. Zwykle powinien to być łańcuch znakowy. Jeżeli
              jest to liczba, to zostanie po prostu zwrócona na stos.  Na przykład,  [1p]x  wykonuje  makro  1p,
              które odkłada 1 na stosie i wypisuje 1 w osobnym wierszu.

       Makra  są najczęściej przechowywane w rejestrach: [1p]sa składuje makro do wypisania 1 w rejestrze a, zaś
       lax wywołuje to makro.

       >r     Zdejmuje dwie wartości ze stosu  i  porównuje  je,  zakładając,  że  są  one  liczbami,  wykonując
              zawartość  rejestru r jako makro, jeśli pierwotny wierzchołek stosu jest większy.  Tak więc, 1 2>a
              wywoła zawartość rejestru a zaś 2 1>a nie wywoła.

       !>r    Podobnie, ale wywołuje makro jeśli pierwotny wierzchołek stosu nie  jest  większy  (jest  mniejszy
              bądź równy) od liczby występującej pod nim.

       <r     Podobnie,   ale  wywołuje  makro  jeśli  pierwotny  wierzchołek  stosu  jest  mniejszy  od  liczby
              występującej pod nim.  !<r Podobnie, ale wywołuje makro jeśli pierwotny wierzchołek stosu nie jest
              mniejszy (jest większy bądź równy) od liczby występującej pod nim.

       =r     Podobnie, ale wywołuje makro, gdy obie zdjęte ze stosu liczby są równe.

       !=r    Podobnie, ale wywołuje makro, gdy obie zdjęte ze stosu liczby nie są równe.

       ?      Czyta wiersz z terminala i  wykonuje  go.  Polecenie  to  umożliwia  makru  pobieranie  danych  od
              użytkownika.

       q      powoduje  zakończenie  pracy makra i makra, z którego było ono wywołane.  Polecenie to wywołane na
              najwyższym  poziomie  lub  z  makra  wywołanego  bezpośrednio  z  najwyższego  poziomu   spowoduje
              zakończenie pracy dc.

       Q      Zdejmuje  ze  stosu  wartość  i  używa  jej jako liczby poziomów wykonania makr, jakie mają zostać
              zakończone.  Tak więc, 3Q kończy pracę trzech poziomów  makr.   Polecenie  Q  nigdy  nie  powoduje
              zakończenia pracy dc.

Informacja o stanie

       Z      Zdejmuje  wartość  ze  stosu, oblicza liczbę jej cyfr (lub liczbę znaków, jeśli jest to łańcuch) i
              odkłada tę liczbę na stos.

       X      Zdejmuje wartość ze stosu, oblicza liczbę jej cyfr ułamkowych i odkłada tę  liczbę  na  stos.  Dla
              łańcuchów wartością odkładaną na stos jest 0.

       z      Odkłada na stos bieżącą wysokość stosu: liczbę obiektów na stosie przed wykonaniem polecenia z.

Różne

       !      Uruchamia resztę wiersza jako polecenie systemu.  Zauważ, że pierwszeństwo w analizie składni mają
              polecenia  !<,  != i !>, więc jeśli chcemy uruchomić polecenie systemu zaczynające się od <, > lub
              =, to po ! musimy dodać odstęp.

       #      Interpretuje resztę wiersza jako komentarz.

       :r     Zdejmuje ze stosu dwie górne wartości. Wartość, która była drugą od góry stosu zostanie  zachowana
              w tablicy r, indeksowanej wartością byłego wierzchołka stosu.

       ;r     Zdejmuje  wierzchołek  stosu  i  posługuje  się nim jako indeksem tablicy r.  Wybrana w ten sposób
              wartość jest następnie odkładana na stos.  Zauważ, że każda ze składowanych  na  stosie  instancji
              rejestru  ma  swoją  własną,  skojarzoną z nią tablicę.  Zatem, 1 0:a 0Sa 2 0:a La 0;ap wypisze 1,
              gdyż 2 zostało zapamiętane w instancji 0:a, która została później odłożona na stos.

UWAGI

       Operacje tablicowe : oraz ; są zwykle używane wyłącznie przez tradycyjne implementacje bc.  (Program bc w
       wersji GNU jest samowystarczalny i nie potrzebuje dc by działać.)

BŁĘDY

       Błędy proszę zgłaszać (w jęz.angielskim) na adres bug-dc@gnu.org.

INFORMACJE O TŁUMACZENIU

       Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne.
       W razie zauważenia różnic między powyższym opisem a rzeczywistym  zachowaniem  opisywanego  programu  lub
       funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:

              man --locale=C 1 dc

       Prosimy   o   pomoc   w   aktualizacji   stron   man  -  więcej  informacji  można  znaleźć  pod  adresem
       http://sourceforge.net/projects/manpages-pl/.

Projekt GNU                                        1997-03-25                                              DC(1)