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

NUME

       dc - un calculator cu precizie arbitrară (la alegere)

SINOPSIS

       dc [-V] [--version] [-h] [--help]
          [-e expresie-script] [--expression=expresie-script]
          [-f fișier-script] [--file=fișier-script]
          [fișier ...]

DESCRIERE

       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.

       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.

       Pentru a introduce un număr în dc, introduceți cifrele (folosind literele majuscule  de  la  A  la  F  ca
       „cifre”  atunci  când lucrați cu baze de intrare mai mari de zece), cu un punct zecimal opțional. 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.

OPȚIUNI

       dc poate fi apelat cu următoarele opțiuni de linie de comandă:

       -V

       --version
              Afișează versiunea de dc care este rulată și o notificare privind drepturile de autor, apoi iese.

       -h

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

       -e script

       --expression=script
              Adaugă comenzile din script la setul de comenzi care urmează să fie executate în timpul procesării
              datelor de intrare.

       -f fișier-script

       --file=fișier-script
              Adaugă comenzile conținute în fișierul fișier-script la setul  de  comenzi  care  urmează  să  fie
              executate în timpul procesării datelor de intrare.

       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 - se referă la fluxul
       de intrare standard. Intrarea standard va fi procesată dacă nu sunt specificate  fișiere  de  script  sau
       expresii.

Comenzi de imprimare

       p      Imprimă  valoarea  din  partea  de  sus a stivei, fără a modifica stiva. După valoare se imprimă o
              linie nouă.

       n      Imprimă valoarea din partea de sus a stivei, o înlătură și nu imprimă o linie nouă după.

       P      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  KSK0k1/_1Ss  [ls*]Sxd0>x  [256~Ssd0<x]dsxxsx[q]Sq[Lsd0>qaPlxx]  dsxxsx0sqLqsxLxLxLK+k 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ă).

       f      Imprimă întregul conținut al stivei 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.

Aritmetică

       +      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ă.

       -      Extrage  două  valori,  scade  prima valoare extrasă din cea de-a doua valoare extrasă și afișează
              rezultatul.

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

       /      Extrage două valori, împarte a  doua  valoare  extrasă  din  prima  valoare  extrasă  și  afișează
              rezultatul. Numărul de cifre ale fracției este specificat de valoarea preciziei.

       %      Extrage  două  valori,  calculează  restul  împărțirii pe care ar trebui să o facă comanda / și îl
              afișează. Valoarea calculată este aceeași cu cea calculată de secvența Sd dld/ Ld*- .

       ~      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  SdSn  lnld/  LnLd%  ar  putea,  de
              asemenea, îndeplini această funcție, cu o verificare a erorilor un pic diferită).

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

       |      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  Sm^Lm%,  dar,  spre
              deosebire de ^, această comandă va funcționa cu exponenți oricât de mari.

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

       Majoritatea  operațiilor  aritmetice sunt afectate de „valoarea de precizie”, pe care o puteți stabili cu
       ajutorul comenzii k. 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.

Controlul stivei

       c      Șterge stiva, lăsând-o goală.

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

       r      Inversează ordinea (interschimbă) primele două valori din stivă; (acest lucru poate fi realizat și
              cu secvența SaSbLaLb.)

       R      Extrage partea de sus a stivei sub forma unui număr întreg n. Rotește ciclic elementele din partea
              de sus n a stivei actualizate. Dacă n  este  pozitiv,  atunci  direcția  de  rotație  va  face  ca
              elementul cel mai de sus să fie al doilea din vârf; dacă n este negativ, atunci rotația va face ca
              elementul  cel  mai  de sus să fie al n-lea element din vârf.  Dacă adâncimea stivei este mai mică
              decât n, atunci întreaga stivă este rotită (în direcția  corespunzătoare),  fără  a  fi  raportată
              nicio eroare.

Registre

       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.

       sr     Extrage valoarea din partea de sus a stivei și o stochează în registrul r.

       lr     Copiază valoarea din registrul r și  o  introduce  în  stivă.  Valoarea  0  este  recuperată  dacă
              registrul este neinițializat. Acest lucru nu modifică conținutul lui r.

       Fiecare registru conține, de asemenea, propria sa stivă. Valoarea curentă a registrului reprezintă partea
       superioară a stivei registrului.

       Sr     Extrage  valoarea  din  partea de sus a stivei (principale) și o introduce în stiva registrului r.
              Valoarea anterioară a registrului devine inaccesibilă.

       Lr     Extrage valoarea din partea de sus a stivei registrului r și  o  introduce  în  stiva  principală.
              Valoarea  anterioară  din  stiva registrului r, dacă există, este acum accesibilă prin intermediul
              comenzii lr.

Parametrii

       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.

       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.

       i      Extrage valoarea din partea de sus a stivei și o utilizează pentru a stabili baza de intrare.

       o      Extrage valoarea din partea de sus a stivei și o utilizează pentru a stabili baza de ieșire.

       k      Extrage valoarea din partea de sus a stivei și o utilizează pentru a stabili precizia.

       I      Introduce în stivă baza de intrare curentă.

       O      Introduce în stivă baza de ieșire curentă.

       K      Introduce precizia curentă în stivă.

Șiruri

       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 p poate accepta oricare dintre acestea și afișează obiectul în
       funcție de tipul său.

       [caractere]
              Creează un șir de caractere care conține caractere (cuprins între caracterele pereche [ și  ])  și
              îl introduce în stivă. De exemplu, [foo]P imprimă caracterele foo (fără linie nouă).

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

       x      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, [1p]x
              execută macrocomanda 1p care introduce 1 în stivă și imprimă 1 pe o linie separată.

       Macrocomenzile  sunt cel mai adesea stocate în registre; [1p]sa stochează o macrocomandă pentru a imprima
       1 în registrul a, iar lax invocă această macrocomandă.

       >r     Extrage două valori din stivă și le compară, presupunând  că  sunt  numere,  executând  conținutul
              registrului  r  ca o macrocomandă dacă valoarea inițială din partea de sus a stivei este mai mare.
              Astfel, 1 2>a va invoca conținutul registrului a, iar 2 1>a nu o va face.

       !>r    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.

       <r     Similar, dar invocă macrocomanda dacă numărul inițial din partea de sus a stivei este mai mic.

       !<r    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.

       =r     Similar, dar invocă macrocomanda dacă cele două numere extrase sunt egale.

       !=r    Similar, dar invocă macrocomanda dacă cele două numere extrase nu sunt egale.

       ?      Citește o linie din terminal și o execută. Această comandă permite unei macrocomenzi  să  solicite
              informații de la utilizator.

       q      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 q va determina dc să iasă.

       Q      Extrage o valoare din stivă și o utilizează ca număr de niveluri de execuție a macrocomenzii  care
              trebuie  să  fie  abandonate.  Astfel,  3Q  iese  de  pe trei niveluri.  Comanda Q nu va determina
              niciodată ieșirea lui dc.

Consultare de stare

       Z      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 nu include zerourile de început, chiar dacă acestea apar în  dreapta  punctului  rădăcină
              (virgulei).

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

       z      Introduce adâncimea curentă a stivei: numărul  de  obiecte  de  pe  stivă  înainte  de  executarea
              comenzii z.

Diverse

       !      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ă !.

       #      Va interpreta restul liniei ca fiind un comentariu.

       :r     Va  extrage primele două valori din stivă. A doua valoare veche din vârf va fi stocată în matricea
              r, indexată cu vechea valoare din vârful stivei.

       ;r     Extrage partea de sus a stivei și o utilizează ca index în matricea  r.  Valoarea  selectată  este
              apoi introdusă în stivă.

       Rețineți  că  fiecare instanță stivuită a unui registru are propria matrice asociată. Astfel, 1 0:a 0Sa 2
       0:a La 0;ap va afișa 1, deoarece 2 a fost stocat într-o instanță a lui 0:a care a fost ulterior extrasă.

FIȘIERE

       ~/.dcrc        Comenzile din acest fișier vor fi executate atunci când dc este rulat pentru prima dată.

ERORI

       Trimiteți rapoartele de erori prin e-mail la bug-dc@gnu.org.

TRADUCERE

       Traducerea   în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel    Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3 sau o
       versiune  ulterioară  cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se   asumă   NICIO
       RESPONSABILITATE.

       Dacă  găsiți  erori  în  traducerea  acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
       ro@lists.sourceforge.net.

Proiectul GNU                                      22 mai 2008                                             dc(1)