marți, 1 februarie 2011

Programarea numerelor mari în Pascal

Reprezentarea zecimală codificată binar se realizează prin exprimarea fiecărei cifre zecimale într-o tetradă binară conform unui anumit cod numeric. Cel mai utilizat este codul zecimal codificat binar, BCD (Binary Coded Decimal). Cifrele de la 0 la 9 sunt reprezentate prin valori binare echivalente, pe cîte 4 poziţii binare: 0 – 0000, 1 – 0001, ..., 9 – 1001. Se observă că din cele 16 valori distincte ce se pot reprezenta pe 4 poziţii binare, doar primele 10 sunt utilizate. Avantajul aceste codificări este corespondenţa  directă între cifra zecimală şi valoarea sa. Reprezentarea numerelor zecimale se realizează în grupuri de cîte 8 cifre binare în două forme: Drept exemplu, în figura 10 sunt redate reprezentările numărului 3278 în forma împachetată şi despachetată. Numerele negative pot fi reprezentate prin cod direct (mărime şi semn) sau prin coduri mai sofisticate: cod zecimal invers sau cod zecimal complementar. Semnul pentru astfel de numere se reprezintă printr-o combinaţie de 4 biţi, care nu se utilizează pentru reprezentarea cifrelor zecimale, de „+” prin 1100, iar „-” prin 1111. Reprezentarea zecimală codificată binar se utilizează pentru aplicaţiile în care se prelucrează, cu operaţii simple, un număr foarte mare de numere: calcule electronice, calculatoare încorporate în aparate de măsură ş.a. Deoarece în aceste cazuri timpul de prelucrare ar fi mai mic decît timpul necesar conversiei din zecimal în binar şi invers (dacă prelucrarea s-ar face în binar), se preferă efectuarea calculelor, folosind reprezentarea zecimală codificată binar. Astfel, nu mai este necesară conversia datelor la introducerea şi extragerea acestora în şi din calculator. §2. Tipuri de date O caracteristică importantă a datelor este tipul acestora. Prin tip se înţelege o mulţime de valori căreia i se poate ataşa un nume, valorile reprezintă constante de acest tip. Tipul stabileşte atît semnificaţia datelor cît şi restricţiile impuse în folosirea lor. Principalele tipuri de date ale limbajului Pascal sunt: În plus programatorul are posibilitatea definirii unor noi tipuri. Una dintre caracteristicile limbajelor de nivel înalt este aceea că, în cazul lor, compilatorul realizează o verificare a tipului astfel încît să existe certitudinea că tipurile de date implicate în calcul sunt compatibile cu operaţiile ce trebuie realizate. În afara calculatorului, valorile de orice tip se reprezintă ca texte, adică printr-o secvenţă de caractere. De exemplu, numerele întregi se pot reprezenta prin secvenţe de cifre zecimale, numerele reale prin cifre şi punct zecimal, iar caracterele prin ele însele. În interiorul calculatorului, însă, lucrurile stau cu totul altfel. Hard-ware-ul unui calculator electronic este format din dispozitive ce se pot afla în două stări fizice distincte. De exemplu, un tranzistor poate conduce sau nu curent electric. Se spune că un dispozitiv cu două stări memorizează o cifră binară sau un bit. Unui grup de N astfel de dispozitive îi corespund 2N stări diferite şi el memorizează n biţi. O astfel de entitate se va numi cuvînt de N biţi. Un cuvînt de 8 biţi poate avea 26 stări diferite, suficiente pentru a putea asocia cîte o stare fiecărui caracter dintr-un set de caractere uzual. Vom spune în acest caz că, fiecare stare codifică un caracter. Un cuvînt de 16 biţi poate avea 65536 stări diferite, adică suficient pentru a putea codifica toate numerele întregi cuprinse între –32768 şi +32767. Celelalte date pot fi codificate în mod asemănător. 3.1.Tipuri de date întregi În Pascal tipurile întregi permit reprezentarea, memorarea şi prelucrarea numerelor întregi. Teoretic, acestea  pot avea valori absolute oricît de mari, dar reprezentarea datelor în cadrul calculatorului nu permite existenţa seturilor de numere infinite. Limbajul Pascal implementează această restricţie furnizînd în mod automat un identificator de constantă, MaxInt, a cărui valoare reprezintă cel mai mare număr ce poate fi conţinut de o variabilă de tip integer. MaxLongInt=2147483647 Operaţiile aritmetice efectuate asupra valorilor de tip întreg vor fi executate corect de către calculator numai dacă toţi operanzii şi toate rezultatele intermediare sunt cuprinse în intervalul –MaxInt şi MaxInt. Dacă aceste valori sunt depăşite, rezultatul devine impredictibil, caz în care se spune că a apărut o „depăşire”  (overflow) şi programul eşuează. Anumite calculatoare semnalizează o asemenea situaţie generînd mesaje de eroare şi determinînd oprirea imediată a execuţiei programului. Există însă şi sisteme de calcul în care depăşirile nu sunt detectate, iar programul poate furniza rezultate eronate, fără ca utilizatorul uman să fie atenţionat. Din acest motiv se consideră că eliminarea posibilităţii apariţiei depăşirilor reprezintă o foarte serioasă problemă a programării. În limbajul de programare Pascal sunt cinci tipuri de date întregi: Shortint, INTEGER, LongInt, BYTE, WORD.

Download Numere mari

Niciun comentariu:

Trimiteți un comentariu