Provided by: manpages-pl_0.6-2_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/.