dc(1) General Commands Manual dc(1) NAZWA dc - kalkulator dowolnej precyzji SKLADNIA dc [-V] [--version] [-h] [--help] [-e wyrazenie-skryptu] [--expression=wyrazenie-skryptu] [-f wyrazenie-pliku] [--file=wyrazenie-pliku] [plik ...] OPIS dc jest kalkulatorem pracujacym w odwrotnej notacji polskiej, obslugujacym arytmetyke nieograniczonej precyzji. Pozwala rowniez na definiowanie i wywolywanie makr. Zwykle dc czyta ze standardowego wejscia. Jesli uzyto argumentow polecenia dc, to sa one traktowane jak nazwy plikow. Zawartosc tych plikow jest odczytywana i wykonywana przez dc przed odczytem standardowego wejscia. Wszystkie zwykle wyniki kierowane sa na standardowe wyjscie; wszystkie komunikaty o bledach kierowane sa na standardowe wyjscie bledow. Kalkulator odwrotnej notacji polskiej przechowuje liczby na stosie. Wprowadzenie liczby odklada ja na stos. Operacje arytmetyczne pobieraja argumenty ze stosu i odkladaja na nim wyniki. W celu wprowadzenia liczby do dc wpisujemy cyfry (wielkie litery od A do F sa ,,cyframi", przy pracy z systemami liczbowymi o podstawie wiekszej niz dziesiec) z opcjonalna kropka dziesietna. Nie jest rozpoznawana notacja wykladnicza. Liczbe ujemna poprzedzamy znakiem podkreslenia ,,_". Nie mozna posluzyc sie w tym celu znakiem ,,-" (minus), gdyz jest to dwuargumentowy operator odejmowania. Dwie kolejne liczby wprowadzamy oddzielajac je spacjami lub znakami nowej linii. Nie maja one znaczenia jako polecenia. OPCJE dc mozna wywolac z nastepujacymi opcjami wiersza polecen: -V --version Wypisuje numer wersji uruchomionego dc i informacje o prawach autorskich, a nastepnie konczy dzialanie. -h --help Wypisuje komunikat o sposobie wywolania, podajac w skrocie opcje wiersza polecen i adres, na ktory nalezy zglaszac bledy, a nastepnie konczy dzialanie. -e skrypt --expression=skrypt Dodaje polecenia ze skryptu do zestawu polecen, jakie maja byc wykonane podczas przetwarzania wejscia. -f plik-skryptu --file=plik-skryptu Dodaje polecenia zawarte w pliku-skryptu do zestawu polecen, jakie maja byc wykonane podczas przetwarzania wejscia. Jezeli po przetworzeniu powyzszych opcji pozostana jeszcze jakies parametry wiersza polecen, to sa one interpretowane jako nazwy plikow wejsciowych, ktore nalezy wykonac. Nazwa - odnosi sie do standardowego strumienia wejsciowego. Jesli nie podano plikow skryptow ani zadnych wyrazen, to polecenia do wykonania beda czytane ze standardowego wejscia. Polecenia wypisywania p Wypisuje wartosc z wierzcholka stosu, bez jego zmiany. Po wartosci wypisywany jest znak nowej linii. n Wypisuje wartosc z wierzcholka stosu, zdejmujac ja rownoczesnie ze stosu. Nie wypisuje po niej znaku nowej linii. P Zdejmuje wartosc z wierzcholka stosu. Jesli jest to lancuch, to jest on po prostu wypisywany bez koncowego znaku nowej linii. W przeciwnym razie jest to liczba, a czesc calkowita jej wartosci bezwzglednej wypisywana jest jako strumien bajtow ,,o podstawie (UCHAR_MAX+1)". Zakladajac, ze (UCHAR_MAX+1) wynosi 256 (jak to jest w wiekszosci maszyn o 8-bitowych bajtach), funkcje te realizuje takze sekwencja KSK0k1/_1Ss [ls*]Sxd0>x [256~Ssd0qaPlxx] dsxxsx0sqLqsxLxLK+k (wiekszosc stopnia skomplikowania tego kodu, natywnego dla dc, wynika z odwrotnego obliczania znakow przez ~ oraz checi upewnienia sie, ze wszystkie rejestry znajda sie na koniec z powrotem w swoich pierwotnych stanach). f Wypisuje cala zawartosc stosu nie zmieniajac niczego. Jest polecenie przydatne w sytuacji, gdy sie pogubilismy lub chcemy sie zorientowac, jaki byl efekt pewnych polecen. Arytmetyka + Zdejmuje ze stosu dwie wartosci, dodaje je i odklada wynik na stos. Dokladnosc wyniku zalezy wylacznie od wartosci argumentow i jest wystarczajaco scisla. - Zdejmuje ze stosu dwie wartosci, odejmuje pierwsza zdjeta od drugiej i sklada wynik ponownie na stos. * Zdejmuje ze stosu dwie wartosci, mnozy je i odklada wynik na stos. Liczba cyfr ulamkowych zalezy od aktualnej wartosc dokladnosci i liczby cyfr ulamkowych w obu argumentach. / Zdejmuje ze stosu dwie wartosci, dzieli druga zdjeta przez pierwsza i odklada wynik ponownie na stos. Liczba cyfr ulamkowych wyniku okreslana jest przez wartosc dokladnosci. % Zdejmuje ze stosu dwie wartosci, oblicza reszte z dzielenia, jakie byloby wykonane przez / i odklada wynik na stos. Obliczona wartosc jest ta sama, co otrzymana z sekwencji Sd dld/ Ld*-. ~ Zdejmuje ze stosu dwie wartosci, dzieli druga zdjeta przez pierwsza. Odklada na stos iloraz, a nastepnie reszte z dzielenia. Dzielenie wykonywane jest z liczba cyfr ulamkowych okreslona wartoscia dokladnosci. (Funkcje te moze tez spelniac sekwencja SdSn lnld/ LnLd%, z nieco odmiennym sprawdzaniem bledow.) ^ Zdejmuje ze stosu dwie wartosci i wykonuje potegowanie, poslugujac sie pierwsza zdjeta jako wykladnikiem, zas druga jako podstawa potegowania. Ulamkowa czesc wykladnika jest ignorowana. Wartosc dokladnosci okresla liczbe cyfr ulamkowych wyniku. | Zdejmuje ze stosu trzy wartosci i oblicza potegowanie modulo [od tlum: modular exponentiation == (a^b) mod c]. Pierwsza ze zdjetych wartosci uzywana jest jako dzielnik operacji (reduction modulus). Wartosc ta musi byc niezerowa i powinna byc liczba calkowita. Druga uzywana jest jako wykladnik i musi byc liczba nieujemna, a jej czesc ulamkowa zostanie zignorowana. Trzecia z pobranych ze stosu wartosci okresla podstawe potegowania, powinna ona byc calkowita. Dla malych liczb jest to zblizone do sekwencji Sm^Lm%, ale, w odroznieniu od ^, polecenie to dziala z dowolnie duzymi wykladnikami. v Zdejmuje ze stosu pojedyncza wartosc, oblicza jej pierwiastek kwadratowy i odklada go na stos. Maksymalna wartosc dokladnosci i dokladnosci argumentu sluzy do okreslenia liczby cyfr ulamkowych wyniku. Na wiekszosc operacji arytmetycznych wplywa ,,wartosc dokladnosci", ktora ustala sie za pomoca polecenia k. Domyslna wartoscia dokladnosci jest zero, co oznacza, ze wszystkie dzialania arytmetyczne z wyjatkiem dodawania i odejmowania daja wyniki calkowite. Kontrola stosu c Czysci stos, powoduje, ze bedzie on pusty. d Powiela wartosc na wierzcholku stosu, odkladajac na stos jej kopie. Zatem ,,4d*p" oblicza 4 podniesione do kwadratu i wypisuje wynik. r Zamienia miejscami dwie gorne wartosci na stosie (mozna to uczynic rowniez sekwencja SaSbLaLb). R Zdejmuje z wierzcholka stosu liczbe n. Cyklicznie rotuje n elementow z wierzcholka stosu na zaktualizowany stos. Jesli n jest dodatnie, kierunek rotacji spowoduje, ze najwyzszy element stosu stanie sie drugim elementem, jesli n jest ujemne, to kierunek rotacji spowoduje, ze najwyzszym elementem stosu stanie sie n-ty element liczac od gory stosu. Jesli stos ma glebokosc mniejsza niz n, to caly stos jest rotowany (w odpowiednim kierunku) bez zglaszania bledu. Rejestry dc udostepnia co najmniej 256 rejestrow pamieciowych, kazdy nazwany pojedynczym znakiem. W rejestrze mozna przechowac liczbe lub lancuch znakowy i pozniej je odtworzyc. sr Zdejmuje wartosc z wierzcholka stosu i zapisuje w rejestrze r. lr Kopiuje wartosc zawarta w rejestrze r i odklada ja na stos. Jesli rejestr jest niezainicjowany, pobierana jest wartosc 0. Nie zmienia to zawartosci r. Kazdy z rejestrow posiada rowniez swoj wlasny stos. Biezaca wartoscia rejestru jest wierzcholek stosu rejestru. Sr Zdejmuje wartosc z wierzcholka stosu (glownego) i odklada ja na stosie rejestru r. Poprzednia wartosc rejestru staje sie niedostepna. Lr Zdejmuje wartosc z wierzcholka stosu rejestru r i odklada ja na glownym stosie. Poprzednia wartosc stosu rejestru r, jesli byla takowa, jest teraz dostepna poprzez polecenie lr. Parametry dc posiada trzy parametry kontrolujace jego prace: dokladnosc, podstawe systemu pozycyjnego wejscia i podstawe wyjscia. Dokladnosc okresla liczbe cyfr dziesietnych, jaka bedzie zachowana w wyniku wiekszosci operacji arytmetycznych. Podstawa wejscia odpowiada za interpretacje wprowadzanych liczb; wszystkie wprowadzane liczby uzywaja tej podstawy. Podstawa wyjscia uzywana jest do wypisywania liczb. Podstawa wejscia i wyjscia sa odrebnymi parametrami; mozna spowodowac, ze beda rozne, co moze byc uzyteczne lub mylace. Podstawa wejscia musi byc liczba z zakresu od 2 do 16. Podstawa wyjscia musi wynosic co najmniej 2. Dokladnosc musi byc rowna zeru lub wieksza. Dokladnosc zawsze okreslana jest jako liczba cyfr dziesietnych, niezaleznie od biezacej podstawy wejscia czy wyjscia. i Zdejmuje wartosc z wierzcholka stosu i posluguje sie nia do ustawienia podstawy wejscia. o Zdejmuje wartosc z wierzcholka stosu i posluguje sie nia do ustawienia podstawy wyjscia. k Zdejmuje wartosc z wierzcholka stosu i posluguje sie nia do ustawienia dokladnosci. I Odklada biezaca wartosc podstawy wejscia na stosie. O Odklada biezaca wartosc podstawy wyjscia na stosie. K Odklada biezaca dokladnosc na stosie. Lancuchy znakowe dc oprocz pracy z liczbami moze tez dzialac, w ograniczonym zakresie, na lancuchach znakowych; lancuchy mozna jedynie wypisywac i wykonywac jako makra (co oznacza, ze zawartosc lancucha przetwarzana jest jako polecenia dc. Stos i wszystkie rejestry moga przechowywac lancuchy, a dc zawsze wie, czy dany obiekt jest lancuchem czy liczba. Niektore z polecen, jak np. operacje arytmetyczne, wymagaja liczb jako swych argumentow i wyswietlaja bledy, jesli dostarczono im lancuch. Inne akceptuja zarowno liczby, jak i lancuchy znakowe. Na przyklad, polecenie p akceptuje oba rodzaje argumentow i wypisuje obiekt stosownie do jego typu. [znaki] Tworzy lancuch zawierajacy znaki (zawarte pomiedzy nawiasami kwadratowymi [ i ]) i odklada go na stos. Na przyklad, [foo]P wypisuje znaki foo (bez zakonczenia znakiem nowej linii). a Zdejmowany jest wierzcholek stosu. Jezeli jest to liczba, to mlodszy bajt (low-order byte) tej liczby zamieniany jest na lancuch i odkladany na stos. W przeciwnym przypadku, wierzcholek stosu byl lancuchem, a z powrotem na stos odkladany jest pierwszy znak tego lancucha. x Zdejmuje wartosc ze stosu i wykonuje ja jako makro. Zwykle powinien to byc lancuch znakowy. Jezeli jest to liczba, to zostanie po prostu zwrocona na stos. Na przyklad, [1p]x wykonuje makro 1p, ktore odklada 1 na stosie i wypisuje 1 w osobnym wierszu. Makra sa najczesciej przechowywane w rejestrach: [1p]sa skladuje makro do wypisania 1 w rejestrze a, zas lax wywoluje to makro. >r Zdejmuje dwie wartosci ze stosu i porownuje je, zakladajac, ze sa one liczbami, wykonujac zawartosc rejestru r jako makro, jesli pierwotny wierzcholek stosu jest wiekszy. Tak wiec, 1 2>a wywola zawartosc rejestru a zas 2 1>a nie wywola. !>r Podobnie, ale wywoluje makro jesli pierwotny wierzcholek stosu nie jest mniejszy (jest wiekszy badz rowny) od liczby wystepujacej pod nim. ma pierwszenstwo, dlatego jesli chce sie wykonac polecenie zaczynajace sie od <, = lub >, konieczne jest dodanie spacji po znaku !. # Interpretuje reszte wiersza jako komentarz. :r Zdejmuje ze stosu dwie gorne wartosci. Wartosc, ktora byla druga od gory stosu zostanie zachowana w tablicy r, indeksowanej wartoscia bylego wierzcholka stosu. ;r Zdejmuje wierzcholek stosu i posluguje sie nim jako indeksem tablicy r. Wybrana w ten sposob wartosc jest nastepnie odkladana na stos. Prosze zauwazyc, ze kazdy rejestr ze stosu ma swoja wlasna, powiazana z nim, tablice. Zatem 1 0:a 0Sa 2 0:a La 0;ap wypisze 1, poniewaz 2 bylo zachowane w rejestrze 0:a, ktory zostal nastepnie zdjety. USTERKI Raporty o bledach mozna wysylac do TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Wojtek Kotwica i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Projekt GNU 22 maja 2008 r. dc(1)