Provided by: manpages-pl_4.27.0-1_all bug

NAZWA

       dc - kalkulator dowolnej precyzji

SKŁADNIA

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

OPIS

       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 (wielkie litery od A do F są  „cyframi”,  przy  pracy  z
       systemami  liczbowymi  o  podstawie  większej  niż  dziesięć)  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łać 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 plików skryptów ani żadnych wyrażeń, 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   KSK0k1/_1Ss   [ls*]Sxd0>x   [256~Ssd0<x]dsxxsx[q]Sq[Lsd0>qaPlxx]
              dsxxsx0sqLqsxLxLK+k (większość stopnia skomplikowania  tego  kodu,  natywnego  dla  dc,  wynika  z
              odwrotnego  obliczania  znaków przez ~ oraz chęci upewnienia się, że wszystkie rejestry znajdą się
              na koniec z powrotem w swoich pierwotnych stanach).

       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 zależy
              od aktualnej wartość dokładności i liczby cyfr ułamkowych w obu argumentach.

       /      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.
              Maksymalna wartość dokładności i dokładności argumentu służy do określenia liczby 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.

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 (można to uczynić również sekwencją SaSbLaLb).

       R      Zdejmuje  z  wierzchołka  stosu  liczbę  n.  Cyklicznie  rotuje n elementów z wierzchołka stosu na
              zaktualizowany stos. Jeśli n jest dodatnie, kierunek rotacji spowoduje, że najwyższy element stosu
              stanie się drugim elementem, jeśli n jest ujemne, to kierunek  rotacji  spowoduje,  że  najwyższym
              elementem stosu stanie się n-ty element licząc od góry stosu. Jeśli stos ma głębokość mniejszą niż
              n, to cały stos jest rotowany (w odpowiednim kierunku) bez zgłaszania błędu.

Rejestry

       dc  udostępnia  co  najmniej  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. Jeśli  rejestr  jest  niezainicjowany,
              pobierana jest wartość 0. 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ć, w ograniczonym zakresie, 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  mniejszy  (jest  większy
              bądź równy) 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 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 dziesiętnych (lub liczbę znaków, jeśli jest  to
              łańcuch)  i  odkłada  tę  liczbę  na stos. Liczba cyfr liczby nie obejmuje początkowych zer, w tym
              jedynego zera przed kropką oddzielającą część całkowitą od ułamkowej.

       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

       !      Wykona resztę wiersza jako polecenie systemowe. Proszę zauważyć, że przetwarzanie poleceń !<, != i
              !>  ma  pierwszeństwo,  dlatego  jeśli  chce  się wykonać polecenie zaczynające się od <, = lub >,
              konieczne jest dodanie spacji po znaku !.

       #      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.

       Proszę zauważyć, że każdy rejestr ze stosu ma swoją własną, powiązaną z nim, tablicę. Zatem 1 0:a  0Sa  2
       0:a La 0;ap wypisze 1, ponieważ 2 było zachowane w rejestrze 0:a, który został następnie zdjęty.

PLIKI

       ~/.dcrc        Polecenia z tego pliku zostaną wykonane przy uruchomieniu dc.

USTERKI

       Raporty o błędach można wysyłać do bug-dc@gnu.org

TŁUMACZENIE

       Tłumaczenie   niniejszej   strony   podręcznika:   Wojtek  Kotwica  <wkotwica@post.pl>  i  Michał  Kułach
       <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje  o  warunkach  licencji  można  uzyskać
       zapoznając   się   z   GNU General Public License w wersji 3   lub  nowszej.  Nie  przyjmuje  się  ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej  manpages-pl-
       list@lists.sourceforge.net.

Projekt GNU                                      22 maja 2008 r.                                           dc(1)