Provided by: manpages-pl_0.5-1_all 

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)