.\" -*- coding: UTF-8 -*-
.\"
.\" dc.1 - the *roff document processor source for the dc manual
.\"
.\" This file is part of GNU dc.
.\" Copyright (C) 1994, 1997, 1998, 2000, 2001, 2005, 2006, 2008, 2013, 2016, 2022, 2024, 2025
.\" Free Software Foundation, Inc.
.\"
.\" This program is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License
.\" along with this program; see the file COPYING. If not, see
.\" .
.\"
.\" Permission is granted to copy, distribute and/or modify this document
.\" under the terms of the GNU Free Documentation License, Version 1.2 or
.\" any later version published by the Free Software Foundation; with no
.\" Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
.\" Texts.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH dc 1 "5 stycznia 2025 r." "Projekt GNU"
.ds dc \fIdc\fP
.ds Dc \fIdc\fP
.SH NAZWA
dc \- kalkulator dowolnej precyzji
.SH SKŁADNIA
\fBdc\fP [\fB\-V\fP] [\fB\-\-version\fP] [\fB\-h\fP] [\fB\-\-help\fP]
[\fB\-e\fP \fIwyrażenie\-skryptu\fP] [\fB\-\-expression=\fP\fIwyrażenie\-skryptu\fP]
[\fB\-f\fP \fIwyrażenie\-pliku\fP] [\fB\-\-file=\fP\fIwyrażenie\-pliku\fP]
[\fIplik\fP ...]
.SH OPIS
.PP
\fBdc\fP jest kalkulatorem pracującym w odwrotnej notacji polskiej,
obsługującym arytmetykę nieograniczonej precyzji. Pozwala również na
definiowanie i wywoływanie makr. Zwykle \fBdc\fP czyta ze standardowego
wejścia. Jeśli użyto argumentów polecenia \fBdc\fP, to są one traktowane jak
nazwy plików. Zawartość tych plików jest odczytywana i wykonywana przez
\fBdc\fP 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.
.PP
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.
.PP
To enter a number in \fIdc\fP, type the digits \fI0\fP to \fI9\fP and \fIA\fP through
\fIF\fP to represent the values zero through fifteen, (regardless of the
current input radix), and optionally including a single radix point.
Exponential notation is not supported. To enter a negative number, begin
the number with \*(lq_\*(rq. \*(lq\-\*(rq cannot be used for this, as it is a binary
operator for subtraction instead. To enter two numbers in succession,
separate them with spaces or newlines. These have no meaning as commands.
.SH OPCJE
\fBdc\fP można wywołać z następującymi opcjami wiersza poleceń:
.TP
\fB\-V\fP
.TP
\fB\-\-version\fP
Wypisuje numer wersji uruchomionego \fBdc\fP i informację o prawach autorskich,
a następnie kończy działanie.
.TP
\fB\-h\fP
.TP
\fB\-\-help\fP
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.
.TP
\fB\-e \fP\fIskrypt\fP
.TP
\fB\-\-expression=\fP\fIskrypt\fP
Dodaje polecenia ze \fIskryptu\fP do zestawu poleceń, jakie mają być wykonane
podczas przetwarzania wejścia.
.TP
\fB\-f \fP\fIplik\-skryptu\fP
.TP
\fB\-\-file=\fP\fIplik\-skryptu\fP
Dodaje polecenia zawarte w \fIpliku\-skryptu\fP do zestawu poleceń, jakie mają
być wykonane podczas przetwarzania wejścia.
.TP
\fB\-\-max\-recursion=\fP\fIdepth\fP
Limit recursion to a depth of at most \fIdepth\fP. (Mainly useful for
debugging.)
.PP
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 \fB\-\fP 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.
.SH "Polecenia wypisywania"
.TP
\fBp\fP
Wypisuje wartość z wierzchołka stosu, bez jego zmiany. Po wartości
wypisywany jest znak nowej linii.
.TP
\fBn\fP
Wypisuje wartość z wierzchołka stosu, zdejmując ją równocześnie ze stosu.
Nie wypisuje po niej znaku nowej linii.
.TP
\fBP\fP
Pops off the value on top of the stack. If it is a string, it is simply
printed without a trailing newline. Otherwise it is a number, and the
integer portion of its absolute value is printed out as a "base
(UCHAR_MAX+1)" byte stream. Assuming that (UCHAR_MAX+1) is 256 (as it is on
most machines with 8\-bit bytes), the sequence \fBKSK0k1/_1Ss [ls*]Sxd0>x [256~Ssd0qaPlxx] dsxxsx0sqLqsxLxLK+k\fP could also
accomplish this function. (Much of the complexity of the above native\-dc
code is due to the ~ computing the characters backwards, and the desire to
ensure that all registers wind up back in their original states.)
.TP
\fBf\fP
Wypisuje całą zawartość stosu
.ig
and the contents of all of the registers,
..
nie zmieniając niczego. Jest polecenie przydatne w sytuacji, gdy się
pogubiliśmy lub chcemy się zorientować, jaki był efekt pewnych poleceń.
.SH Arytmetyka
.TP
\fB+\fP
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.
.TP
\fB\-\fP
Zdejmuje ze stosu dwie wartości, odejmuje pierwszą zdjętą od drugiej i
składa wynik ponownie na stos.
.TP
\fB*\fP
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.
.TP
\fB/\fP
Pops two values, divides the second one popped by the first one popped, and
pushes the result. The number of fraction digits is specified by the
precision value.
.TP
\fB%\fP
Zdejmuje ze stosu dwie wartości, oblicza resztę z dzielenia, jakie byłoby
wykonane przez \fB/\fP i odkłada wynik na stos. Obliczona wartość jest tą
samą, co otrzymana z sekwencji \fBSd dld/ Ld*\-\fP.
.TP
\fB~\fP
Pops two values, divides the second one popped by the first one popped. The
quotient is pushed first, and the remainder is pushed next. The number of
fraction digits used in the division is specified by the precision value.
(The sequence \fBSdSn lnld/ LnLd%\fP could also accomplish this function, with
slightly different error checking.)
.TP
\fB^\fP
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.
.TP
\fB|\fP
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 \fBSm^Lm%\fP, ale, w odróżnieniu od \fB^\fP, polecenie to działa z
dowolnie dużymi wykładnikami.
.TP
\fBv\fP
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.
.PP
Na większość operacji arytmetycznych wpływa \[Bq]wartość dokładności\[rq],
którą ustala się za pomocą polecenia \fBk\fP. 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.
.SH "Kontrola stosu"
.TP
\fBc\fP
Czyści stos, powoduje, że będzie on pusty.
.TP
\fBd\fP
Powiela wartość na wierzchołku stosu, odkładając na stos jej kopię. Zatem
\[Bq]4d*p\[rq] oblicza 4 podniesione do kwadratu i wypisuje wynik.
.TP
\fBr\fP
Zamienia miejscami dwie górne wartości na stosie (można to uczynić również
sekwencją \fBSaSbLaLb\fP).
.TP
\fBR\fP
Zdejmuje z wierzchołka stosu liczbę \fIn\fP. Cyklicznie rotuje \fIn\fP elementów z
wierzchołka stosu na zaktualizowany stos. Jeśli \fIn\fP jest dodatnie, kierunek
rotacji spowoduje, że najwyższy element stosu stanie się drugim elementem,
jeśli \fIn\fP jest ujemne, to kierunek rotacji spowoduje, że najwyższym
elementem stosu stanie się \fIn\fP\-ty element licząc od góry stosu. Jeśli stos
ma głębokość mniejszą niż \fIn\fP, to cały stos jest rotowany (w odpowiednim
kierunku) bez zgłaszania błędu.
.SH Rejestry
.PP
\fBdc\fP 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ć.
.TP
\fBs\fP\fIr\fP
Zdejmuje wartość z wierzchołka stosu i zapisuje w rejestrze \fIr\fP.
.TP
\fBl\fP\fIr\fP
Kopiuje wartość zawartą w rejestrze \fIr\fP i odkłada ją na stos. Jeśli rejestr
jest niezainicjowany, pobierana jest wartość 0. Nie zmienia to zawartości
\fIr\fP.
.PP
Każdy z rejestrów posiada również swój własny stos. Bieżącą wartością
rejestru jest wierzchołek stosu rejestru.
.TP
\fBS\fP\fIr\fP
Zdejmuje wartość z wierzchołka stosu (głównego) i odkłada ją na stosie
rejestru \fIr\fP. Poprzednia wartość rejestru staje się niedostępna.
.TP
\fBL\fP\fIr\fP
Zdejmuje wartość z wierzchołka stosu rejestru \fIr\fP i odkłada ją na głównym
stosie. Poprzednia wartość stosu rejestru \fIr\fP, jeśli była takowa, jest
teraz dostępna poprzez polecenie \fBl\fP\fIr\fP.
.ig
.PP
The
\fBf\fR
command prints a list of all registers that have contents stored in them,
together with their contents.
Only the current contents of each register
(the top of its stack)
is printed.
..
.SH Parametry
.PP
\*(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.
.PP
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.
.TP
\fBi\fP
Zdejmuje wartość z wierzchołka stosu i posługuje się nią do ustawienia
podstawy wejścia.
.TP
\fBo\fP
Zdejmuje wartość z wierzchołka stosu i posługuje się nią do ustawienia
podstawy wyjścia.
.TP
\fBk\fP
Zdejmuje wartość z wierzchołka stosu i posługuje się nią do ustawienia
dokładności.
.TP
\fBI\fP
Odkłada bieżącą wartość podstawy wejścia na stosie.
.TP
\fBO\fP
Odkłada bieżącą wartość podstawy wyjścia na stosie.
.TP
\fBK\fP
Odkłada bieżącą dokładność na stosie.
.SH "Łańcuchy znakowe"
.PP
\fBdc\fP 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
\fBdc\fP. Stos i wszystkie rejestry mogą przechowywać łańcuchy, a \fBdc\fP 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 \fBp\fP akceptuje oba
rodzaje argumentów i wypisuje obiekt stosownie do jego typu.
.TP
\fB[\fP\fIznaki\fP\fB]\fP
Tworzy łańcuch zawierający \fIznaki\fP (zawarte pomiędzy nawiasami kwadratowymi
\fB[\fP i \fB]\fP) i odkłada go na stos. Na przykład, \fB[foo]P\fP wypisuje znaki
\fBfoo\fP (bez zakończenia znakiem nowej linii).
.TP
\fBa\fP
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.
.TP
\
Note: this command is being deprecated; see \fIdc.info\fP for details. If you
use the \fBa\fP command and think it should remain a part of GNU dc, file a bug
report requesting its retention.
.TP
\fBx\fP
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, \fB[1p]x\fP wykonuje makro \fB1p\fP, które odkłada \fB1\fP na
stosie i wypisuje \fB1\fP w osobnym wierszu.
.PP
Makra są najczęściej przechowywane w rejestrach: \fB[1p]sa\fP składuje makro do
wypisania \fB1\fP w rejestrze \fBa\fP, zaś \fBlax\fP wywołuje to makro.
.TP
\fB>\fP\fIr\fP
Zdejmuje dwie wartości ze stosu i porównuje je, zakładając, że są one
liczbami, wykonując zawartość rejestru \fIr\fP jako makro, jeśli pierwotny
wierzchołek stosu jest większy. Tak więc, \fB1 2>a\fP wywoła zawartość
rejestru \fBa\fP zaś \fB2 1>a\fP nie wywoła.
.TP
\fB!>\fP\fIr\fP
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.
.TP
\fB<\fP\fIr\fP
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.
.TP
\fB!<\fP\fIr\fP
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.
.TP
\fB=\fP\fIr\fP
Podobnie, ale wywołuje makro, gdy obie zdjęte ze stosu liczby są równe.
.TP
\fB!=\fP\fIr\fP
Podobnie, ale wywołuje makro, gdy obie zdjęte ze stosu liczby nie są równe.
.ig
This can also be validly used to compare two strings for equality.
..
.TP
\fB?\fP
Czyta wiersz z terminala i wykonuje go. Polecenie to umożliwia makru
pobieranie danych od użytkownika.
.TP
\fBq\fP
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.
.TP
\fBQ\fP
Zdejmuje ze stosu wartość i używa jej jako liczby poziomów wykonania makr,
jakie mają zostać zakończone. Tak więc, \fB3Q\fP kończy pracę trzech poziomów
makr. Polecenie \fBQ\fP nigdy nie powoduje zakończenia pracy \*(dc.
.SH "Informacja o stanie"
.TP
\fBZ\fP
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 \fInie\fP obejmuje początkowych zer, w tym jedynego zera przed kropką
oddzielającą część całkowitą od ułamkowej.
.TP
\fBX\fP
.\" \-1.
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.
.TP
\fBz\fP
Odkłada na stos bieżącą wysokość stosu: liczbę obiektów na stosie przed
wykonaniem polecenia \fBz\fP.
.SH Różne
.TP
\fB!\fP
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 !.
.TP
\fB#\fP
Interpretuje resztę wiersza jako komentarz.
.TP
\fB:\fP\fIr\fP
Zdejmuje ze stosu dwie górne wartości. Wartość, która była drugą od góry
stosu zostanie zachowana w tablicy \fIr\fP, indeksowanej wartością byłego
wierzchołka stosu.
.TP
\fB;\fP\fIr\fP
Zdejmuje wierzchołek stosu i posługuje się nim jako indeksem tablicy \fIr\fP.
Wybrana w ten sposób wartość jest następnie odkładana na stos.
.P
Note that each stacked instance of a register consists of both its simple
scalar value (whether a number or a string) and an array of the same name.
Thus \fB1 0:x 0Sx 2 0:x Lx 0;xp\fP will print \fB1\fP, because the \fB2\fP was stored
at index 0 in an instance of the array \fBx\fP which was later popped,
re\-exposing the instance of \fBx\fP that is holding a 1 at index 0.
.SH "ZMIENNE ŚRODOWISKOWE"
.IP DC_LINE_LENGTH
Determines the column at which numeric output is split; the default value is
70. If set to \*(lq0\*(rq then line\-splitting is disabled and each output line
will be as long as necessary to represent the number.
.IP DC_PROMPT
Sets a prompt to use when \*(dc is expecting interactive input on stdin.
.SH USTERKI
.PP
Raporty o błędach można wysyłać do
.UR bug\-dc@gnu.org
.UE
.
.SH "ZOBACZ TAKŻE"
More complete documentation is available in dc.info, which may (depending on
your local installation) be available by invoking \*(lqinfo dc\*(rq.
.PP
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są:
Wojtek Kotwica
i
Michał Kułach
.
.PP
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .