Sunteți pe pagina 1din 17

1.

Calculatoare numerice






Pentru a da o semnificaie noiunii de calculator numeric va trebui definit noiunea
de informaie numeric.
ntr-un sens general, informaia numeric este informaia care poate fi reprezentat
prin semnale ce pot lua un numr limitat de valori distincte (discrete). Se poate asocia fiecrei
valori distincte o cifr, rezultnd astfel codificarea numeric a semnalelor respective.
Numrul total de valori pe care le poate lua un anumit semnal specific baza de numeraie n
care se poate codifica semnalul respectiv.
Dac, de exemplu, un semnal electric poate lua dou valori distincte reprezentate de
0V i 5V, se poate asocia fiecrei valori o cifr binar (0 sau 1), rezultnd codificarea
informaiei n baza 2. Deci informaia numeric este codificarea numeric a unei anumite
categorii de informaie extern.
Calculatoarele numerice se pot ncadra ntr-o categorie mai larg de dispozitive,
numite sisteme numerice. Acestea reprezint dispozitive fizice care au drept scop prelucrarea
sau transmiterea informaiei numerice. Exemple de sisteme numerice: centralele telefonice,
dispozitivele de comand i control ale unor instalaii, etc.
n conepia actual a noiunii de calculator numeric, se impune o restricie privind
prelucrarea informaiei numerice. Aceast prelucrare nu se face oricum, ea fiind dependent
de factorul uman. Un calculator numeric este un dispozitiv fizic capabil s prelucreze o
informaie numeric numit informaie de intrare conform unor specificaii ale factorului
uman, rezultatul prelucrrii, numit informaie de ieire fiind transmis spre exterior.
Vom numi n continuare utilizator al calculatorului factorul uman care acioneaz
asupra calculatorului. Materializarea fizic prin care un utilizator al calculatorului specific
modul n care se face prelucrarea informaiei numerice poart numele de program.
Pentru majoritatea calculatoarelor numerice, informaia numeric este o informaie
binar, informaia extern fiind codificat n cifre binare, astfel nct prelucrarea informaiei
se reduce la anumite operaii elementare, n general logice i aritmetice, care se efectuaz
asupra operanzilor binari.


1.1 Structura unui calculator numeric

Majoritatea calculatoarelor actuale respect anumite criterii de baz stabilite de
matematicianul John von Newman, care definesc n esen structura unui calculator
secvenial. Potrivit acestora, un calculator trebuie s posede urmtoarele elemente:
a. un mediu de intrare prin intermediul c ruia s citesc informaiile de intrare (date
de intrare sau programe);
b. o memorien care s citesc informaiile de intrare i n care s poat introduce n
ordinea dorit rezultatele;
c. o seciune de calcul, capabil s efectueze operaii aritmetice i logice asupra
operanzilor citii dinmemorie;
d. un mediu de ieire prin intermediul cruia s livreze rezulatatele utilizatorului;
e. o unitate de comand capabil s interpreteze instruciunile programului i s
selecteze diverse moduri de aciune pe baza rezultatelor calculelor.
Structura de baz rezultat din aceste criterii se numete structur von Newman i majoritatea
calculatoarelor construite o utilizeaz. Un calculator cu aceast structur este organizat n
mod fundamental ca n figura 1.1:













Cu linie continu s-a notat circulaia informaiei, iar cu linie punctat semnalele de comand
ale unitii de camand.
Natura exact a componentelor care constituie cele cinci seciuni poate varia foarte
mult, unele seciuni se pot suprapune sau pot utiliza componente n comun, dar funciile
asociate celor cinci seciuni pot fi clar identificate n orice calculator numeric.
Memoria reprezint elementul central al calculatorului n sensul c ea constituie sursa
sau destinaia oricrui transfer de informaie. Memoria poate fi asimilat intuitiv cu o matrice,
fiecare element al matricii constituind o locaie de memorie, creia i se asociaz un numr de
identificare, numit adres de menorie. Cantitatea de informaie binar (numrul de cifre
binare) care poate fi memorat ntr-o locaie de memorie se numete lungimea locaiei de
memorie. Dei memoriile sunt structurate diferit la diferite calculatoare, vom numi cuvnt de
memorie cantitatea cea mai mic de informaie binar care se poate adresa (la care se poate
avea acces individual).
La calculatoarele numerice moderne, o locaie de memorie conine n mod uzual opt
cifre binare (care se numete octet sau byte), iar cuvintele de memorie variaz ntre 8 bii i
64 de bii. Capacitatea memoriei unui calculator reprezint numrul total de cuvinte de
memorie pe care aceasta le conine. Considernd c un cuvnt de memorie are o lungime de
un octet, principalele uniti de msur utilizate sunt urmtoarele:
1 ko = 1024 oct ~ 10
3
oct
1 Mo = 1024 ko ~ 10
6
oct
1 Go = 1024 Mo ~ 10
9
oct
De exemplu, pentru calculatoarele personale, memoriile uzuale au capaciti de ordinul
zecilor de Mo.
Funciile de baz ale seciunilor de intrare i ieire sunt cele de introducere i
extragere a informaiei n/din calculator. n afara acestora mai exist dou funcii importante:
cea de tampon i de conversie.
Funcia de tampon asigur corelaia ntre prelucrarea rapid a informaiei n interiorul
calculatorului i lumea extern a acestuia, relativ lent. De exemplu, memoria
calculatorului poate comunica cu unitatea de prelucrare cu o vitez de ordinul milioanelor de
cuvinte pe secund, pe cnd informaia extern se poate introduce/extrage cu maxim cteva
sute sau mii de caractere pe secund. Funcia de conversie asigur conversia informaiei
Intrare Memorie Ieire
Unitate
de calcul
Unitate de comand
Figura 1.1. Calculator cu structur von Newman
externe (n mod uzual caractere: litere, cifre, diferite semne de punctuaie) n format binar,
intern calculatorului.
La calculatoarele moderne, seciunile de intrare i ieire sunt constituite din dou pri
distincte: dispozitivele fizice care realizeaz efectiv introducerea i extragerea datelor, numite
i dispozitive periferice, precum i dispozitivele care coordoneaz transferul informaiei ntre
dispozitivele periferice i memoria intern. Acestea din urm se numesc n mod uzual
interfee de intrare/ieire i se consider intene calculatorului, pe cnd dispozitivele
periferice se consider externe. Funcia de conversie este asociat dispozitivelor periferice, pe
cnd funcia de tampon se asociaz interfeelor de intrare/ieire.
Exist o mare diversitate de dispozitive periferice, care se pot grupa dup funciilor
asociate:
- dispozitive asociate funciei de intrare, numite dispozitive de intrare;
- dispozitive asociate doar funciei de ieire, numite dispozitive de ieire;
- dispozitive asociate ambelor funcii, numite dispozitive de intrare/ieire.
Prima categorie de dispozitive servete introducerii informaiei n calculator. Dintre cele mai
utilizate dipozitive de intrare se pot enumera: PC-mouse-ul (care permite introducerea
informaiilor sub form de coordonate), precum i ecranul sensibil la atingere (care permite
selectarea unor comenzi prin selectarea unor puncte de pe ecran). Dispozitivele periferice de
ieire permit afiarea rezultatelor prelucrrilor. Cele mai utilizate dispozitive de ieire sunt
imprimantele, care pot imprima pe hrtie informaia de ieire rezultat n urma conversiei.
Dispozitivele de intrare/ieire permit att introducerea, ct i extragerea informaiei,
iar n cadrul lor exist dou categorii importante: terminalele i dispozitivele magnetice i
optice. Terminalele reprezint cel mai simplu mijloc de acces la calculatoarele numerice. Un
terminal conine dou componente distincte: tastatura, prin intermediul creia se introduc
informaiile (programe i date) i display-ul, care afieaz informaia de ieire utiliznd
principiul tubului catodic.
Dispozitivele magnetice i optice, numite i memoria extern a calculatorului, permit
stocarea temporar a informaiilor, n mod uzual n format binar. n cazul dispozitivelor
magnetice, stocarea informaiei se realizeaz utiliznd principii magnetice, pe cnd n cazul
dispozitivelor optice se utilizeaz tehnologii laser. Cele mai utilizate dispozitive magnetice
sunt unitile de discuri flexibile i cele de discuri fixe. Discurile fixe (numite i hard-discuri)
posed o capacitate mare de memorare a informaiei, precum i un timp redus de acces la
informaie. Programele sistemulor de operare al calculatoarelor se stocheaz n mod uzual pe
hard-discuri, ca i majoritatea programelor folosite de calculatoare. Avantajul discurilor
flexibile l constituie faptul c sunt portabile, permind transferul uor al informaiei ntre
diverse calculatoare compatibile. Cele mai utilizate dispozitive optice sunt unitile de CD-
ROM. Discurile optice sunt de asemenea portabile, dar au o capacitate mai mare de stocare a
informaiei dect discurile flexibile.
Seciunea de prelucrare, denumit i unitatea logico-aritmetic (care se abreviaz n
mod uzual ALU) realizeaz operaiile elementare pe care calculatorul le poate efectua asupra
operanzilor obinui din memorie, rezultatul prelucrrii fiind de asemenea scris n memoria
intern. Operaiile uzuale sunt aritmetice i logice, operanzii fiind octei sau cuvinte de
memorie.
Seciunea de comand recepioneaz instruciunile programului din memoria intern,
le decodific i elaboreaz semnale de comand corespunztoare ctre celelalte seciuni,
pentru a asigura efectuarea operaiilor dorite. Combinaia dintre unitatea de prelucrare i cea
de comand se numete n mod uzual unitate central de prelucrare (abreviat CPU).
Considernd dispozitivele periferice separate de celelalte seciuni care alctuiesc un
calculator numeric, o alt reprezentare grafic a structurii funcionale a unui asemenea
calculator este prezentat n figura 1.2.


















S-au utilizat urmtoarele notaii:
- M: memoria intern;
- ALU: unitatea logico-aritmetic;
- UC: unitatea de comand;
- I/O: interfa de intrare/ieire;
- MAG: magistrala intern de informaie, prin care se transmit date i comenzi;
- DP: dispozitiv periferic.
Sgeile indic sensul de transmitere a informaiei. Magistrala intern reprezint totalitatea
circuitelor electronice folosite pentru transferul informaiei ntre modulele componente ale
calculatorului. Pentru simplitate nu s-a reprezentat distinct fluxul circulaiei comenzilor de cel
al datelor.
Numrul dispozitivelor periferice i al intefeelor de intrare/ieire variaz la diferitele
calculatoare, din acest motiv n figur s-au reprezentat doar dou.
O apariie aparte n lumea calculatoarelor din ultimele dou decenii a constituit-o
microprocesorul. Denumit iniial computer-on-chip, microprocesorul reprezint o
implementare n tehnologia circuitelor integrate a unei anumite structuri de calculator
conceput de inginerul M.E. Hoff. Utilizarea microprocesoarelor s-a generalizat n domeniul
sistemelor numerice. n domeniul calculatoarelor numerice, microprocesorul nglobeaz
funciile seciunilor de prelucrare i de comand, devenind astfel o unitate central de
prelucrare.
Calculatoarele dezvoltate n jurul unui microprocesor se numesc n mod uzual
microcalculatoare. Exist la ora actual calculatoare care utilizeaz mai multe
microprocesoare, fie cu rolul de uniti centrale, fie cu funcii specializate. De asemenea,
multe dispozitive periferice folosesc microprocesoare pentru coordonarea funciilor acestora.


1.2 Programe, limbaje de programare i sisteme de operare

Prelucrarea informaiei numerice ntr-un calculator numeric se face conform unei secvene de
comenzi care formeaz un program main. Un program main reprezint o secven
ordonat de comenzi, numite instruciuni main, care corespund operaiilor elementare pe
care calculatorul le poate efectua.
M ALU UC
MAG
I/O I/O
DP
DP
..
..
Figura 1.2. Structura funcional a unui calculator numeric
Pentru a putea fi executat, un program main trebuie s fie ncrcat n memoria
intern a calculatorului. Execuia unui program main nsemn execuia secvenial a
instruciunilor ce l compun: instruciunile se execut una dup alta, ncepnd cu prima.
Deoarece o instruciune main descrie o anumit operaie aritmetic sau logic
efactuat asupra unor operanzi binari, ea trebuie s reprezinte ntr-o form codificat tipul
operaiei, precum i operanzii corespunztori. Execuia unei instruciuni main se realizeaz
n mai multe etape succesive:
- transferul instruciunii din memoria intern n unitatea de control;
- decodificarea instruciunii n cadrul unitii de control;
- execuia operaiei reprezentate de instruciune, prin intermediul semnalelor de
comand generate de unitatea de control.
Semnalele generate de unitatea de control depind de tipul instruciunii precum i de operanzii
acesteia. De exemplu, pentru adunarea a dou numere, unitatea de control genereaz semnale
de comand pentru efectuarea urmtoarelor aciuni:
- transferul primului operand din memoria intern n unitatea logico-aritmetic;
- transferul celui de-al operand din memoria intern n unitatea logico-aritmetic;
- efectuarea operaiei de adunare n unitatea logico-aritmetic;
- transferul rezultatului din unitatea logico-aritmetic n memoria intern.
Un program main este dificil de scris datorit modului de codificare binar a operaiilor
elementare: o instruciune main este de fapt un ir de cifre binare cu o anumit semnificaie
care difer de la un calculator la altul. n mod uzual programele se descriu ntr-o form
simbolic prin intermediul unor limbaje de programare i transformate apoi n mod automat
n programe main.
Un limbaj de programare reprezint un mijloc de comunicare ntre utilizator i
calculator. Limbajele de programare fiind limbaje de comunicare, posed princpalele
caracteristici ale acestora: sintaxa, semantica i pragmatica. Sintaxa cuprinde toate regulile
ce descriu mulimea propoziiilor limbajului, semantica reprezint o mulime de reguli care
determin sensul fiecrei propoziii din limbaj, iar pragmatica cuprinde o mulime de reguli
ce descriu efectul propoziiilor limbajului asupra unui receptor (n cazul limbajelor de
programare acesta este reprezentat de calculatorul numeric).
Un programator trebuie s cunoasc sintaxa i semantica unui anumit limbaj de
programare, pentru a putea s scrie programe corecte din punct de vedere sintactic i a cror
semnificaie s corespund unei metode de rezolvare a unei anumite probleme curente.
Pragmatica unui limbaj de programare este specific sistemelor de calcul, deoarece ele
execut aciunile descrise n programe.
Limbajele de programare conin n mod uzual dou tipuri de propoziii: propoziii
imperative, (numite instruciuni) i propoziii declarative (numite declaraii). Din acest punct
de vedere, un program este o secven de instruciuni i declaraii ale unui limbaj de
programare.
Numrul mare de limbaje de programare aprute face dificil o sistematizare a
acestora, de aceea eventualele clasificri sunt destul de flexibile. Cea mai uzual clasificare
se refer la nivelul de apropiere al limajelor de calculator. Din acest punct de vedere,
limbajele de programare pot fi:
- de nivel jos (cobort);
- de nivel nalt.
Limbajele de programare de nivel jos se apropie mai mult de operaiile elementare ale unui
calculator numeric. Limbajele reprezentative pentru acestea sunt limbajele de asamblare.
Instruciunile lor reprezint n general o form simbolic pentru operaiile elementare ale
calculatoarelor numerice. n plus, aceste limbaje posed i anumite faciliti, cum sunt
propoziiile declarative. Deoarece fiecare tip de calculator are propriile sale operaii
elementare, un anumit limbaj de asamblare depinde de tipul de calculator.
Mai cobort dect limbajul de asamblare este limbajul main. Limbajul main este
intern calculatorului i reprezint codificarea ntr-o form cunoscut de calculator a
operaiilor sale elementare. El a fost primul limbaj folosit pentru programarea calculatoarelor.
Limbajele de nivel nalt nu depind de un anumit tip de calculator, fiind orientate n
mod uzual spre domenii de probleme: tiinifice, economice, de control a sistemelor fizice,
etc. Aceste limbaje permit descrierea unor operaii mult mai complexe dect operaiile
elementare ale calculatoarelor, iar pentru a fi recunoscute de un anumit calculator este
necesar transformarea fiecrei propziii din aceste limbaje ntr-o multime de instruciuni
main.
Principalele caracteristici ale programelor scrise n limbaje de programare de nivel
nalt sunt:
- portabilitatea, care specific faptul c un program scris ntr-un limbaj de
programare de nivel nalt poate fi executat pe mai multe calculatoare numerice,
care au posibilitatea transformrii programului ntr-un program main echivalent;
- lizibilitatea, care specific faptul c aceste limbaje permit scrierea unor programe
inteligibile pentru o clas mai larg de utilizatori dintr-un anumit domeniu;
- mentenabilitatea, care permite o modificare uoar a programelor i un timp scurt
de punere la punct a lor;
- eficiena, care permite rezolvarea problemelor ntr-un mod eficient i cu un minim
de efor din partea utilizatorilor.
Limbajele de programare de nivel nalt pot fi clasificate n dou importante clase: limbaje
procedurale i limbaje neprocedurale.
O concepie comun privind un program procedural este procesarea secvenial a
instruciunilor acestuia, n cazul n care nu sunt instruciuni de salt sau de ramificare. n acest
caz programatorul trebuie s specifice exact n program modul n care poate fi determinat
soluia problemei. Exist dou tipuri importante de programare procedural: programarea
imperativ i programarea funcional.
Programarea imperativ sau orientat pe instruciuni presupune o structur von
Newman a unui calculator pe care ruleaz un program. Limbajele caracteristice pentru acest
tip de programare sunt FORTRAN, Ada, Pascal, COBOL, BASIC. Asemenea limbaje ofer
suport pentru noiuni precum variabile, operaii de atribuire i instruciuni repetitive.
Limbajele mai moderne dispun de faciliti precum recursivitatea i modularitatea.
Programarea funional se deosebete de limbajele orientate pe instruciuni. Ideea
fundamental a programrii funcionale const n combinarea unor funcii simple pentru a
genera funcii din ce n ce mai complicate. Limbajul reprezentativ pentru acest tip de limbaje
este limbajul LISP.
ntr-un limbaj neprocedural, programatorul trebuie s descrie problema i s specifice
care este scopul problemei de rezolvat, lsnd calculatorul s se determine cum se realizeaz
aceasta. Din mulimea limbajelor neprocedurale, clasa de limbaje cea mai utilizat este cea a
limbajelor declarative. Programarea declarativ separ scopul de metodele folosite pentru
ndeplinirea scopului respectiv. Pentru implementarea modelului declarativ au fost create un
numr de limbaje i limbaje de programare asociate. Dou clase importante de limbaje
declarative sunt limbajele orientate pe obiecte i limbajele logice.
Programarea orientat pe obiecte este o programare considerat parial declarativ i
parial imperativ. Ideea de baz este aceea de a proiecta un program prin considerarea
datelor folosite n program ca obiecte i implementarea apoi a operaiilor ntre aceste obiecte.
Termenul de programare orientat pe obiecte a fost folosit prima dat n limbaje ca Smalltalk,
care a fost n mod special proiectat s lucreze cu obiecte. Un limbaj uzual care permite
orientarea pe obiecte este limbajul C++.
La baza programrii logice st logica predicatelor de ordinul nti i mai ales clauzele
Horn, folosite pentreu a descrie n termeni logici o anumit problem de rezolvat. Limbajul
reprezentativ pentru aceast categorie este limbajul PROLOG.
n ultim instan, orice program scris de utilizator ntr-un limbaj de programare este
transformat ntr-un program main echivalent. Aceast operaie de transformare, precum i
alte operaii de coordonare a funciilor calculatorului sunt realizate de programe specializate.
Denumirea consacrat pentru acest pachet de programe este cea de sistem de operare.
Sistemul de operare al unui calculator are rolul de a coordona controlul resurselor
calculatorului, de a optimiza performanele sale i de a simplifica utilizarea sa efectiv.
Resursele unui calculator sunt reprezentate de memoria intern, unitatea central de
prelucrare i dispozitivele periferice.
Un calculator poate fi privit ca fiind compus din dou pri distincte: hardware-ul,
adic totatlitatea dispozitivelor fizice organizate n cele cinci seciuni de baz, precum i
software-ul, adic totalitatea programelor utilizate pentru realizarea diferitelor sarcini.
Sistemul de operare aparine componentei software i este format din grupuri de programe
care au drept scop coordonarea diferitelor activiti dintr-un calculator. Dintre principalele
pachete de programe se pot enumera:
- programe pentru gestionarea proceselor calculatorului;
- programe pentru gestionarea memoriei interne;
- programe pentru gestionarea dispozitivelor periferice;
- programe pentru gestionarea dialogului cu utilizatorul;
- programe de translatare;
- programe utilitare.
Exist dou principale tipuri de dialog cu utilizatorul: prin linie de comand i prin
intermediul unei interfee grafice. n primul caz calculatorul ateapt introducerea unor
comenzi de tip text pe care le interpreteaz i le execut, pe cnd n al doilea caz comenzile
sunt specificate prin intermediul unor pictograme i selectate cu ajutorul unui cursor grafic.
De exemplu, sistemele de operare MS-DOS ale firmei Microsoft utilizeaz modul linie de
comand pentru dialogul cu utilizatorul, pe cnd sistemele Windows ale aceleiai firme
utilizeaz interfee grafice. Sistemele Unix sunt n general orientate spre modul linie de
comand.
Programele utilitare faciliteaz lucrul utilizatorului la calculator i sunt de o mare
variatate. O categorie important o formeaz editoarele i procesoarele de texte. Acestea sunt
programe ce permit introducerea n calculator i modificarea informaiilor de tip text.
Programele de translatare permit transformarea programelor scrise n diferite limbaje
de programare n programe echivalente scrise n limbajul main. Exist dou categorii
importante de programe de translatare; din prima categorie fac parte interpretoarele, iar din
categoria a doua asambloarelei compilatoarele.
Interpretoarele traduc i execut programul iniial instruciune dup instruciune, pe
cnd asambloarele i compilatoarele transform tot programul iniial fr a-l executa,
execuia lui efecutndu-se ulterior. Asambloarele sunt utilizate n cazul programelor scrise n
limbaje de asamblare, iar compilatoarele pentru programe scrise n limbaje de programare de
nivel nalt.
Un compilator este specific att pentru fiecare tip de calculator, ct i pentru fiecare
limbaj de programare. S considerm, de exemplu, dou tipuri de calculatoare, X i Y, un
limbaj de programare L, precum i dou compilatoare: compilatorul C1 pentru limbajul L i
calculatorul X, precum i compilatorul C2 pentru limbajul L i calculatorul Y. Acelai
program P scris n limbajul L poate genera dou programe main diferite: programul P1
dac este translatat cu ajutorul compilatorului C1 i programul P2 dac este translatat cu
ajutorul compilatorului C2.
Procesul de translatare a unui program scris ntr-un limbaj de programare cu ajutorul
unui compilator se numete compilare.


1.3 Rezolvarea problemelor cu ajutorul calculatorului numeric

Rezolvarea unei probleme cu ajutorul calculatorului numeric presupune parcurgerea mai
multor etape, nu neaprat toate realizate de ctre aceeai persoan. Principalele etape
specificate n ordinea lor temporal de realizare sunt urmtoarele:

1. Analiza problemei. Aceasta este una dintre cele mai dificile etape i presupune cunotine
din domeniul problemei de rezolvat. n principal, n cadrul acestei etape trebuie
determinate:
- mrimile de intrare i de ieire ale problemei;
- relaiile care trebuie utilizate, precum i ordinea i condiiile de utilizare, pentru a
obine mrimile de ieire plecnd de la cele de intrare.
n funcie de specificul problemei de rezolvat, n cadrul etapei de analiz pot apare i alte
aciuni. De exemplu, n cazul unei probleme de fizic, vor trebui unificate relaiile
folosite, precum i unitile de msur.

2. Descrierea metodei de rezolvare a problemei (scrierea algoritmului). i aceasta este o
etap relativ dificil care const n descrierea succesiunii operaiilor ce permit
determinarea mrimilor de intrare plecnd de la mrimile de intrare, innd cont de
relaiile determinate anterior. n mod uzual, ieirea acestei etape const n descrierea unui
algoritm de rezolvare al problemei.

3. Scrierea programului (codificarea algoritmului). Aceasta este o etap mai simpl dect
precedentele i const n alegerea unui limbaj de programare adecvat domeniului
problemei i codificarea algoritmului obinut la etapa anterioar n instruciuni i
declaraii ale limbajului de programare ales. Ieirea acestei etape const n textul
reprezentnd programul de rezolvare al problemei.

4. Dezvoltarea programului. n cadrul acestei etape se genereaz programul main
echivalent i se elimin eventualele erori ale programului, astfel nct acesta s poat fi
executat corect pentru anumite seturi de date de intrare ale problemei.

5. Punerea la punct a programului. Aceasta este o etap care poate fi de durat mai mare i
const n depistarea erorilor de funcionare a programului pentru un numr ct mai mare
de seturi de date de intrare.

6. ntreinerea programului. n tipul etapei de ntreinere se supravegheaz periodic
funcionarea programului i se efectueaz eventual anumite modificri n cazul anumitor
modificri ale problemei. n aceast etap pot apare diferite versiuni nbuntite ale
programului.

n cadrul etapei de dezvoltare a unui program se utilizeaz diferitele faciliti oferite de ctre
un calculator pentru transformarea succesiv a sa pn la stadiul de program main i apoi
execuia acestuia.
Programul scris de un utilizator ntr-un limbaj de programare poart numele de
program surs. Acesta este un text coninnd declaraii i instruciuni ale limbajului. Prima
etap din cadrul dezvoltrii programului este introducerea programului surs n calculator i
memorarea sa de regul pe un dispozitiv magnetic. Aceast etap se realizeaz n mod uzual
cu ajutorul unui editor de texte.
Urmtoarea etap const n procesul de compilare i utilizeaz un compilator al
limbajului respectiv pentru calculatorul pe care se lucreaz. Programul rezultat n urma
compilrii poart numele de program obiect i este memorat n mod uzual tot pe un disc
magnetic. n urma procesului de compilare, programul surs este transformat ntr-un program
n limbajul main al calculatorului respectiv.
De multe ori, procesul de compilare nu este suficient pentru generarea unui program
executabil de ctre calculator. De exemplu, unele programe pot conine mai multe module
separate, care trebuie apoi asamblate ntr-un singur program. Din acest motiv, nainte de
execuia unui program, exist n o etap suplimentar, numit ediia de legturi, sau etapa de
linkeditare. n urma acestei etape rezult programul main direct executabil, care de
asemenea este memorat n mod uzual pe discul magnetic.
n cadrul acestei etape, n afar de asamblarea diferitelor module nt-unul singur, se
mai execut diferite operaii cum sunt: includerea n programul executabil a diferitelor
subprograme (funcii sau proceduri) care sunt apelate n program i se afl n anumite
biblioteci de subprograme, precum i determinarea adreselor exacte de memorie unde se vor
ncrca instruciunile programului la execuie i a adreselor diferiilor operanzi utilizai n
cadrul instruciunilor.
Ultima etap a dezvoltrii unui program este execuia programului direct executabil
rezultat la etapa anterioar. Programul se ncarc de pe discul magnetic n memoria intern,
iar execuia nseamn de fapt execuia secvenial a instruciunilor ce l compun, aa cum s-a
specificat n paragraful 1.2.
n cazul n care la una dintre etapele prezentate apar erori, acestea vor trebui detectate
i va trebui modificat programul. Modificrile se pot efectua doar asupra programului surs,
cu ajutorul aceluiai editor de de texte care a servit i la introducerea programului n
calculator. Etapa de introducere a programului i de modificare a acestuia se numete
editarea programului.
n mod uzual, calculatoarele ofer diferite faciliti privind dezvoltarea programelor
scrise ntr-un anumit limbaj de programare. Un exemplu este mediul intergrat de
programare care nglobeaz diferite componente ce permit efectuarea operaiilor aferente
dezvoltrii programelor. Un mediu integrat de programare conine minimal un compilator al
limbajului asociat, un editor de texte, un program depanator (debugger) cu ajutorul cruia se
testeaz mai uor programele, precum i accesul la diferitele funcii ale calculatorului (cum
sunt cele de lucru cu fiierele, de linkeditare, de execuie a programelor, etc.).

O diagram sugestiv care descrie etapele prezentate anterior este prezentat n figura 1.3.


1.4 Reprezentarea informaiei n calculatoarele numerice

Dup cum s-a precizat n paragraful 1.1, informaia numeric reprezint o anumit codificare
a informaiei externe folosind semnale care au un numr fix de valori. Cu alte cuvinte,
informaia numeric este o codificare a informaiei externe folosind cifre ale unei anumite
baze de numeraie, numrul cifrelor bazei fiind numrul de valori distincte ale semnalelor
interne calculatorului. n mod uzual, baza de numeraie utilizat este baza doi, datorit
uurinei de a gestiona semnale electrice cu dou valori principale.
ntruct majoritatea operaiilor din cadrul programelor sunt prelucrri numerice, n
acest paragraf vor fi referite dou aspecte importante: sistemele de numeraie i reprezentarea
numerelor n calculatoarele numerice.






































Pentru reprezentarea numerelor ntr-o baz b de numeraie se utilizeaz o mulime B
b

ce conine b simboluri numite cifrele bazei. Fiecare cifr ceB
b
corespunde unui numr
natural n
c
care are proprietatea: 0 s n
c
< b. Rezult c bazei b i corespunde o alt mulime C
b

de numere naturale, care este n coresponden biunivoc cu mulimea B
b
.
Pentru principalele baze de numeraie utilizate, mulimile de simboluri sunt
urmtoarele:
- pentru baza 10: B
10
= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
- pentru baza 2: B
2
= {0, 1}
- pentru baza 8: B
8
= {0, 1, 2, 3, 4, 5, 6, 7}
Da
Da
Da
Nu
Nu
Nu
Scrierea programului
Editarea programului surs
Compilarea programului surs
Modificarea
programului
surs
Linkeditarea
programului
obiect
Sunt
erori?
Sunt
erori?
Execuia
programului
executabil
Modificarea
programului
surs
Sunt
erori?
Modificarea
programului
surs
Punerea la punct a programului
Figura 1.3. Etapele rezolvrii unei probleme
- pentru baza 16: B
16
= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}

Observaie. Nu trebuie fcut confuzie ntre cifrele 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 i numerele
naturale corespunztoare. De exemplu, cifra 7 este un simbol care reprezint numrul apte
(care este o noiune abstract). Cifrele A, B, C, D, E i F corespund respectiv numerelor: 10,
11, 12, 13, 14, 15.

Numerele ntregi i reale se pot reprezenta folosind cifrele unei baze de numeraie.


1.4.1 Reprezentarea numerelor ntregi

Folosind baza b, orice numr natural n se poate scrie ntr-o form polinomial astfel:
n = a
k
*b
k
+a
k-1
*b
k-1
+ +a
2
*b
2
+a
1
*b+a
0

unde numerele a
i
, i=0,1, , k, cu proprietatea: 0 sa
i
< b, pot fi unic determinate.
De exemplu, pentru numrul m=6 i b=2, exist urmtoarea form polinomial:
6 = 1*2
2
+1*2
1
+0
Dac baza b este precizat, numrul n poate fi scris doar cu ajutorul simbolurilor c
k
, c
k-1
, ...,
c
1
, c
0
, din mulimea B
b
, care corespund numerelor a
k
, a
k-1
, ..., a
1
, a
0
(din mulimea C
b
):
n = c
k
c
k-1
c
1
c
0
Aceast form de scriere se numete scriere poziional, pentru c cifrele c
i
, i=0,1, , k,
ocup o anumit poziie indicat de exponentul bazei.
De exemplu, pentru numrul n=6 i baza b=2, scrierea poziional este: n=110
(2)
.

Observaie. Pentru evitarea confuziilor legate de baza de numeraie, aceasta se scrie n mod
uzual dup ultima cifr ca indice inferior.

Deoarece orice numr ntreg m este de forma n, unde n este un numr natural, rezult c
scrierea poziional a numrului ntreg m n baza b este urmtoarea:
m = c
k
c
k-1
c
1
c
0 (b)

n cazul reprezentrii numerelor ntregi n calculatoarele numerice, numrul de cifre binare
este limitat, ceea ce duce la limitarea numrului de numere ntregi care se pot reprezenta. n
mod uzual, numerele ntregi se reprezint pe 2 sau 4 octei, ceea ce nseamn 16 sau 32 de
cifre binare pentru reprezentare.
De exemplu, pentru cazul reprezentrii pe 16 bii (k=15), se vor utiliza doar 15 bii
pentru reprezentarea cifrelor numerelor (o cifr binar este alocat pentru memorarea
semnului numerelor). Astfel, numrul pozitiv maxim care se poate reprezenta este:
n
max
= 1*2
14
+1*2
13
+ +1*2 +1=2
15
-1=32767
Rezult c mulimea numerelor ntrei reprezentabile intern n acest caz este:
N
A
= {-32767, -32766, , -1, 0, 1, , 32767}


1.4.2 Reprezentarea numerelor reale

Un numr real poate fi privit ca suma dintre partea sa ntreg i partea fracionar:
x = [x]+{x}
De exemplu:
32.27 = 32+0.27
Delimitarea cifrelor prii ntregi de cea fracionar se realizeaz n mod uzual cu ajutorul
cracterului punct, numit i punct zecimal, dar se poate utiliza i virgula zecimal.
Pentru determinarea reprezentrii unui numr real x, se pleac de la o form
asemntoare formei polinomiale a numerelor ntregi:
x = ( a
k
*b
k
+a
k-1
*b
k-1
+ +a
1
*b+a
0
+a
-1
*b
-1
+a
-2
*b
-2
+ +a
-m
*b
-m
+ )
unde:
0sa
i
<b, pentru orice i=0,1, , k, cu a
k
=0
i
0sa
-j
<b, pentru orice j
Nu ntotdeauna ns partea fracionar are un numr finit de cifre. Din acest motiv numerele
reale se reprezint cu o aproximaie. Considernd un numr cu m cifre pentru partea
fracionar, numrul x se poate scrie astfel:
x = ( a
k
*b
k
+a
k-1
*b
k-1
+ +a
1
*b+a
0
+a
-1
*b
-1
+a
-2
*b
-2
+ +a
-m
*b
-m
) + r
m

unde r
m
este un rest care verific inegalitile:
0sr
m
<b
-m

Scrierea poziional pentru aproximarea numrului x este:
x = c
k
c
k-1
c
1
c
0
. c
-1
c
-2
c
-m (b)

Relaia anterioar definete reprezentarea n virgul fix a numerelor reale, pentru c
numrul cifrelor pentru partea ntraeag i partea fracionar este predefinit. Principalul
inconvenient se datoreaz faptului c nu poate reprezenta corect numerele foarte mari sau
foarte mici n modul (acelea care necesit multe cifre la partea ntreag sau fracionar).
Forma uzual de reprezentare a numerelor reale la alculatoarele moderne se numete
n virgul mobil. Pentru aceasta, numerele trebuie aduse la forma urmtoare:
x = (-1)
s
m b
e

unde b reprezint baza de numeraie, m este un numr real supraunitar, numit matis, de
forma:
m = a
0
.c
-1
c
-2
...c
-m
,
e este un numr ntreg reprezentnd exponentul lui x, iar s reprezint semnul numrului:
- s=0, dac x>0,
- s=1, dac x<0
Numrul zero se reprezint n mod distinct. Deoarece, n reprezentarea normalizat, trebuie
ca a
0
=0, ar trebui ca numrul 0 s nu se poat reprezenta. Prin convenie, deoarece cifra a
0

este implicit n reprezentarea intern (practic ea nu se reprezint), numrul zero se
reprezint intern cu toate cifrele egale cu zero.
O notaie uzual este notaia semilogaritmic, n care baza se scrie ca indice inferior,
iar exponentul la acelai nivel cu mantisa. De exemplu, pentru numrul 1.3934*10
2
, notaia
semilogaritmic a sa este: 1.3934
(10)
2.
Reprezentarea n virgul mobil nu este unic, acesta fiind i motivul denumirii de
virgul mobil. De exemplu, urmtoarele forme reprezint acelai numr:
5420 = 5.42
(10)
3 = 0.542
(10)
4 = 0.0542
(10)
5 =
O reprezentare n virgul mobil este normalizat, dac cifra reprezentnd partea ntreag a
mantisei este diferit de cifra 0:
[m] > 0
Reprezentarea normalizat este unic pentru fiecare numr real.
Rezult c pentru a reprezenta un numr real n virgul mobil normalizat n baza de
numeraie b, trebuie determinate dou mulimi de cifre: cifrele mantisei i cifrele
exponentului. Cifrele exponentului se determin folosind reprezentarea numerelor ntregi, iar
cele ale mantisei se determin folosind reprezentarea numerelor reale n virgul fix. Ca i n
cazul reprezentrii n virgul fix, numrul cifrelor mantisei poate fi infinit. Notnd cu l
numrul de cifre ale exponentului, reprezentarea n virgul mobil normalizat are
urmtoarea form:
x = a
0
.m
-1
m
-2
m
-n

(b)
e
l-1
e
l-2
e
1
e
0,
a
0
=0.
Pentru reprezentarea n calculator, trebuie alocai doi bii pentru semnul numrului, respectiv
pentru semnul exponentului, restul de cifre binare fiind alocate cifrelor mantisei i
exponentului. Datorit faptului c pentru mantis se pot aloca doar un numr finit de cifre,
reprezentarea ntr-un calculator a numerelor reale este aproximativ. Numrul cifrelor
exponentului determin ordinul de mrime al numrului reprezentat, pe cnd numrul cifrelor
mantisei determin precizia de reprezentare. n mod uzual, numrul de cifre alocat mantisei
este mai mare dect cel alocat exponentului. Notnd cu n numrul de cifre alocate mantisei i
cu k numrul de cifre alocate exponentului, reprezentarea ntr-un calculator a numerelor reale
are urmtoarea form:
x = a
0
.m
-1
m
-2
m
-n

(2)
e
k-1
e
k-2
e
1
e
0

unde: 0sm
-i
s1 i 0se
j
s1 pentru i=1,2, , n i j=0,1, , k-1.
S considerm n continuare c pentru reprezentarea numerelor reale ntr-un
calculator se utlizeaz 4 octei, adic 32 de bii; dintre acetia, 6 bii se aloc cifrelor
exponentului i 24 pentru cifrele mantisei: m=24, k=6.
Cel mai mare numr pozitiv care se poate reprezenta este:
x
max
= 1.111 1*2
111111
~ 1.7*10
38

Cel mai mic numr real pozitiv care se poate reprezenta este:
x
min
= 1.000 1*2
-111111
~ 2.9*10
-39

Rezult c mulimea numerelor reale reprezentabile n acest sistem este inclus n mulimea:
[-x
max
, -x
min
] {0} [x
min
, x
max
]
Numerele mai mici n modul dect x
min
reprezint o depire inferioar de virgul mobil i
n mod uzual sunt setate la zero n timpul calculelor; numerele mai mari n modul dect x
max

reprezint o depire superioar de virgul mobil i n mod uzual genereaz o eroare n
execuia programelor.
Nu toate numerele ns din mulimea anterioar se pot reprezenta. S considerm
numrul:
x
1
= 1.100110011000001000000000
2
100010
care reprezint numrul real 179.015625. Urmtorul numr care se poate reprezenta este:
x
2
= 1.100110011000001000000001
2
100010
care reprezint numrul real 179.0156402587890625. Aceasta nsemn c numrul x
1
este
folosit pentru reprezentarea tuturor numerelor reale din intervalul [x
1
, x
2
).
Rezult c mulimea R
A
a numerelor reale reprezentabile este o mulime finit, fiecare
numr din aceast mulime reprezentnd aproximarea numerelor dintr-un anumit interval de
forma celui de mai sus. Numerele din mulimea R
A
se numesc n mod uzual numere main.
Prima problem legat de reprezentarea ntr-un calculator a numerelor reale este
modul n care se aproximeaz un numr xeR
A
cu un numr yeR
A
. Notnd cu rd(x) numrul
main care l aproximeaz pe x, acesta trebuie s satisfac relaia:
|x-rd(x)|s|x-y|, yeR
A
Un mod uzual de determinare a numrului main rd(x) este cel prin rotunjire. S
presupunem c reprezentarea n virgul mobil a numrului xeR
A
este:
x = m*2
e

unde:
|m| = 1.m
-1
m
-2
m
-n

(2)

i: 0sm
-i
s1 pentru i=1,2,
nti se determin un numr p astfel:
p = 1.m
-1
m
-2
m
-n

(2)
, dac m
-n-1
=0
(adic se terg toate cifrele dup m
-n
dac m
-n-1
=0), sau:
p = 1.m
-1
m
-2
m
-n

(2)
+2
-n
, dac m
-n-1
=1
(adic se crete m cu 1 dac cifra m
-n-1
este 1 i se terg toate cifrele urmtoare).
Se determin apoi:
rd
1
(x) = sign(x)*p*2
e


Observaie. Nu pentru orice numr x, numrul rd
1
(x) determinat prin rotunjire aparine
mulimii R
A
. Aceasta se datoreaz numrului finit de cifre alocate exponentului. De exemplu,
pentru m=4 i k=3:
rd
1
(1.10010
2
1110) = 1.1001
2
1110eR
A

Acestea sunt cazuri de depire de exponent.

n toate cazurile pentru care rd1(x)eR
A
, se poate defini reprezentarea intern a numrului real
x astfel:
rd(x) = rd
1
(x)
n cazul operaiilor cu numere reale, pot exista mai multe surse de erori de reprezentare a
numerelor. Prima surs se refer la citirea datelor de intrare. n timpul operaiei de conversie,
pentru fiecare numr real x se determin un numr main corespunztor, rd(x), care n cele
mai multe cazuri este o aproximare a numrului iniial.
Indiferent de sistemul de calcul utilizat, eroarea absolut a numrului rd(x) are o
margine superioar care depinde de numrul cifrelor alocate mantisei. Se poate demonstra
urmtoarea inegalitate:
|(rd(x)-x)/x| s 2
-n+1

Cantitatea eps=2
-n+1
, este o constant numit precizia de calcul a sistemului.
Se poate observa faptul c funcia de rotunjire nu genereaz erori mai mari dect
constanta eps:
rd(x) = x*(1+c), astfel nct |c|seps, xeR.
A doua surs de erori o reprezint chiar operaiile efectuate de ctre calculator. Chiar dac
dou numere, x i y, se reprezint exact n calculator, rezultatul unei operaii aritmetice (x+y,
x-y, x*y, x/y) poate s nu fie un numr main. Operaiile aritmetice nu pot fi reproduse exact
ntr-un calculator. Operaiile principale, +, -, , i / sunt substituite prin operaii aritmetice n
virgul mobil. Notnd cu +*, -*, * i /* aceste operaii, ele pot fi definite cu ajutorul
funciei de rotunjire astfel:
x +* y = rd(x+y)
x -* y = rd(x-y)
x * y = rd(x*y)
x /* y = rd(x/y)
Aceste operaii implic urmtoarele relaii:
x +* y = (x+y)(1+c
1
)
x -* y = (x-y)(1+c
2
)
x * y = (x*y)(1+c
3
)
x /* y = (x/y)(1+c
4
)
cu condiia ca |c
i
|seps.


1.4.3 Trecerea numerelor dintr-o baz n alta

O problem important legat de reprezentarea numerelor este trecerea unui numr dintr-o
baz de numeraie n alta, operaie numit i conversie. Cu alte cuvinte, cunoscndu-se
cifrele unui numr ntr-o baz | de numeraie, trebuie determinate cifrele numrului n alt
baz b, b=|.
n general, trecerea dintr-o baz n alta se face prin intermediul bazei 10, pentru c
toate calculele se fac n mod uzual n aceast baz. Astfel, problema iniial se poate
descompune n dou subprobleme: trecerea unui numr din baza | n baza 10 i trecerea unui
numr din baza 10 n baza b.
ntruct la reprezentarea numerelor reale n virgul mobil se reprezint distinct
mantisa (care este un numr real subunitar) i exponentul (care este un numr ntreg), se vor
prezenta n continuare trecerea dintr-o baz n alta a numerelor ntregi i a celor reale
subunitare.

A. Conversia numerelor ntregi dintr-o baz n alta

Conversia unui numr ntreg dintr-o baz | n baza 10 se realizeaz simplu cu ajutorul formei
polinomiale a numerelor ntegi. S considerm un numr n scris n baza |:
x = c
k
c
k-1
c
1
c
0 (|)
i fie a
k
, a
k-1
, ..., a
1
, a
0
numerele naturale corespunztoare acestor simboluri. Folosind forma
polinomial, numrul n poate fi scrie astfel:
n = a
l
*|
l
+a
l-1
*|
l-1
+ +a
2
*|
2
+a
1
*|+a
0

Efectund toate calculele n baza 10, cifrele rezultatului reprezint chiar forma poziional
numrului n n baza 10.
De exemplu, fie numrul:
n = CD82
(16)

Forma polinomial este:
n = 12*16
3
+ 13*16
2
+ 8*16 + 2,
deoarece simbolurile C, D, 8, 2 corespund numerelor 12, 13, 8, 2. Efectund calculele i
punnd n eviden baza 10, numrul n se poate scrie:
n = 5*10
4
+ 2*10
3
+ 6*10
2
+ 1*10 + 0
ceea ce corespunde urmtoarei forme poziionale n baza 10:
n = 52610
(10)

Operaia de conversie a unui numr din baza 10 ntr-o baz b se realizeaz simplu i n acest
caz dac se efectueaz operaiile n baza 10. Algoritmul de conversie folosete mpriri
repetate: se mparte n la b, iar apoi n mod repetat ultimul ct obinut la b, pn cnd se obine
un ct egal cu zero. Operaiile se pot descrie astfel:
n = k
1
*b + a
0
, unde: 0 s a
0
< b
k
1
= k
2
*b + a
1
, unde: 0 s a
1
< b
k
2
= k
3
*b + a
2
, unde: 0 s a
2
< b
.
k
p-1
= k
p
*b + a
p-1
, unde: 0 s a
p-1
< b
k
p
= 0*b + a
p
, unde: 0 s a
p
< b
irul resturilor obinute corespunde cifrelor numrului n baza b n ordine invers. Notnd cu
c
p
, c
p-1
, ..., c
1
, c
0
simbolurile corespunztoare numerelor a
p
, a
p-1
, ..., a
1
, a
0
, scrierea poziional
a numrului n n baza b este:
n = c
p
c
p-1
c
1
c
0 (b)

De exemplu, pentru numrul n=21 i b=2, operaia de conversie se realizeaz astfel:
21 = 10*2+1
10 = 5*2+0
5 = 2*2+1
2 = 1*2+0
1 = 0*2+1
n = 10101
(2)

B. Conversia prii fracionare a unui numr

Spre deosebire de numerele ntregi, numerele reale subunitare se pot converti doar cu o
anumit aproximaie n unele cazuri. Mai exact, n cazul n care numrul de cifre nu este finit
(numerele iraionale), se vor lua n consideraie doar un numr finit de cifre.
S considerm pentru nceput conversia unui numr din baza | n baza 10. Notnd cu
n numrul cifrelor prii fracionare, numrul x va avea forma:
x = 0.c
-1
c
-2
c
-n (|)

Efectund toate calculele n baza 10, cifrele lui x n aceast baz se determin prin evaluarea
formei exponeniale a numrului. Notnd cu a
-1
, a
-2
, ..., a
-n
, numerele corespunztoare
simbolurilor c
-1
, c
-2
, ..., c
-n
, forma exponenial a numrului x este:
x = a
-1
*b
-1
+ a
-2
*b
-2
+ + a
-n
*b
-n

Efectund calculele n baza 10, cifrele numrului rezultat sunt chiar cifrele numrului x n
baza 10. De exemplu, conversia numrului x=0.01011
(2)
n baza 10 se determin astfel:
x = 2
-2
+ 2
-4
+ 2
-5
= 11/32 = 0.34375
(10)

Conversia invers, a unui numr din baza 10 ntr-o baz b se realizeaz prin nmuliri
repetate, calculele fcndu-se tot n baza 10. Fie un numr real subunitar x, pentru care se
dorete determinarea cifrelor n baza b. Considerm scrierea exponenial n aceast baz de
forma:
x=a
-1
*b
-1
+ a
-2
*b
-2
+ + a
-n
*b
-n
+
unde numerele a
-1
, a
-2
, , trebuie determinate.
Determinarea acestora se poate face astfel:
1. Se nmulete x cu b i se obine:
b*x = a
-1
+ a
-2
*b
-1
+ + a
-n
*b
-n+1
+
Se observ faptul c numrul a
-1
este partea ntreag a numrului b*x:
a
-1
= [b*x]
Restul expresiei din partea dreapt reprezint partea fracionar a lui b*x:
r
1
= {b*x} = a
-2
*b
-1
+ + a
-n
*b
-n+1
+
2. Numrul a
-2
se obine n mod asemntor, nmulind r
1
cu b i reinnd partea ntreag:
a
-2
= [b*r
1
]
Partea fracionar a expresiei b*r
1
este utilizat n continuare pentru determinarea
succesiv a celorlali coeficieni.
3. Procesul se ncheie fie cnd dup un anumit numr de pai, partea fracionar a restului r
k

este zero, fie cnd s-au determinat suficiente numere a
-i
i nu se mai dorete continuarea
operaiilor (numrul x este iraional sau are pri fracionare periodice).
Presupunnd c s-au determinat n numere, a
-1
, a
-2
, , a
-n
, i notnd cu c
-1
, c
-2
, , c
-n
simbolurile corespunztoare din baza b, scrierea poziional a numrului x n baza b este:
x = 0.c
-1
c
-2
c
-n (b)

De exemplu, conversia numrului x=0.375
(10)
n binar se determin astfel:
2*x = 0.375 = 0.75
a
-1
= [0.75] = 0
r
1
= {0.75} = 0.75
2*r
1
= 1.5
a
-2
= [1.5] = 1
r
2
= {1.5} = 0.5
2*r
2
= 1
a
-3
=[1] = 1
r
3
= {1} = 0
Rezult c:
x = 0.011
(2)

1.5 Probleme

1.1. Demonstrai c scrierea poziional a unui numr ntreg pozitiv n ntr-o baz de
numeraie b este unic.

1.2. Demonstrai c reprezentarea n virgul fix a unui numr real pozitiv x ntr-o baz de
numeraie b este unic.

1.3. Demonstrai c funcia de aproximare rd a numerelor reale este mrginit:
xeR, | (rd(x)-x) / x | s 2
n+1
,
unde n reprezint numrul de cifre ale mantisei.

1.4. Demonstrai c mulimea cifrelor rezultate n urma conversiei unui numr ntreg
pozitiv n din baza 10 ntr-o baz de numeraie b este finit.

S-ar putea să vă placă și