.\" -*- 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 ianuarie 2025" "Proiectul GNU"
.ds dc \fIdc\fP
.ds Dc \fIdc\fP
.SH NUME
dc \- un calculator cu precizie arbitrară (la alegere)
.SH SINOPSIS
dc [\-V] [\-\-version] [\-h] [\-\-help]
[\-e expresie\-script] [\-\-expression=expresie\-script]
[\-f fișier\-script] [\-\-file=fișier\-script]
[fișier ...]
.SH DESCRIERE
.PP
\*(dc este un calculator de birou cu notație poloneză inversă (postfixată),
care acceptă aritmetică de precizie nelimitată. De asemenea, vă permite să
definiți și să apelați macrocomenzi. În mod normal, \*(dc citește de la
intrarea standard; dacă i se dau argumente de comandă, acestea sunt nume de
fișiere, iar \*(dc citește și execută conținutul fișierelor înainte de a
citi de la intrarea standard. Toate ieșirile normale se trimit la ieșirea
standard; toate ieșirile de eroare se trimit la ieșirea de eroare standard.
.PP
Un calculator cu notație inversă (postfixată) stochează numerele într\-o
stivă. Introducerea unui număr îl împinge pe stivă. Operațiile aritmetice
scot argumentele din stivă și împing rezultatele.
.PP
Pentru a introduce un număr în \fIdc\fP, tastați cifrele de la \fI0\fP la \fI9\fP și
de la \fIA\fP la \fIF\fP pentru a reprezenta valorile de la zero la cincisprezece
(indiferent de baza de intrare curentă), incluzând opțional un singur punct
zecimal. Notația exponențială nu este acceptată. Pentru a introduce un număr
negativ, începeți numărul cu „_”. „\-” nu poate fi utilizat în acest scop,
deoarece este un operator binar pentru scădere în schimb. Pentru a introduce
două numere succesive, separați\-le cu spații sau linii noi. Acestea nu au
nicio semnificație drept comenzi.
.SH OPȚIUNI
\*(dc poate fi apelat cu următoarele opțiuni de linie de comandă:
.TP
\fB\-V\fP
.TP
\fB\-\-version\fP
Afișează versiunea de \*(dc care este rulată și o notificare privind
drepturile de autor, apoi iese.
.TP
\fB\-h\fP
.TP
\fB\-\-help\fP
Afișează un mesaj de utilizare care rezumă pe scurt aceste opțiuni din linia
de comandă și adresa de raportare a erorilor, apoi iese.
.TP
\fB\-e \fP\fIscript\fP
.TP
\fB\-\-expression=\fP\fIscript\fP
Adaugă comenzile din \fIscript\fP la setul de comenzi care urmează să fie
executate în timpul procesării datelor de intrare.
.TP
\fB\-f \fP\fIfișier\-script\fP
.TP
\fB\-\-file=\fP\fIfișier\-script\fP
Adaugă comenzile conținute în fișierul \fIfișier\-script\fP la setul de comenzi
care urmează să fie executate în timpul procesării datelor de intrare.
.TP
\fB\-\-max\-recursion=\fP\fIadâncimea\fP
Limitează recursivitatea la o adâncime de cel mult \fIadâncimea\fP; (utilă mai
ales pentru depanare).
.PP
Dacă după procesarea celor de mai sus rămân parametri de linie de comandă,
aceștia sunt interpretați ca fiind numele fișierelor de intrare care urmează
să fie procesate. Un nume de fișier \fB\-\fP se referă la fluxul de intrare
standard. Intrarea standard va fi procesată dacă nu sunt specificate fișiere
de script sau expresii.
.SH "Comenzi de imprimare"
.TP
\fBp\fP
Imprimă valoarea din partea de sus a stivei, fără a modifica stiva. După
valoare se imprimă o linie nouă.
.TP
\fBn\fP
Imprimă valoarea din partea de sus a stivei, o înlătură și nu imprimă o
linie nouă după.
.TP
\fBP\fP
Afișează valoarea din partea de sus a stivei. Dacă este un șir de caractere,
acesta este pur și simplu afișat fără o linie nouă la sfârșit. În caz
contrar, este un număr, iar partea întreagă a valorii sale absolute este
imprimată sub forma unui flux de octeți „base (UCHAR_MAX+1)”. Presupunând că
(UCHAR_MAX+1) este 256 (așa cum este pe majoritatea mașinilor cu octeți pe 8
biți), secvența \fBKSK0k1/_1Ss [ls*]Sxd0>x [256~Ssd0qaPlxx] dsxxsx0sqLqsxLxLxLK+k\fP ar
putea, de asemenea, îndeplini această funcție; (o mare parte din
complexitatea codului nativ\-dc de mai sus se datorează ~ calculării
caracterelor în sens invers și dorinței de a se asigura că toate registrele
ajung înapoi în starea lor inițială).
.TP
\fBf\fP
Imprimă întregul conținut al stivei
.ig
and the contents of all of the registers,
..
fără a modifica nimic. Aceasta este o comandă bună de utilizat dacă vă
pierdeți sau doriți să vă dați seama care a fost efectul unei comenzi.
.SH Aritmetică
.TP
\fB+\fP
Extrage două valori din stivă, le adună și afișează rezultatul. Precizia
rezultatului este determinată doar de valorile argumentelor și este
suficientă pentru a fi exactă.
.TP
\fB\-\fP
Extrage două valori, scade prima valoare extrasă din cea de\-a doua valoare
extrasă și afișează rezultatul.
.TP
\fB*\fP
Extrage două valori, le înmulțește și afișează rezultatul. Numărul de cifre
de fracție din rezultat depinde de valoarea curentă a preciziei și de
numărul de cifre de fracție din cele două argumente.
.TP
\fB/\fP
Extrage două valori, împarte a doua valoare extrasă la prima valoare extrasă
și afișează rezultatul. Numărul de cifre ale fracției este specificat de
valoarea preciziei.
.TP
\fB%\fP
Extrage două valori, calculează restul împărțirii pe care ar trebui să o
facă comanda \fB/\fP și îl afișează. Valoarea calculată este aceeași cu cea
calculată de secvența \fBSd dld/ Ld*\-\fP .
.TP
\fB~\fP
Extrage două valori, împarte a doua valoare extrasă din prima valoare
extrasă. Câtul este afișat mai întâi, iar restul este afișat în
continuare. Numărul de cifre ale fracției utilizate în împărțire este
specificat de valoarea de precizie; (secvența \fBSdSn lnld/ LnLd%\fP ar putea,
de asemenea, îndeplini această funcție, cu o verificare a erorilor un pic
diferită).
.TP
\fB^\fP
Extrage două valori și le multiplică prin exponenți, folosind prima valoare
extrasă ca exponent și a doua ca bază. Partea de fracție a exponentului este
ignorată. Valoarea de precizie specifică numărul de cifre de fracție din
rezultat.
.TP
\fB|\fP
Extrage trei valori și calculează o multiplicare exponențială
modulară.. Prima valoare extrasă este utilizată ca modul de reducere;
această valoare trebuie să fie un număr diferit de zero și trebuie să fie un
număr întreg. A doua valoare extrasă este utilizată ca exponent; această
valoare trebuie să fie un număr nenegativ, iar orice parte fracționară a
acestui exponent va fi ignorată. A treia valoare extrasă este baza care va
fi multiplicată exponențial; aceasta trebuie să fie un număr întreg. Pentru
numere întregi mici, acest lucru este ca și secvența \fBSm^Lm%\fP, dar, spre
deosebire de \fB^\fP, această comandă va funcționa cu exponenți oricât de mari.
.TP
\fBv\fP
Extrage o valoare, calculează rădăcina pătrată a acesteia și o afișează.
Maximul dintre valoarea de precizie și precizia argumentului este utilizat
pentru a determina numărul de cifre de fracție din rezultat.
.PP
Majoritatea operațiilor aritmetice sunt afectate de „valoarea de precizie”,
pe care o puteți stabili cu ajutorul comenzii \fBk\fP. Valoarea implicită a
preciziei este zero, ceea ce înseamnă că toate operațiile aritmetice, cu
excepția adunării și a scăderii, produc rezultate întregi.
.SH "Controlul stivei"
.TP
\fBc\fP
Șterge stiva, lăsând\-o goală.
.TP
\fBd\fP
Duplică valoarea din partea de sus a stivei, introducând o altă copie a
acesteia. Astfel, „4d*p” calculează 4 la pătrat și afișează rezultatul.
.TP
\fBr\fP
Inversează ordinea (interschimbă) primele două valori din stivă; (acest
lucru poate fi realizat și cu secvența \fBSaSbLaLb\fP.)
.TP
\fBR\fP
Extrage partea de sus a stivei sub forma unui număr întreg \fIn\fP. Rotește
ciclic elementele din partea de sus \fIn\fP a stivei actualizate. Dacă \fIn\fP
este pozitiv, atunci direcția de rotație va face ca elementul cel mai de sus
să fie al doilea din vârf; dacă \fIn\fP este negativ, atunci rotația va face ca
elementul cel mai de sus să fie al \fIn\fP\-lea element din vârf. Dacă
adâncimea stivei este mai mică decât \fIn\fP, atunci întreaga stivă este rotită
(în direcția corespunzătoare), fără a fi raportată nicio eroare.
.SH Registre
.PP
\*(dc oferă cel puțin 256 de registre de memorie, fiecare fiind denumit cu
un singur caracter. Puteți stoca un număr sau un șir de caractere într\-un
registru și îl puteți prelua ulterior.
.TP
\fBs\fP\fIr\fP
Extrage valoarea din partea de sus a stivei și o stochează în registrul
\fIr\fP.
.TP
\fBl\fP\fIr\fP
Copiază valoarea din registrul \fIr\fP și o introduce în stivă. Valoarea 0 este
recuperată dacă registrul este neinițializat. Acest lucru nu modifică
conținutul lui \fIr\fP.
.PP
Fiecare registru conține, de asemenea, propria sa stivă. Valoarea curentă a
registrului reprezintă partea superioară a stivei registrului.
.TP
\fBS\fP\fIr\fP
Extrage valoarea din partea de sus a stivei (principale) și o introduce în
stiva registrului \fIr\fP. Valoarea anterioară a registrului devine
inaccesibilă.
.TP
\fBL\fP\fIr\fP
Extrage valoarea din partea de sus a stivei registrului \fIr\fP și o introduce
în stiva principală. Valoarea anterioară din stiva registrului \fIr\fP, dacă
există, este acum accesibilă prin intermediul comenzii \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 Parametrii
.PP
\*(dc are trei parametri care îi controlează funcționarea: precizia, baza de
intrare și baza de ieșire. Precizia specifică numărul de cifre de fracție
care trebuie păstrate în rezultatul majorității operațiilor aritmetice. Baza
de intrare controlează interpretarea numerelor introduse; toate numerele
introduse utilizează această bază. Baza de ieșire este utilizată pentru
imprimarea numerelor.
.PP
Bazele de intrare și de ieșire sunt parametri separați; le puteți face
inegale, ceea ce poate fi util sau confuz. Baza de intrare trebuie să fie
cuprinsă între 2 și 16 inclusiv. Baza de ieșire trebuie să fie cel puțin
2. Precizia trebuie să fie zero sau mai mare. Precizia se măsoară
întotdeauna în cifre zecimale, indiferent de baza curentă de intrare sau de
ieșire.
.TP
\fBi\fP
Extrage valoarea din partea de sus a stivei și o utilizează pentru a stabili
baza de intrare.
.TP
\fBo\fP
Extrage valoarea din partea de sus a stivei și o utilizează pentru a stabili
baza de ieșire.
.TP
\fBk\fP
Extrage valoarea din partea de sus a stivei și o utilizează pentru a stabili
precizia.
.TP
\fBI\fP
Introduce în stivă baza de intrare curentă.
.TP
\fBO\fP
Introduce în stivă baza de ieșire curentă.
.TP
\fBK\fP
Introduce precizia curentă în stivă.
.SH Șiruri
.PP
\*(dc are o capacitate limitată de a opera cu șiruri de caractere, precum și
cu numere; singurele lucruri pe care le puteți face cu șirurile de caractere
sunt imprimarea lor și executarea lor ca macro\-uri (ceea ce înseamnă că
conținutul șirului de caractere este procesat ca fiind comenzi
\*(dc)). Toate registrele și stiva pot conține șiruri de caractere, iar
\*(dc știe întotdeauna dacă orice obiect dat este un șir de caractere sau un
număr. Unele comenzi, cum ar fi operațiile aritmetice, cer numere ca
argumente și afișează erori în cazul în care primesc șiruri de
caractere. Alte comenzi pot accepta fie un număr, fie un șir de caractere;
de exemplu, comanda \fBp\fP poate accepta oricare dintre acestea și afișează
obiectul în funcție de tipul său.
.TP
\fB[\fP\fIcaractere\fP\fB]\fP
Creează un șir de caractere care conține \fIcaractere\fP (cuprins între
caracterele pereche \fB[\fP și \fB]\fP) și îl introduce în stivă. De exemplu,
\fB[foo]P\fP imprimă caracterele \fBfoo\fP (fără linie nouă).
.TP
\fBa\fP
Partea de sus a stivei este extrasă. Dacă a fost un număr, atunci octetul de
rang inferior al acestui număr este convertit într\-un șir de caractere și
introdus în stivă. În caz contrar, partea de sus a stivei era un șir de
caractere, iar primul caracter al acelui șir este introdus înapoi.
.TP
\
Notă: această comandă este depreciată; consultați \fIdc.info\fP pentru
detalii. Dacă utilizați comanda \fBa\fP și credeți că ar trebui să rămână o
parte din GNU dc, depuneți un raport de eroare prin care solicitați
păstrarea ei.
.TP
\fBx\fP
Scoate o valoare din stivă și o execută ca o macrocomandă. În mod normal, ar
trebui să fie un șir de caractere; dacă este un număr, acesta este pur și
simplu reintrodus în stivă. De exemplu, \fB[1p]x\fP execută macrocomanda \fB1p\fP
care introduce \fB1\fP în stivă și imprimă \fB1\fP pe o linie separată.
.PP
Macrocomenzile sunt cel mai adesea stocate în registre; \fB[1p]sa\fP stochează
o macrocomandă pentru a imprima \fB1\fP în registrul \fBa\fP, iar \fBlax\fP invocă
această macrocomandă.
.TP
\fB>\fP\fIr\fP
Extrage două valori din stivă și le compară, presupunând că sunt numere,
executând conținutul registrului \fIr\fP ca o macrocomandă dacă valoarea
inițială din partea de sus a stivei este mai mare. Astfel, \fB1 2>a\fP va
invoca conținutul registrului \fBa\fP, iar \fB2 1>a\fP nu o va face.
.TP
\fB!>\fP\fIr\fP
Similar, dar invocă macrocomanda în cazul în care numărul inițial din partea
de sus a stivei nu este mai mare decât (mai mic sau egal cu) cel ce a fost
al doilea în partea de sus a stivei.
.TP
\fB<\fP\fIr\fP
Similar, dar invocă macrocomanda dacă numărul inițial din partea de sus a
stivei este mai mic.
.TP
\fB!<\fP\fIr\fP
Similar, dar invocă macrocomanda în cazul în care numărul inițial din partea
de sus al stivei nu este mai mic decât (mai mare sau egal cu) cel ce a fost
al doilea în partea de sus a stivei.
.TP
\fB=\fP\fIr\fP
Similar, dar invocă macrocomanda dacă cele două numere extrase sunt egale.
.TP
\fB!=\fP\fIr\fP
Similar, dar invocă macrocomanda dacă cele două numere extrase nu sunt
egale.
.ig
This can also be validly used to compare two strings for equality.
..
.TP
\fB?\fP
Citește o linie din terminal și o execută. Această comandă permite unei
macrocomenzi să solicite informații de la utilizator.
.TP
\fBq\fP
iese dintr\-o macrocomandă și, de asemenea, din macrocomanda care a invocat
\-o. Dacă este apelată de la nivelul superior sau de la o macrocomandă care a
fost apelată direct de la nivelul superior, comanda \fBq\fP va determina \*(dc
să iasă.
.TP
\fBQ\fP
Extrage o valoare din stivă și o utilizează ca număr de niveluri de execuție
a macrocomenzii care trebuie să fie abandonate. Astfel, \fB3Q\fP iese de pe
trei niveluri. Comanda \fBQ\fP nu va determina niciodată ieșirea lui \*(dc.
.SH "Consultare de stare"
.TP
\fBZ\fP
Extrage o valoare din stivă, calculează numărul de cifre zecimale pe care le
are (sau numărul de caractere, dacă este un șir de caractere) și introduce
acest număr. Numărătoarea cifrelor pentru un număr \fInu\fP include zerourile
de început, chiar dacă acestea apar în dreapta punctului rădăcină
(virgulei).
.TP
\fBX\fP
.\" \-1.
Extrage o valoare din stivă, calculează numărul de cifre de fracție pe care
le are și introduce acest număr. În cazul unui șir de caractere, valoarea
introdusă este 0.
.TP
\fBz\fP
Introduce adâncimea curentă a stivei: numărul de obiecte de pe stivă înainte
de executarea comenzii \fBz\fP.
.SH Diverse
.TP
\fB!\fP
Va rula restul liniei ca o comandă de sistem. Rețineți că analizarea
comenzilor !<, != și !> are prioritate, astfel încât, dacă doriți să
executați o comandă care începe cu <, = sau >, va trebui să adăugați
un spațiu după !.
.TP
\fB#\fP
Va interpreta restul liniei ca fiind un comentariu.
.TP
\fB:\fP\fIr\fP
Va extrage primele două valori din stivă. A doua valoare veche din vârf va
fi stocată în matricea \fIr\fP, indexată cu vechea valoare din vârful stivei.
.TP
\fB;\fP\fIr\fP
Extrage partea de sus a stivei și o utilizează ca index în matricea
\fIr\fP. Valoarea selectată este apoi introdusă în stivă.
.P
Rețineți că fiecare instanță stivuită a unui registru constă atât din
valoarea sa scalară simplă (fie ea un număr sau un șir de caractere), cât și
dintr\- o matrice cu același nume. Astfel, \fB1 0:x 0Sx 2 0:x Lx 0;xp\fP va
afișa \fB1\fP, deoarece \fB2\fP a fost stocat la indexul 0 într\-o instanță a
matricei \fBx\fP, care a fost ulterior scoasă, expunând din nou instanța lui
\fBx\fP care deține un 1 la indexul 0.
.SH "VARIABILE DE MEDIU"
.IP DC_LINE_LENGTH
Determină coloana la care este divizată ieșirea numerică; valoarea implicită
este 70. Dacă este stabilită la „0”, atunci divizarea liniilor este
dezactivată și fiecare linie de ieșire va fi atât de lungă cât este necesar
pentru a reprezenta numărul.
.IP DC_PROMPT
Definește un prompt de utilizat atunci când \*(dc așteaptă o intrare
interactivă la intrarea standard.
.SH ERORI
.PP
Trimiteți rapoartele de erori prin e\-mail la \fBbug\-dc@gnu.org\fP.
.SH "CONSULTAȚI ȘI"
O documentație mai completă este disponibilă în dc.info, care poate fi
disponibilă (în funcție de instalarea locală) prin invocarea «info dc».
.PP
.SH TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de
Remus-Gabriel Chelu
.
.PP
Această traducere este documentație gratuită; citiți
.UR https://www.gnu.org/licenses/gpl-3.0.html
Licența publică generală GNU Versiunea 3
.UE
sau o versiune ulterioară cu privire la condiții privind drepturile de autor.
NU se asumă NICIO RESPONSABILITATE.
.PP
Dacă găsiți erori în traducerea acestui manual,
vă rugăm să trimiteți un e-mail la
.MT translation-team-ro@lists.sourceforge.net
.ME .