Sunteți pe pagina 1din 198

Universitatea Titu Maiorescu

Facultatea de Informatic

Conf. univ. dr. Apostolescu Tudor Ctlin

Bazele informaticii

Curs pentru nvmntul la distan

Bucureti 2013

Cuprins
INTRODUCERE ........................................................................................................................... 5
UNITATEA DE NVARE 1 ................................................................................................. 11
1. Stocarea datelor .................................................................................................................. 11
1.1. Stocarea biilor ................................................................................................................ 11
1.1.1. Pori logice i circuite basculante bistabile ..................................................................... 11
1.1.2. Tehnici de stocare ........................................................................................................... 12
1.1.3. Sistemul de notaie hexazecimal ..................................................................................... 13
1.2. Memoria principal ......................................................................................................... 13
1.2.1. Organizarea memoriei principale.................................................................................... 14
1.2.2. Organizarea unei celule de memorie .............................................................................. 15
1.3. Dispozitive de stocare de mas ....................................................................................... 19
1.3.1. Discuri magnetice ........................................................................................................... 21
1.3.2. Discuri compacte ............................................................................................................ 25
1.3.3. Benzi magnetice .............................................................................................................. 26
1.3.4. nregistrri logice i fizice .............................................................................................. 26
1.4. Codificarea utilizat pentru stocarea informaiilor ......................................................... 27
1.4.1. Reprezentarea simbolurilor ............................................................................................. 27
1.4.2. Reprezentarea valorilor numerice ................................................................................... 28
1.4.3. Reprezentarea altor tipuri de date ................................................................................... 30
1.5. Sistemul binar de numeraie ........................................................................................... 31
1.5.1. Adunarea n binar............................................................................................................ 31
1.5.2. Reprezentarea fraciilor n sistemul binar ....................................................................... 32
1.6. Stocarea numerelor ntregi .............................................................................................. 34
1.6.1. Notaia n exces ............................................................................................................... 34
1.6.2. Notaia n complement fa de doi .................................................................................. 35
1.6.3. Adunarea numerelor reprezentate n complement fa de doi ........................................ 38
1.6.4. Problema depirii superioare ......................................................................................... 39
1.7. Stocarea numerelor fracionare ....................................................................................... 40
1.7.1. Notaia n virgul mobil ................................................................................................ 40
1.7.2. Erori de rotunjire ............................................................................................................. 42
1.8. Erori de comunicaie ....................................................................................................... 43
1.8.1. Bii de paritate ................................................................................................................. 43
1.8.2. Coduri corectoare de erori .............................................................................................. 45
TEST AUTOEVALUARE 1 (Stocarea datelor) ....................................................................... 47
UNITATEA DE NVARE 2 .................................................................................................. 52
2. Manipularea datelor ............................................................................................................ 52
2.1. Unitatea central de prelucrare ....................................................................................... 52
2.2. Execuia instruciunilor ................................................................................................... 55
2.3. Execuia programelor ...................................................................................................... 60

2.4.
2.5.
2.6.
2.7.
2.8.
2.9.

Alte instruciuni .............................................................................................................. 61


Principii de proiectare pentru calculatoarele actuale ...................................................... 63
Prelucrare simultan ...................................................................................................... 64
Instruciuni aritmetice i logice ................................................................................... 65
Comunicaia ntre unitatea central i controlere ....................................................... 67
Comunicaia serial i paralel ..................................................................................... 69

TEST AUTOEVALUARE 2 (Manipularea datelor) ............................................................... 73


UNITATEA DE NVARE 3 .................................................................................................. 75
3. Sistemele de operare........................................................................................................... 75
3.1. Evoluia sistemelor de operare .................................................................................... 75
3.2. Arhitectura unui sistem de operare ................................................................................. 77
3.3. Coordonarea activitilor desfurate de calculator........................................................ 81
3.4. Gestionarea proceselor concurente ................................................................................. 85
TEST AUTOEVALUARE 3 (Sisteme de operare)................................................................... 88
UNITATEA DE NVARE 4 .................................................................................................. 92
4. Algoritmii ........................................................................................................................... 92
4.1. Conceptul de algoritm .................................................................................................... 92
4.2. Reprezentarea algoritmilor ............................................................................................. 93
4.3. Dezvoltarea algoritmilor ................................................................................................. 96
4.4. Structuri iterative ............................................................................................................ 98
4.5. Structuri recursive......................................................................................................... 102
4.6. Eficien i corectitudine .............................................................................................. 103
TEST AUTOEVALUARE 4 (Algoritmii) ............................................................................... 107
UNITATEA DE NVARE 5 ................................................................................................ 111
5. Limbaje de programare .................................................................................................... 111
5.1. Perspective istorice ....................................................................................................... 111
5.2. Conceptele programrii clasice .................................................................................... 114
5.3. Module de program ...................................................................................................... 121
5.4. Implementarea limbajelor ............................................................................................. 123
5.5. Programarea declarativ ............................................................................................... 128
TEST AUTOEVALUARE 5 (Limbaje de programare) ........................................................ 132
UNITATEA DE NVARE 6 ................................................................................................ 139
6. Structuri de date ............................................................................................................... 139
6.1. Vectori .......................................................................................................................... 139
6.1.1. Vectori unidimensionali ............................................................................................... 139
6.1.2. Vectori multidimensionali ............................................................................................ 140
3

6.2.
6.3.

Liste .............................................................................................................................. 141


Arbori ............................................................................................................................ 150

TEST AUTOEVALUARE 6 (Structuri de date) .................................................................... 154


UNITATATEA DE NVARE 7........................................................................................... 157
7. Structuri de fiiere ............................................................................................................ 157
7.1. Fiierele secveniale ...................................................................................................... 157
7.2. Fiiere de text ................................................................................................................ 159
7.3. Fiiere indexate ............................................................................................................. 160
7.4. Fiiere dispersate (hashed files) .................................................................................... 161
7.5. Rolul sistemului de operare .......................................................................................... 162
TEST AUTOEVALUARE 7 (Structuri de fiiere) ................................................................. 164
UNITATEA DE INVATARE 8 ................................................................................................ 166
8. Structuri de Baze de date .................................................................................................. 166
8.1. Consideraii generale ................................................................................................... 166
8.2. Implementarea stratificat a bazelor de date................................................................. 167
8.3. Modelul relaional ......................................................................................................... 169
TEST AUTOEVALUARE 8 (Structura bazelor de date)...................................................... 181
UNITATEA DE NVARE 9 ................................................................................................ 183
9. Sistem informatic i sistem informaional ........................................................................ 183
9.1
Conceptul de informaie................................................................................................ 183
9.2
Noiunea de sistem ........................................................................................................ 185
9.3
Sistem informatic .......................................................................................................... 190
TEST AUTOEVALUARE 9 (Sistem Informaional i Sistem Informatic de fiiere) ......... 196
BIBLIOGRAFIE ......................................................................................................................... 198

INTRODUCERE
Informatica este o disciplin care construiete baza tiinific pentru mai multe domenii,
ca:

proiectarea i programarea calculatoarelor;

prelucrarea informaiilor;

rezolvarea algoritmic a problemelor;

procesul algoritmic propriu-zis.


Prin urmare, nu putem reduce studiul informaticii la deprinderea modului de utilizare a

calculatoarelor actuale (eventual a PC-urilor), ci trebuie s nelegem att aria de cuprindere, ct


i dinamica unui mare numr de domenii nrudite.

a) Studiul algoritmilor
Algoritm = set de pai prin care se definete modul n care poate fi dus la ndeplinire o
anumit sarcin.
n domeniul calculatoarelor

algoritmii

sunt reprezentai prin programe. Aceste

programe formeaz software-ul, spre deosebire de calculatoarelor propriu-zise care poart


numele de hardware.
Pentru ca un calculator s poat duce la ndeplinire o anumit sarcin, trebuie (ca mai
nti) s se descopere i s se reprezinte sub form de program un algoritm pentru efectuarea
sarcinii respective.
Algoritmii ocup un rol central n informatic. Principalul obiectiv al acestor eforturi era
descoperirea unui set mic de instruciuni care s descrie modul de rezolvare a oricrei probleme
dintr-o anumit categorie. Unul dintre cele mai cunoscute rezultate obinute n acest domeniu
este algoritmul lui Euclid (descoperit n antichitate de matematicianul precizat).
Determinarea celui mai mare divizor comun a 2 numere ntregi pozitive.
Descriere: Algoritmul primete ca intrare 2 numere ntregi pozitive i calculeaz cel mai mare
divizor comun al celor 2 numere.
Procedura:
Pasul 1 : Se noteaz cu M cea mai mare valoare i cu N cea mai mic valoare de intrare.
Pasul 2 : Se mparte M la N i se noteaz cu R restul mpririi.
5

Pasul 3 : Dac R 0, se atribuie lui M valoarea N i lui N valoare R, apoi se revine la pasul 2:
cel mai mare divizor comun al celor 2 numere este valoarea notat cu N.
Dup descoperirea algoritmului (n cazul nostru al lui Euclid), ntr-un fel, putem spune
c toate informaiile necesare pentru efectuarea [activitii] operaiei respective sunt incluse ntro form codificat n algoritm.
Dezvoltarea algoritmilor este o preocupare major n domeniul efecturii calculelor i
principalele probleme legate de aceast aciune sunt :

descoperirea unui algoritm care s rezolve o problem (gsisirea soluiei pentru o


problem). Pentru anumite domenii (ex. contabilitate), algoritmii se gsesc exprimai n
legi i metodologii (norme) specifice.

reprezentarea algoritmului ntr-o form n care poate fi comunicat unei maini sau altor
oameni. Adic scrierea unui algoritm trebuie transcris din forma conceptual ntr-un set
clar de instruciuni lipsit de ambiguitate. Exist o mulime de variante de scheme de
reprezentare a algoritmilor numite limbaje de programare.
n prezent, n acest domeniu s-au realizat sisteme automate de organizare i planificare

care permit i nespecialitilor s dezvolte, fr ajutor din afar, sistemele de care au nevoie.
Exprimarea curent a acestei activiti este ingineria software.
Scopul acestor prelegeri nu este prezentarea n detaliu a modului n care arhitectura
calculatoarelor este implementat prin intermediul circuitelor electronice (este vorba de un alt
domeniu electronic). Ar fi de dorit ca arhitectura calculatoarelor s reflecte numai cunotinele
legate de procesele algoritmice i s nu fie limitat de tehnic.
Arhitectura calculatoarelor poate fi studiat i n alt context dect acela al stocrii i
regsirii datelor. n acest domeniu, caracteristicile interne ale calculatorului se reflect adesea n
caracteristicile externe. Proiectarea sistemele de calcul este strns legat de interfaa lor cu
lumea exterioar. De exemplu, se pune problema modului n care algoritmul poate fi furnizat
calculatorului i a modului de precizare n care algoritm s fie executat.
n contextul n care calculatorul ndeplinete diferite sarcini, trebuie rezolvate multe
probleme legate de coordonarea activitilor i alocarea resurselor .

b) Dezvoltarea mainilor algoritmice


Unul din primele dispozitive de calcul utilizate de oameni a fost abacul. Prezena lui a
fost atestat n civilizaiile antice (greac i roman), el fiind folosit i astzi. Bilele poziionate
pe srme n cadrul abacului semnific anumite valori.
Abacul reprezint i stocheaz valori prin poziia bilelor aezate de operatorul uman
(intrrile) care, de asemenea, observ poziiile finale ocupate de bile, ceea ce reprezint
rezultatul (ieirile). Deci abacul este o main de stocare a datelor i devine o main algoritmic
numai mpreun cu omul care-l utilizeaz.
Proiectarea mainilor de calcul s-a bazat ntr-o vreme pe tehnologia roilor dinate.
Printre inventatorii acestui tip de maini de calcul s-a aflat i Blaise Pascal (16231662),
Gottfried Leibniz (16461716) i Charles Babbage (17921871). Mainile lor reprezentau
datele prin poziionarea unor roi dinate, datele de intrare erau furnizate mecanic prin stabilirea
poziiei particulare a acestor roi.
n cazul mainilor lui Pascal i Leibniz, valorile de ieire erau obinute prin observarea
poziiei finale a roilor (similar citirii numerelor pe indicatorul de kilometraj al automobilului).
La maina lui Babbage rezultatele se tipreau pe hrtie, evitnd erorile de transcriere.
n ceea ce privete abilitatea de a urma algoritm putem spune c:

maina lui Pascal efectua numai adunri;

maina lui Leibniz avea algoritmii (operaiile aritmetice) nglobai, dar operatorul
trebuia s-l selecteze pe cel dorit;

maina lui Babbage era astfel proiectat nct secvena de pai trebuia executat s poat
fi comunicat acesteia prin perforarea ntr-un anumit mod a unor cartele de hrtie.
Mai trziu, Herman Hollerith (18601929) a folosit ideea reprezentrii informaiilor sub

forma unor perforaii n cartele de carton, pentru mbuntirea procesului de nregistrare n


cadrul recensmntului efectuat n 1890 n Statele Unite. Lucrrile sale au stat la baza crerii
companiei I B M.
Anul de nastere al informaticii tehnice este 1946 cand a fost creat creat computerul
electronic de integrare numerica aritmetica construit cu tuburi electronice si cantarind sute de
tone. John von Neumann a construit in 1951 calculatorul EDVAC (Electronic Discrete Variable
Automatic Computer), iar in 1949 la Universitatea Cambridge (SUA) a fost realizat EDSAC

(Electronic Delay Storage Automatic Computer), primul calculator care dispunea de sistem de
operare.

c) Evoluia informaticii
Capacitatea-limit de stocare a datelor, ca i procedurile de programare consumatoare de
timp au reprezentat restricii care au redus complexitatea algoritmilor executai de primele
generaii de calculatoare.
Pe msur ce aceste limite au nceput s fie depite, sistemele de calcul au nceput s fie
folosite pentru sarcini de mai mare anvergur, din ce n ce mai complexe. Eforturile s-au
ndreptat din ce n ce mai mult ctre studiul algoritmilor i al procesului de programare. Aceste
eforturi se pot aduna, fr a exagera, n tiina algoritmilor. Aria de cuprindere a acestei tiine
este foarte larg, incluznd subiecte de matematic, inginerie, psihologie, management,
lingvistic etc.
Ceea ce ne propunem s prezentm n cadrul acestor prelegeri (lecii) sunt :

ideea central a fiecrui domeniu;

direciile curente de cercetare;

tehnicile utilizate n domeniul respectiv.


De exemplu, n domeniul programrii ne vom concentra asupra principiilor de baz ale

instrumentelor de programare i asupra evoluiei lor, i nu asupra dezvoltrii abilitilor de


programare. Pentru a nu pierde din vedere imaginea de ansamblu, vom ncerca s identificm
cteva ntrebri fundamentale pentru informatic :
1. Ce probleme se pot rezolva prin procesele algoritmice?
2. Cum se pot descoperi algoritmii?
3. Cum se pot mbunti tehnicile de reprezentare i comunicare a algoritmilor?
4. Cum pot fi aplicate cunotinele dobndite cu privire la algoritmi (tehnologia
vederea obinerii unor maini

algoritmice mbunttite) ?

5. Cum pot fi analizate i comparate caracteristicile diverilor algoritmi?

Rolul central detinut de algoritm in informatica


8

d) Rolul abstractizrii
Pentru sistemele de o complexitate care depete capacitatea noastr de nelegere se
poate privi sistemul respectiv ca un ansamblu de componente ale cror caracteristici interne pot
fi ignorate, ceea ce ne permite s ne concentrm asupra modului n care componentele respective
interacioneaz unele cu altele i asupra modului cum sunt utilizate pentru construirea unor
componente de nivel mai nalt.
Aceast distincie care se face ntre proprietile externe ale unei componente i detaliile
interne care in de construcia componentei respective poart numele de abstractizare. n orice
progres obinut, o mic parte a societii noastre se specializeaz n implementarea lui, ceilali
folosesc rezultatul ca pe un instrument abstract, deci o unealt a crei implementare intern nu
suntem obligai s o nelegem.

e) Implicaii etice, sociale i juridice


Informatica estompeaz multe distincii are serveau n trecut ca reguli pe care oamenii i
ntemeiau deciziile i pune sub semnul ntrebrii o parte din principiile care stau la baza
societii, ca de exemplu :

Care este diferena ntre un comportament inteligent i inteligena propriu-zis?

n ce condiii putem vorbi despre existena vieii?

Care este diferena ntre plante i animale?


Informatica genereaz asemenea ntrebri, punnd n discuie principiile i bazele pe care

este construit cunoaterea noastr.


n context juridic, se pune ntrebarea n ce msur cineva poate deine n proprietate un
produs software i care sunt drepturile i obligaiile care decurg din aceast proprietate. n
domeniul eticii, suntem confruntai cu numeroase opiuni care pun la ndoial principiile uzuale
de comportament. n context politic, apare ntrebarea dac i n ce msur tehnologia
calculatoarelor i aplicaiile acesteia trebuie controlate de stat.
Rezolvarea acestor probleme necesit existena unor cunotine organizate sub forma
metodelor, tehnicilor, normelor pentru fiecare tiin sau tehnologie pus n discuie.

Pentru a putea s lum decizii logice cu privire la depozitarea deeurilor radioactive,


trebuie s nelegem care sunt efectele radiaiilor, care sunt msurile de protecie care trebuie
luate i s putem evalua durata de risc.
Pentru a acorda sau nu guvernelor sau companiilor dreptul de a construi baze de date
referitoare la ceteni sau clieni, membrii societi trebuie s neleag care sunt posibilitile,
limitele i implicaiile tehnologiei bazelor de date. Ceea ce va fi prezentat n cursul pe care-l
propunem v furnizeaz aceste cunotine elementare n domeniul a ceea ce numim i n f o r m a
t i c .
Cu toate acestea, tiina nu reuete ntotdeauna s rspund clar i hotrt tuturor
problemelor sociale care-i sunt ridicate. Nu ntotdeauna exist un singur rspuns corect; de multe
ori aa-zisele soluii sunt n fapt compromisuri ntre mai multe puncte de vedere.
Este nevoie de capacitatea de a asculta i de a nelege i alte puncte de vedere, de a
purta discuii raionale i de a-i schimba opiniile n funcie de datele obinute n urma
dialogului. Pentru a ncuraja un astfel de comportament, fiecare capitol al cursului se va finaliza
cu un set de probleme de etic, pe care le considerm, mai ales n contextul profesiunii pe care
ai ales-o, la fel de importante ca i aspectele tehnice propuse spre dezbatere.

10

UNITATEA DE NVARE 1
1.

Stocarea datelor

1.1.

Stocarea biilor

Calculatoarele utilizate n prezent reprezint informaiile sub forma iruri de bii. Un bit
(biniary digit = cifr binar) simbolizeaz una din cifrele 0 sau 1.
Stocarea unui bit ntr-un calculator necesit un dispozitiv care s poat s se afle ntr-una
din cele dou stri. De exemplu:

un ntreruptor (pornit/oprit);

un releu (deschis/nchis);

un steag de start (ridicat/cobort).


Una din stri este

utilizat pentru reprezentarea simbolului 0, iar cealalt pentru

reprezentarea simbolului 1.

1.1.1. Pori logice i circuite basculante bistabile


Trebuie introduse operaiile AND (= i), OR (= sau) i XOR (= sau exclusiv) care sunt
prezentate mai jos :

Figura 1.1 - Operaiile AND, OR i XOR


11

Aceste operaii lucreaz cu valorile adevr (true)/fals (false) i sunt denumite operaii
booleene.
Intrrile operaiei AND sunt reprezentate de adevrul sau falsitatea componentelor
expresiei; ieirea reprezint adevrul sau falsitatea expresiei compuse.
Expresia P AND Q este adevrat numai cnd ambele sale componente sunt adevrate.
Toate variantele operaiei AND se pot vedea n prima linie a figurii 1.1. Similar, operaia OR se
bazeaz pe o expresie compus sub forma P

OR

Q. Asemenea expresie compus este

adevrat cnd cel puin una dintre componente este adevrat, ceea ce coincide cu
reprezentarea OR din linia a doua a figurii 1.1.
n limbajul curent nu exist o conjuncie care s poat exprima semnificaia operaiei
XOR. XOR produce ca rezultat o ieire cu valoarea 1 atunci cnd una dintre intrrile sale este 1
i cealalt 0 (vezi linia a treia din fig. 1.1.). Operaia NOT este o alt operaie boolean de
AND, OR i XOR, prin faptul c are o singur intrare i o singur ieire. Ieirea reprezint opusul
intrrii; dac intrarea operaiei NOT este adevrat, ieirea este fals, i invers.

1.1.2. Tehnici de stocare


Calculatoarele anilor '60 conineau inele de material magnetic de dimensiuni mici,
denumite miezuri (cores), pe care erau nfurate fire electrice, [mini]bobine. La trecerea
curentului electric prin bobine, miezul poate fi magnetizat ntr-una din cele dou direcii.
Direcia cmpului magnetic poate fi detectat observndu-se efectul asupra unui curent electric
ce trece prin centrul miezului.
Astfel un miez reprezint o posibilitate de memorare a unui bit. Datorit dimensiunilor
lor mari i a necesarului ridicat de putere (electric), aceste sisteme sunt depite astzi.
Calculatoarele nregistreaz datele nc utiliznd tehnologia magnetic, dar ntr-un mod foarte
apropiat de acela n care se fac nregistrrile pe band magnetic. In unele sisteme de calcul se
folosete, de asemenea, i tehnica laserului pentru nregistrarea bitilor.
Diferenele dintre circuitele basculante bistabile electronice i dispozitivele de stocare
magnetice (sau laser) reprezint argumente pro i contra n ceea ce privete aplicaiile lor.

12

Circuite basculante bistabile electronice care pot fi acionate electronic sunt mai rapide
dect cele magnetice i, de aceea, sunt utilizate pentru stocarea datelor n circuitele interne ale
calculatorului. ns un circuit basculant bistabil electronic pierde informaia stocat n el atunci
cnd sursa de alimentare este oprit.
n schimb, dispozitivele de stocare magnetice sau cu laser pstreaz datele, ceea ce le
recomand pentru realizarea de sisteme de stocare cu longevitate mare.

1.1.3. Sistemul de notaie hexazecimal


Cnd ne referim la activitile din interiorul unui calculator lucrm cu iruri de bii, care
pot fi uneori foarte lungi. Pentru a simplifica reprezentarea irurilor de bii, se va analiza o
notaie prescurtat, denumit notaia hexazecimal (hexadecimal notation).
Notaia hexazecimal utilizeaz un singur simbol pentru reprezentarea a patru bii.
Sistemul de codificare hexazecimal:

Figura 1.2 - Sistemul de notaie hexazecimal

1.2.

Memoria principal

n scopul stocrii datelor, un calculator conine un mare numr de circuite, fiecare dintre
ele fiind capabile s stocheze bii. Acest "rezervor" de bii este cunoscut sub numele de
memorie principal (main memory).

13

1.2.1. Organizarea memoriei principale


Celulele de stocare din memorie sunt organizate n uniti, (cuvinte) cu dimensiunea
uzual de 8 bii. Acest ir de 8 bii a impus cuvntul octet i, de asemenea, a impus pentru
cuvntul byte - ir de bii cu aceeai lungime.
Dimensiunea memoriei este adesea msurat n multipli de 1.048.576 celule (1.048.576
= 220, fiind mai natural pentru a fi utilizat dect 1.000.000 care este o putere a lui 10). Pentru a
desemna aceast unitate de msur se folosete termenul mega.
Deci: 1 mega byte (1 MB) 1.048.576 byte.
Alte uniti de msur a dimensiunilor de memorie sunt kilooctetul kilobyte (KB) care
este egal cu 1024 octei (210 octei) i gigaoctetul gigabyte (GB) care este egal cu 1024 MB
(230 octei).
Pentru identificarea celulelor individuale din memoria principal a unui calculator,
fiecare are atribuit un nume unic, denumit adres. Adresele utilizate in tehnica de calcul sunt n
ntregime numerice. Pentru exemplificare putem considera toate celulele de memorie plasate pe
un singur rnd i numerotate n ordine cresctoare pornind de la 0.
Acest sistem permite identificarea unic a unei celule i, de asemenea, o relaie de
ordonare ntre celule permite referiri de tipul "celula precedent" sau "celula urmtoare".
Celulele din memoria principal care stocheaz bii sunt combinate cu circuite necesare pentru a
permite, si altor circuite s stocheze i s recupereze datele din celulele memoriei principale.
Exist astfel si alte celule (circuite) care pot prelua datele din memorie solicitnd
informaii despre coninutul unei anumite adrese (operaie de citire) sau pot nregistra informaii
n memorie solicitnd ca un anumit ir de bii s fie plasat n celula aflat la o anumit adres
(operaie de scriere).
Acest sistem de identificare a celulelor memoriei principale permite apelarea, cercetarea
i modificarea individual a acestora. Astfel, o celul a memoriei principale cu o adres mic
este la fel de accesibil ca si una cu o adres foarte mare, deci datele stocate n memoria
principal a calculatorului pot fi prelucrate n orice ordine. Din aceste motive memoria
principal a unui calculator se mai numete i memorie cu acces aleator (random access
memory RAM).

14

Acest acces aleator la mici uniti de date (celula) se deosebete radical de sistemele de
stocare de mas (care manipuleaz iruri lungi de bii sub forma de blocuri).

1.2.2. Organizarea unei celule de memorie


Considerm biii dintr-o celul de memorie ca fiind aranjai pe un rnd. Vom denumi
capetele acestui rnd marginea superioar , iar cellalt capt marginea inferioar.
Considera deasemenea biii aranjai ntr-un rnd orientat de la stnga la dreapta cu
marginea superioar plasat la stnga.
Bitul de la captul din stnga este denumit cel mai semnificativ bit.

Figura 1.3 - Organizarea unei celule de memorie cu dimensiune de un octet

Memoria primara
Memoria (Memory) pstreaz programele i datele. Fr o memorie, din care
procesoarele s poat citi i n care s poat scrie informaii, nu poate exista nici un calculator
numeric cu program memorat.
Bii
Unitatea elementar a memoriei este cifra binar, numit bit. Un bit poate conine un 0
sau un 1. Sistemul de numerotare binar necesit numai dou valori distincte, reprezentnd cea
mai sigur metod pentru codificarea informaiei numerice.
Ordinea octeilor
Octeii dintr-un cuvnt pot fi numerotai de la stnga la dreapta, sau de la dreapta la
stnga. Vom reprezenta n figur o parte a memoriei unui calculator pe 32 bii.

15

Figura 1.4 a Bii numerptai de la stnga la dreapta

Figura 1.4 b Bii numerotai de la dreapta la stnga

16

S precizm cum vom reprezenta valoarea numeric: 6 este reprezentat de biii 110 n
partea cea mai din dreapta a unui cuvnt i de zerouri pe ceilali 29 de bii din stnga.
Majoritatea aplicaiilor au nevoie de un amestec de numere intregi, iruri de caractere i
alte tipuri de date. S considerm o fi simpl de personal: nume angajat, vrsta i codul
departamentului (Paul Sandu, 21 ani, Departament = 260 = 1 x 256 + 4) i s o reprezentm n
cele dou moduri precizate mai sus.

Figura 1.5 Reprezentarea unei fie de personal

Reprezentrile sunt bune i consistente intern, problema apare la transmiterea fiei, prin
reea de la maina cea mai semnificativ ctre cealalt main. Rezultatul transferului propus
arat astfel:

Figura 1.6 Rezultatul obinut


Maina a inversat n timpul transmisiei:

ordinea caracterelor din cuvnt (ceea ce este corect),

octeii dintr-un ntreg (ceea ce este incorect).


O soluie este de a inversa octeii prin software (dup crearea unei copii), ceea ce va

conduce la :

17

Figura 1.7 Soluia de inversare prin software a octeilor

Problema este poziia caracterului "U poziionat prost. Soluii de ndreptare nu exist la
transferul ntre maini diferite ca organizare a memoriei. Apare evident necesitatea unui standard
pentru stabilirea ordinii octeilor n cadrul organizrii memoriei.

Memoria intermediar
ntotdeauna CPU-urile au fost mai rapide dect memoriile. Proiectanii CPU-ului sunt
preocupai de sporirea vitezei acestora, pe cnd proiectanii memoriilor sunt preocupai de
sporirea capacitii, i nu de sporirea vitezei. Datorit acestor abordri, situaia CPU-urilor i a
memoriilor, vis--vis de vitez, continu s se nruteasc n timp. Practic, acest dezechilibru
are urmtoarea metamorfozare: dup ce CPU-ul a lansat o cerere ctre memorie, nu va primi
cuvntul ateptat timp de mai multe cicluri CPU; cu ct memoria este mai lent, cu att CPU-ul
are mai mult de ateptat.
n acest moment, inginerii tiu cum s construiasc memorii la fel de rapide ca i CPUurile, dar ar trebui ncorporate n cip-ul CPU, crescndu-i dimensiunile i costul. Cip-ul CPU
este limitat la anumite dimensiuni. n acest sens, se cunosc tehnici de combinare a unei cantiti
mici de memorie rapid cu o cantitate mare de memorie lent, la un pre moderat.
Memoria mic, rapid, se numete memorie intermediar (cache). Ideea de baz a unei
memorii intermediare : cuvintele de memorie cele mai frecvent utilizate sunt pstrate n
memoria intermediar.

18

Figura 1.8 Plasarea memoriei intermediare

1.3.

Dispozitive de stocare de mas

Limitele tehnologice precum i necesitatea stocrii unor copii de siguran ale datelor
vitale, au fcut ca memoria principal a unui calculator s nu satisfac cerinele impuse de
diversele aplicaii. Din aceste motive, calculatoarele sunt echipate, pe lng memoria principal,
cu sisteme de stocare de mas (mass storage system), denumite i memorie secundar. Stocarea
datelor pe aceste sisteme se face n uniti de mari dimensiuni denumite fiiere (files).
Unul din principalele dezavantaje ale sistemelor de stocare de mas este acela c, n
general, ele necesit o micare suplimentara mecanic, astfel fiind mai lente la stocarea i
recuperarea datelor n comparaie cu memoria principal a calculatorului.
Principalul avantaj al dispozitivelor de stocare de mas este acela c, n multe situaii,
sunt mai ieftine dect memoria principal, iar suportul pe care se nregistreaz datele poate fi
extras din calculator i depozitat ntr-un loc sigur n scopul recuperrii ulterioare a datelor.
Cu privire la dispozitivele care pot fi cuplate sau decuplate de la calculator, se folosesc
termenii on-line i off-line.
Termenul On-line indica c dispozitivul sau informaiile sunt conectate i pot fi folosite
de calculator fr intervenie uman. Termenul Off-line indica c este necesar intervenia
uman nainte ca dispozitivul sau informaiile s poat fi utilizate de calculator; dispozitivul
trebuie pornit sau informaiile trebuie introduse ntr-un anumit mecanism.

19

Memoria secundar
Orict de mare ar fi memoria principal. ntotdeauna ea va fi prea mic pentru cerinele
utilizatorilor.

Figura 1.9 - Ierarhie de memorii cu cinci niveluri


Mrimea memoriei intermediare are dimensiuni de la 32 KB pn la zeci de MB.
Memoria principal are dimensiuni de la 16 MB pn la zeci de GB.
Discul magnetic este suportul actual pentru pstrarea permanent (80 GB, 100 GB, 120
GB, 200 GB) i st la baza ierarhiei de memorii, iar banda magnetic i discul optic sunt
destinate pstrrii arhivelor. Exist urmtorii parametri importani de caracteristice specifice, pe
msur ce ne deplasm spre baza ierarhiei:
1. Timpul de acces se mrete (crete).

Registrele CPU pot fi accesate n cteva monosecunde;

Memoriile intermediare pot fi accesate ntr-un multiplu apropiat de timpul de acces al


registrelor;

Timpii de acces la memoria principal au valori tipice de cteva zeci de nanosecunde ;

Timpii de acces la discul magnetic 10 msec;


20

Timpii de acces la banda magnetic i discul optic sunt de mrimea secundelor (inclusiv
timpul de extragere i inserare n dispozitivul de intrare/ieire).

2. Capacitatea de stocare crete.

Registrele CPU pot stoca 128 octei;

Memoriile intermediare pot stoca civa megaoctei (MB);

Memoriile principale: zeci mii MB;

Discurile magnetice: zeci sute GB;

Benzile magnetice i discurile optice nu sunt tot timpul utilizate, astfel nct capacitatea
lor este limitat de bugetul proprietarului.

3. Numrul de bii primit pe dolar crete. Preurile pe componente se msoar astfel:

Memoria principal, n dolari/MB;

Stocarea pe discul magnetic n centime/pennies/MB;

Stocarea pe banda magnetic, n dolari/GB.

1.3.1. Discuri magnetice


Un disc magnetic este alctuit din unul sau mai multe platane de aluminiu, cu un nveli
magnetizabil. Iniial, diametrele acestor discuri erau de 50 cm, 12 cm, dar acum (2005) au n
general 3 cm sau mai puin. Un cap de citire/scriere, care conine o bobin de inducie ce se
deplaseaz foarte aproape de suprafaa

platanului, sprijinindu-se pe o pern de aer (cu

excepia discurilor flexibile/dischetelor unde atinge suprafaa). La trecerea unui curent


negativ/pozitiv prin bobina capului, acesta magnetizeaz suprafaa de dedesubtul capului,
aliniind particulele magnetice la dreapta sau la stnga, funcie de polaritatea curentului. Astfel,
se realizeaz scrierea, citirea realizndu-se n modul precizat n paragraful urmtor. La trecerea
capului de citire peste o suprafa magnetizat, un curent pozitiv/negativ este indus n bobina
capului. n continuare este prezentat geometria unei piste specifice discului magnetic.

21

Figura 1.10 - O poriune a unei piste a discului (sunt precizate dou sectoare)
Secvena circular de bii scris la rotaia complet a discuie se numete pist (track).
Fiecare pist este mprit n sectoare de lungime fix, de obicei de cte 512 octei de date,
precedai de un preambul care permite capului s se sincronizeze nainte de citire sau scriere.
Dup zona de date urmeaz un cod corector de erori (ECC Error Correcting Code), fie un cod
Hamming, fie un cod care poate corecta erori multiple numit Cod Reed Solomon.
Sectoarele consecutive sunt separate de un spaiu ntre sectoare (Intersector gap).
Capacitatea discului formatat este cu cca. 15% mai mic dect cea a discului neformatat. La
fiecare distan radial poate fi scris o alt pist. Pistele (coroane circulare) sunt cercuri
concentrice fa de axul discului.
Cu tehnologia actual, discurile au ntre 800 i 2000 de piste pe centimetru, lrgimea
pistei fiind ntre 5-10 microni. Discurile actuale ajung de la densiti de 50000 pn la 100000
bii/cm. Astfel de discuri se numesc discuri Wincester. Majoritatea discurilor sunt constituite
din mai multe platane suprapuse pe vertical.
Fiecare platan dispune de propriul bra i cap. Braele sunt sudate ntre ele; la o
deplasare ntr-o nou poziie radial sunt mutate toate odat. Setul de piste dintr-o poziie radial
se numete cilindru.
Factorii care influeneaz performanele discurilor sunt:

22

deplasare n poziia radial corect, cutare (seek);

timpii medii de cutare (ntre piste alese aleatoriu) se situeaz n intervalul 5-15 msec.;

latena de rotaie (rotational latency) necesar rotirii platanului astfel nct sectorul dorit s
ajung sub capul de citire; ntrzierea medie: 4 8 msec. Majoritatea discurilor se rotesc la
5400, 7200, 10800 rotaii/minut;

timpul de transfer depinde de densitatea linear i de viteza de rotaie i are valori de 25


100 microsecunde (la data de transfer 5 20 MB/sec., pentru un sector de 512 octei).
Evident, timpul de cutare i latena sunt predominante n timpul de transfer. Fiecrui

disc i este asociat un controlor de date (disk controller), un cip care controleaz dispozitivul.
Printre sarcinile controlerului sunt :

acceptarea comenzilor de la software, de tipul READ, WRITE, FORMAT;

controlul micrii braului;

detecia i corecia erorilor;

conversia datelor citite din memorie;

cnd controlorul descoper un sector defect, l nlocuiete cu unul din sectoarele libere
rezervate n acest scop n cadrul fiecrui cilindru.
Cea mai obinuit form de stocare de mas utilizat n prezent o reprezint stocarea pe

disc. n aceast structur, stocarea datelor se face pe un disc subire care se nvrtete i care este
acoperit cu o pelicul subire de material magnetic.
Deasupra i/sau dedesubtul discului sunt plasate capete de citire/scriere, astfel nct, pe
msur ce discul se rotete, fiecare cap parcurge un cerc denumit pist (track) care se afl pe
suprafaa de sus sau jos a discului. Deoarece fiecare pist conine mai multe informaii dect
vom dori s prelucrm la un moment dat, pistele sunt mprite n arce de cerc denumite
sectoare, unde informaiile sunt nregistrate ca un ir continuu de bii.
Prin repoziionarea capetelor de citire/scriere se obine acces la sectoare situate pe
diferite piste concentrice. Pistele sunt compuse din mai multe sectoare individuale, fiecare dintre
ele putnd fi tratate ca un ir de bii independent. Numrul de piste de pe suprafaa discului,
precum i numrul de sectoare de pe o pist, difer de la un sistem la altul. Dimensiunile
sectoarelor sunt n general fie de 512 octei, fie de 1024 octei.

23

Figura 1. 11 - Structura unui sistem de stocare pe disc

Localizarea pistelor i sectoarelor nu reprezint ceva permanent n structura fizic a


discului, ele sunt marcate magnetic printr-un proces denumit formatare (sau iniializare) a
discului. Cele mai multe sisteme de calcul pot reformata discurile atunci cnd formatul acestuia
nu este compatibil cu cel propriu. Reformatarea unui disc distruge toate informaiile stocate
anterior pe el.
Sistemele cu capacitate mic utilizeaz un singur disc, denumit i dischet/disc flexibil
(floppy disk). Sunt disponibile in comer astfel de dischete. Dischetele au diametrul de 31/2 oli,
si sunt introduse ntr-o carcas rigid de plastic. Dei capacitatea dischetelor este limitat la
civa megaoctei (1,44 MB), ele au avantajul c se introduc i se scot uor n unitatea
citire/scriere i sunt uor de pstrat. Dischetele reprezint o soluie bun pentru stocarea off-line
a informaiilor.
Discurile de mare capacitate, care pot stoca mai muli gigaoctei de date, constau dintr-un
numr de cinci pn la zece discuri fixe, montate n paralel pe un ax comun, cu suficient spaiu
ntre ele nct s permit accesul capetelor de citire/scriere. Deoarece aceste discuri sunt rigide,
ele sunt cunoscute sub numele de hard-disc.
n cazul acestor sisteme (hard-disc) capetele de citire/scriere nu ating suprafaa discului,
ceea ce-i permite acestuia viteze mari de rotaie. Distana dintre capetele de citire/scriere i
suprafaa dischetei este foarte mic, astfel nct o particul de praf se poate bloca ntre cap i
24

suprafaa discului deteriorndu-le pe amndou. Pentru prevenirea acestui fenomen hard-discul


este nchis ntr-o carcas etan.
Pentru evaluarea performanei discurilor se folosesc mai multe criterii (parametrii):

timpul de cutare (seek time) = timpul necesar deplasrii capetelor de citire/scriere de la


o pist la alta;

timpul de ntrziere (rotation delay/latency time) = jumtate din timpul necesar pentru ca
discul s efectueze o rotaie complet, respectiv timpul mediu n care datele respective
ajung n poziia capului de citire/scriere dup ce acesta a fost adus la pista dorit;

timpul de acces (access time) = suma dintre timpul de cutare i timpul de ntrziere;

rata de transfer (transfer rate) a datelor ctre sau de la disc.


Deoarece capetele de citire/scriere nu ating suprafaa discului, ele pot avea viteze de

rotaie de cca. 50007000 rotaii/minut, n timp ce n cazul discurilor flexibile aceste viteze nu
depesc 300 rotaii/minut. Rata de transfer a discurilor fixe se msoar n megabytes/secund,
fa de cea a dischetelor care se msoar n kilobytes/ secund.
Dac timpul de ntrziere se msoar, n cazul circuitelor electronice n nanosecunde
(miliardimi de secund) i chiar mai mici, timpii de cutare, ntrziere i acces n cazul
discurilor se msoar n milisecunde (miimi de secund).

1.3.2. Discuri compacte


Discul compact (CD) este compatibil cu cel utilizat n domeniul nregistrrilor muzicale,
cu diferena c, pentru a obine rate ridicate de transfer al datelor, cititoarele de CD-uri din
calculatoare, rotesc mult mai rapid discul. Aceste discuri, cu diametrul de cca. 5 oli, sunt
confecionate dintr-un material reflectorizant, acoperit cu o pelicul protectoare transparent.
nregistrarea informaiilor pe CD se face prin creare de striaii n adncimea suprafeei
reflectorizante. Informaiile sunt stocate pe o singur pist care are form de spiral. Una din
cele mai rspndite forme actuale de stocare a datelor pe compact-disc este reprezentat de
dispozitivele ce pot fi numai citite, denumite CD-ROM (Compact disk read only memory).
Capacitatea de stocare a acestor CD-ROM-uri este de 600 MB.
Sunt, de asemenea, dispozitive si sisteme CD care permit si modificarea datelor stocate.
Exist de asemenea sisteme care utilizeaz dispozitive magneto-optice pentru nregistrarea
25

informaiilor, topind suprafaa reflexiv de pe CD cu ajutorul unei raze laser i apoi rearanjnd-o
prin intermediul unor cmpuri magnetice nainte ca aceasta s se rceasc.

1.3.3. Benzi magnetice


Dispozitivele de stocare mai vechi utilizeaz banda magnetic. Informaiile se
nregistreaz pe o pelicul magnetic depus pe o band de material plastic, care este stocat pe
un sir de role.
Pentru acces la date, banda magnetic este introdus ntr-o unitate de band care poate
derula banda, citi i scrie informaia sub controlul calculatorului. Exist i uniti de band
magnetic cu cartu care utilizeaz casete. Depinznd de formatul utilizat, pe unele benzi
magnetice pot fi stocate volume de ordinul gigabytes (GB).

1.3.4. nregistrri logice i fizice


Datele n memoria principal a unui calculator pot fi apelate la nivelul celulelor de
memorie de dimensiunea unui octet. Proprietile fizice ale dispozitivelor de stocare de mas
impun ca manipularea datelor stocate s se fac utiliznd uniti cu dimensiuni mai mari de un
octet.
Un bloc de date corespunztor caracteristicilor fizice ale unui dispozitiv de stocare este
denumit nregistare fizic (phisycal record). n afara mpririi datelor n nregistrri fizice
determinate de caracteristicile dispozitivului de stocare, fiierele stocate posed o diviziune
natural, legat de structura aplicaiei din care fac parte.
De exemplu, un fiier care conine informaii referitoare la angajaii unei firme este
alctuit de obicei din blocuri de informaii referitoare la fiecare angajat. Aceste blocuri de date
care apar n mod natural sunt denumite nregistrri logice (logical records).
Dimensiunile nregistrrilor logice se potrivesc cu totul ntmpltor ca lungime (mrime)
cu dimensiunile nregistrrilor fizice impuse (ca mrime) de un dispozitiv de stocare. n
consecin este posibil s existe mai multe nregistrri logice stocate ca o singur nregistrare
fizic sau o nregistrare logic stocat pe mai multe nregistrri fizice. n acest spirit, pentru

26

recuperarea datelor de pe sistemele de stocare de mas este necesar o anumit activitate de


decodificare.

1.4.

Codificarea utilizat pentru stocarea informaiilor

n continuare vor fi studiate mai n amnunt tehnicile utilizate pentru reprezentarea


informaiilor sub forma unor iruri de bii.

1.4.1. Reprezentarea simbolurilor


Reprezentarea datelor ntr-un calculator se realizeaz prin proiectarea unui cod n care
diferite simboluri (litere alfabetice, semne de punctuaie etc.) au asociate abloane (modele) de
bii unice pentru ca informaia sa poata fi stocata sub forma unor propoziii codificate pe
suportul magnetic. Astfel au fost create i folosite diverse coduri pentru diferite echipamente,
acest lucru avnd ca efect apariia i proliferarea problemelor de comunicaie.
Pentru a remedia aceast situaie, Institutul American pentru Standarde (American
National Standards Institute ANSI) a adoptat codul American Standard Code form
Information Interchange (ASCII).
Acest cod utilizeaz modele cu o lungime de apte bii pentru reprezentarea literelor mari
i mici ale alfabetului englez, semnelor de punctuaie, cifrelor de la 0 la 9, precum i a anumitor
caractere de control (trecere rndul urmtor line feed, revenire la marginea din stnga a
rndului carriage return, tabulator tab).
n prezent codul ASCII este extins la un format de opt bii pe simbol, prin adugarea uni
zero pe poziia celui mai semnificativ bit n faa fiecrui ablon al vechiului cod pe apte bii.
Exist i alte coduri mai puternice capabile s reprezinte documente scrise ntr-o
varietate de limbaje. Ele utilizeaz abloane (modele) pe 16 bii (65.536 abloane diferite) sau
chiar pe 32 bii (peste 17 milioane de abloane). [Unicode, cod dezvoltat de I S O (International
Standard Organisation).]

27

1.4.2. Reprezentarea valorilor numerice


Metodele de stocare a informaiilor sunt ineficiente atunci cnd informaiile ce trebuie
memorate sunt de natur numeric. Pentru nelegere, s presupunem c vrem s stocm nr. 99
sub forma unor simboluri ASCII; sunt necesari 16 bii, dar observm c acesta este cel mai mare
numr stocabil pe 16 bii.
O abordare mult mai eficient este stocarea valorii reprezentate n baza doi (binar).
n notaia binar (baza doi) poziia fiecrei cifre este asociat cu o anumit pondere,
numai c ponderea asociat fiecrei poziii este de dou ori mai mare dect ponderea poziiei din
dreapa. Mai exact, cifra cea mai din dreapta a unei reprezentri binare are asociat ponderea 1
(20), urmtoarea poziie n stnga cu 2 (21) i aa mai departe.

Figura 1.12 - Sistemul zecimal de numeraie

Figura 1.13 - Sistemul binar de numeraie

Pentru a afla valoarea unei reprezentri n binar, vom nmuli valoarea fiecrei cifre cu
ponderea asociat poziiei sale i vom aduna rezultatele.

28

Figura 1.14 - Decodificarea reprezentrii binare 100101

Pentru a afla reprezentarea n binar exist un algoritm clasic.


Pasul 1.

Se mparte valoarea la doi i se memoreaz restul.

Pasul 2.

Ct timp ctul obinut difer de zero, se continu mprirea noului


ct la doi, memorndu-se restul.

Pasul 3.

Cnd s-a obinut un ct egal cu zero, reprezentarea n binar a


valorii iniiale const din resturile mpririlor afiate de la dreapta
la stnga n ordinea n care au fost memorate.

29

Figura 1.15 - Reprezentarea n binar a numrului treisprezece

1.4.3. Reprezentarea altor tipuri de date


Aplicaiile utilizate n informatica implica si folosirea de imagini, sunete, secvene video.
Tehnicile pentru reprezentarea acestor categorii de date nu sunt nc global standardizate la nivel
mondial.
Una din metodele utilizate pentru stocarea imaginilor este considerarea imaginii ca o
colecie (suma) de puncte (pixel picture element). n forma cea mai simpl, o imagine albnegru poate fi codificat ca un lung ir de bii ce reprezint liniile de pixeli, unde fiecare bit are
valoarea 1 sau 0, funcie de culoarea alb sau negru.
Reprezentrile de acest tip sunt cunoscute sub numele de hri de bii (bit maps), deci
irul de bii nu este altceva dect o hart a imaginii reprezentate. Sistemele
hri de bii includ fiiere de tip T I F F (Tag Image Format File) i

"populare" de
G I F (Graphic

Interchange Format). Fotografiile sunt prezentate ca hri de bii prin fiiere n format JPEG
(Joint Photographic Experts Group).
n cadrul acestor reprezentri acestor fiier imaginea nu poate fi scalat la o dimensiune
arbitrar. Exist posibilitatea scalrii imaginii prin memorare ca un set de directive care
precizeaz modul de desenare. Acest mod de precizare a modului de desenare furnizeaz o

30

descriere compatibil cu orice mrime a unitilor sistemului de coordonate care ar putea fi


specificat atunci cnd se afieaz imaginea.
De asemenea, tot metode de reprezentare a datelor sunt i MPEG (Motion Picture
Experts Group) tehnic pentru date video i audio, i D X F (Drowing Interchange Format)
utilizat la sisteme de proiectare asistat de calculator, unde imaginile trebuie rotite i
redimensionate pe ecranul monitorului.

1.5.

Sistemul binar de numeraie

Pentru studierea tehnicilor de stocare a valorilor numerice utilizate la calculatoarele de


astzi, trebuie mai nti cunoscut sistemul de reprezentare binar.

1.5.1. Adunarea n binar


Pentru a aduna dou valori reprezentate n notaia binar, se procedeaz astfel:
Se adun cifrele din coloana cea mai din dreapta, se scrie cifra cea mai puin
semnificativ a acestei sume sub coloan, se transport cea mai semnificativ cifr a sumei (dac
exist) n urmtoarea coloan din stnga i se adun apoi coloana respectiv.

Exemplu :

00111010
+ 00011011

Se adun cifrele cele mai din dreapta 0 i 1 i obinem cifra 1, pe care o scriem sub
coloana respectiv.

00111010
+00011011
1
Se adun apoi 1 i 1 din coloana urmtoare, obinnd rezultatul 10. Vom scrie 0 sub
coloan i vom transfera cifra 1 deasupra coloanei urmtoare.

31

1
00111010
+00011011
101
Se adun cifrele 1, 0 i 0 din coloana urmtoare, obinnd rezultatul 1, i vom scrie 1 sub
coloan.
Cifrele din coloana urmtoare 1 i 1 dau ca rezultat al adunrii 10; se va scrie cifra 0 sub
coloana respectiv i vom transfera cifra 1 deasupra coloanei urmtoare.
1
00111010
+00011011
0101

Adunm cifrele 1, 1 i 1 din aceast coloan i obinem 11; se va scrie cifra 1 sub
coloana respectiv i vom transfera cifra 1 deasupra coloanei urmtoare.
1
00111010
+00011011
10101

Se va continua n acelai fel, obinnd n final:

00111010
+ 00011011
01010101

1.5.2. Reprezentarea fraciilor n sistemul binar


Pentru extinderea notaiei binare, pentru a fi adecvat reprezentrii valorilor fracionare,
se va utiliza notaia n virgul fix (radix point). Aceasta nseamn c cifrele de la stnga
virgulei mobile (punctului) reprezint partea ntreag a valorii i sunt interpretate ca n sistemul

32

binar, iar cifrele din dreapta punctului reprezint partea fracionar a valorii i sunt interpretate
ntr-o manier similar, poziiile lor avnd asociate ponderi fracionare.
Astfel prima poziie din dreapta punctului are atribuit ponderea 1/2, urmtoarea 1/4,
apoi 1/8 i aa mai departe. Rezult c regula aplicat anterior rmne valabil, fiecare poziie
are o pondere alocat de dou ori mai mare dect cea a poziiei din dreapta sa.
Exemplu :

Figura 1.16 - Decodificarea reprezentrii binare 101 . 101

Pentru a aduna dou reprezentri binare n virgul fix, se vor alinia unul sub altul
punctele de separare ntre partea ntreag i cea fracionar i se va aplica acelai proces de
adunare ca i cel prezentat anterior.
Exemplu :
1 0 0 1 1
+1 0 0 1 1
1
2

33

1 1 0 0 1

1.6.

Stocarea numerelor ntregi

Adesea avem nevoie s memorm att valori pozitive ct i valori negative, deci este
nevoie de un sistem de notare care s reprezinte ambele categorii de numere (pozitive i
negative).
Sistemele de notaie pentru reprezentarea ambelor categorii de numere pot folosi circuite
electronice realizate i utilizate pe scar larg n cadrul echipamentelor de calcul. Vom prezenta
n continuare dou astfel de sisteme de notaie: notaia n exces (excess notation) i notaia n
complement fa de doi (two's complement notation).

1.6.1. Notaia n exces


Valorile din sistemul de reprezentare n exces sunt codificate utiliznd cuvinte binare de
aceeai lungime. Pentru realizarea unui sistem de notaie n exces se stabilete mai nti
lungimea cuvintelor binare utilizate, apoi scriem una sub alta toate combinaiile posibile n
ordinea n care ar aprea dac am numra n binar.
n aceast niruire observm c primul cuvnt binar care are pe poziia biului cel mai
semnificativ valoarea 1 survine aproximativ la jumtatea listei.

se va considera c acest model reprezint valoarea 0.

cuvintele binare care urmeaz reprezint valorile 1, 2, 3,...

cuvintele binare care-l preced sunt utilizate pentru codificarea valorilor negative -1,
2, -3,...

34

Figura 1.17 - Tabel conversie pentru sistemul de notaie n exces cu opt

Figura 1.18 - Sistemul de notaie n exces care utilizeaza cuvinte cu lungimea de trei bii

1.6.2. Notaia n complement fa de doi


Cel mai folosit sistem de reprezentare a numerelor ntregi n informatica este notaia n
complement fa de doi (two's complement notation). Acest sistem utilizeaz un numr fix de
bii pentru reprezentarea valorilor din cadrul sistemului. n figurile 1.13.1 si 1.13.2. sunt
prezentate sistemele n complement fa de doi bazate pe cuvinte de cod cu lungimea de trei i
35

patru. Pentru construcia unui astfel de sistem se ncepe cu un ir de bii cu valoarea 0 de


lungime adecvat i apoi se numr n binar pn cnd se ajunge la un ir de bii care ncepe cu
un bit 0, iar toi ceilali bii sunt 1. Cuvintele obinute astfel reprezint valorile 0, 1, 2, 3,...
Utiliznd cuvinte binare de lungime trei bii :

Figura 1.19 - Sisteme de notaie n complement fa de doi (trei bii)

Utiliznd cuvinte binare de lungime patru bii :

Figura 1.20 - Sisteme de notaie n complement fa de doi (patru bii)

36

Cuvintele care reprezint valorile negative se obin ncepnd cu un ir de bii cu valoarea


1 i numrul n sens descresctor, pn la atingerea cuvntului care ncepe cu un bi 1 i are toi
ceilali bii 0. Cuvintele astfel obinute reprezint valorile -1, -2, -3,...
Se observ c bitul de semn, n notaia n complement fa de doi, este 1 pentru valorile
negative i 0 pentru valorile pozitive. Complementul unui cuvnt binar este cuvntul obinut prin
schimbarea tuturor biilor de 1 n valoarea 0, respectiv a tuturor biilor 0 n 1; cuvntul 0110 este
complementul lui 1001 i invers.
n sistemul de codificare n complement fa de doi pe 4 bii din figura 1.13.2., cuvintele
care reprezint valorile 2 i -2 se termin amndou n 10, cuvntul corespunztor valorii 1
ncepe cu 00, iar reprezentarea valorii -2 ncepe cu 11. Aceast observaie conduce la realizarea
unui algoritm care s permit obinerea reprezentrii binare pentru valori de semne contrare, dar
care au acelai modul.
Vom copia cuvntul original ncepnd de la dreapta pn dup apariia unui bit cu
valoarea 1, apoi vom face complementul biilor rmai (vom schimba toi biii 1 rmai n 0 i
toi biii 0 n 1) pe msur ce-i copiem.

Figura 1.21 - Codificarea valorii -6 n complement fa de doi utiliznd 4 bii


37

Aceste proprieti elementare ale sistemelor n complement fa de doi conduc la


obinerea unui algoritm pentru decodificarea reprezentrilor n complement fa de doi.
Dac modelul (ablonul) ce trebuie decodificat are bitul de semn 0, se va citi direct
valoarea ca i cum cuvntul ar fi o reprezentare binar (ex. 0110 reprezint valoarea binar 110,
adic 6). Dac ablonul care trebuie decodificat are bitul de semn 1, se va nelege c valoarea
reprezentat este negativ i trebuie gsit modulul acestei valori.

Modulul

cutat se va

determina copiind cuvntul original de la dreapta la stnga, pn la primul bit egal cu 1 (inclusiv
acesta), apoi vom complementa biii rmai i i vom scrie n continuare tot de la dreapta la
stnga (lng biii deja copiai), iar n final vom decodifica cuvntul obinut ca i cnd ar fi o
reprezentare binar normal (ex. decodificm 1010; bitul de semn este 1, deci valoarea
numrului este negativ; convertim cuvntul i obinem 0110, ceea ce corespunde valorii 6, deci
ablonul original reprezint valoarea -6).

1.6.3. Adunarea numerelor reprezentate n complement fa de doi


Pentru adunarea valorilor reprezentate n complement fa de doi se aplic acelai
algoritm ca i pentru adunarea n binar, cu excepia faptului c toate cuvintele binare, inclusiv
rezultatul, au aceai lungime. Altfel spus, la adunarea n complement fa de doi, orice bit
suplimentar generat la stnga rspunsului de ctre un transport final va fi eliminat.

De exemplu:

0 1 0 1

0 1 1 1

0 0 1 0

1 0 1 1

0 1 1 1

0 0 1 0

Acceptnd aceast convenie, s considerm urmtoarele trei probleme de adunare:


3

1
+ (-2) + 1

0 0 1 1

(-3)

+2 +0 0 1 0
0 1 0 1

1 0 1
1 1 0

1 0 1 1 -5

38

0111
+(-5) +1 0 1 1
7

0 0 1 0

Figura 1.22 - Probleme de adunare utiliznd notaia n complement fa de 2

n fiecare caz n parte, vom codifica valorile utiliznd notaia n complement fa de doi
(pe patru bii), vom efectua adunarea procednd aa cum s-a descris anterior i vom decodifica
rezultatul napoi la notaia zecimal.
Se observ c, prin trecerea la notaia n complement fa de doi, putem calcula rspunsul
corect aplicnd n toate cazurile acelai algoritm de adunare. Dac am folosi tehnicile uzuale, a
treia problem ar fi de fapt un proces complet diferit de primele dou; este vorba de operaia de
scdere. Deci, n calculatorul care utilizeaz notaia n complement fa de doi se realizeaz
numai adunare i negarea biilor.
n consecint, dac n calculator se dorete scderea lui 5 (0101) din 7 (0111), mai nti
va fi schimbat n -5 (1011) i apoi se va efectua adunarea 0111 + 1011 = 0010, ceea ce
reprezint valoarea 2.
n ceea ce privete nmulirea, ea este o adunare repetat, iar mprirea o scdere
repetat (ex. 6:2 reprezint de fapt de cte ori poate fi sczut 2 din 6 fr s se obin un rezultat
negativ).
Astfel putem efectua toate cele patru operaii aritmetice standard (adunarea, scderea,
nmulirea i mprirea) utiliznd un circuit pentru adunare combinat cu un circuit pentru
negarea unei valori.

1.6.4. Problema depirii superioare


n oricare din sistemele de numeraie pe care le-am prezentat exist o limit privind
mrimea pe care pot s o reprezinte valoric. La utilizarea notaiei n complement fa de doi cu
cuvinte de patru bii, valoarea 9 nu are asociat un model (ablon), deci nu putem efectua corect
adunarea 5+4.

39

O problem similar apare la utilizarea de cuvinte de cinci bii;de ex. s ncercm s


reprezentm valoarea 17, apar erori. Aceste erori se numesc depiri superioare (overflow).
Depirea superioar, la utilizarea notaiei n complement fa de doi, poate apare la adunarea a
dou valori negative sau pozitive.
Depirea poate fi detectat prin verificarea bitului de semn al rspunsului. Altfel spus,
dac rezultatul adunrii a dou valori pozitive/ negative apare ca fiind negativ/pozitiv, este
semnalata depasirea superioara.
Deoarece calculatorul manipuleaz cuvinte mult mai lungi dect cele precizate mai sus (3
bii/4 bii), valorile mari pot fi prelucrate fr s apar o valoare de depire (de exemplu, pentru
calculatoarele care utilizeaz cuvinte de 32 de bii pentru stocare, n notaia n complement fa
de doi, este posibil lucrul cu valori de pn la 2.147.483.647, fr apariia depirii superioare).
Dac sunt necesare valori i mai mari, se folosete metoda denumit dubla precizie
(double precision). Aceast metod permite ca lungimea cuvintelor utilizate s fie mrit fa de
cea utilizat de obicei de ctre calculator. Exist i alte soluii, cum ar fi schimbarea unitii de
msur cu pstrarea preciziei impuse.

1.7.

Stocarea numerelor fracionare

n acest caz trebuie memorat i poziia virgulei zecimale nu numai modelele


(abloanele) de 0 i 1. Metoda uzual pentru a face acest lucru se numete notaia n virgul
mobil (floating point notation).

1.7.1. Notaia n virgul mobil


Vom explica notaia n virgul mobil printr-un exemplu care utilizeaz numai un octet
pentru efectuarea stocrii.
Cel mai semnificativ bit din cadrul octetului este bitul de semn. Dac bitul de semn este
0, valoarea stocat este pozitiv; iar dac este 1, valoarea stocat este negativ. mprim cei
apte bii rmai n dou grupuri/cmpuri: cmpul exponentului (exponent field) i cmpul
mantisei (mantissa fied). Considerm trei bii, care urmeaz dup bitul de semn, ca fiind cmpul
exponentului, iar cei patru bii rmai ca fiind cmpul mantisei :

40

Figura 1.23 - Elemente ale notaiei n virgul mobil

Se poate explica semnificaia acestor cmpuri considernd urmtorul exemplu. Octetul


conine irul de bii 01101011. Deci, bitul de semn = 0, exponentul = 110, mantisa = 1011.
Pentru a decodifica octetul, extragem mai nti mantisa i plasm n stnga ei o virgul
zecimal, obinnd 1011.
Extragem apoi coninutul cmpului exponentului (110) i-l interpretm ca pe un ntreg
stocat utiliznd metode n exces pe trei bii, n cazul nostru reprezint valoarea pozitiv 2. Acest
fapt ne precizeaz c trebuie s mutm virgula la dreapta cu doi bii (un exponent negativ
nseamn c virgula trebuie deplasat la stnga). n cazul nostru obinem : 10 11 ceea ce
nseamn 23/4.
Observm c bitul de semn din exemplul considerat este 0, deci valoarea reprezentat
este pozitiv. Vom trage concluzia c 01101011 reprezint valoarea 23/4.
Pentru a stoca o valoare utiliznd notaia n virgul mobil, vom proceda n sens invers
dect n prezentarea de mai sus. De exemplu, pentru a codifica valoarea 11/8, o vom exprima
mai nti in notaia binar 1.001 vom copia apoi cuvntul binar n cmpul rezervat mantisei de la
stnga la dreapta, ncepnd cu primul bit diferit de zero din reprezentarea binar.

Octetul arat astfel :


1

41

Acum trebuie completat cmpul exponentului. Ne imaginm coninutul cmpului


mantisei avnd o virgul zecimal la stnga i vom determina numrul de bii i direcia n care
trebuie s fie deplasat virgula pentru a se obine numrul binar iniial.
n exemplul nostru, observm c virgula din .1001 trebuie deplasat cu un bit la dreapta
pentru a obine 1.001. Din aceast cauz, exponentul trebuie s aib valoarea pozitiv 1; vom
plasa combinaia 101 (care este reprezentarea valorii pozitive 1, n exces cu patru) n cmpul
exponentului:
1

exponent
n final vom nscrie 0 n bitul de semn, deoarece valoarea stocat este pozitiv; la sfrit
octetul arat astfel :
0


semn

1.7.2. Erori de rotunjire


S studiem ncercarea stocrii valorii 25/8 utiliznd sistemul n virgul mobil pe un octet
(prezentat anterior). Scriem mai nti valoarea 25/8 n binar : 10.101. La copierea acestui
rezultat n cmpul mantisei, vom descoperi c nu avem suficient spaiu i, ca urmare, ultimul 1
(cel care orespunde ultimului 1/8) se va pierde.

Figura 1.24 - Codificarea valorii 25/8


42

Dac ignorm aceast problem i continum completarea cmpului exponentului i a


bitului de semn, obinem cuvntul:

bit de

exponentul 2 pentru notaia n exces

semn

pentru exprimare pe 4 bii

Acest cuvnt ns reprezint valoarea 21/2.


Ceea ce s-a ntmplat poart numele de eroare de rotunjire {round - off error), cauzat
n acest caz de lungimea prea mic a cmpului de primire a mantisei.
Soluia pentru rezolvarea acestei probleme este creterea dimensiunii cmpului mantisei,
ceea ce se ntmpl n cazul calculatoarelor reale.De obicei, pentru stocarea valorilor n virgul
mobil se utilizeaz cel puin 32 bii; dac nici n acest mod nu se rezolv problema, se poate
aplica conceptul de dubl precizie.

1.8.

Erori de comunicaie

La transferarea informaiilor ntre diverse componente ale calculatorului sau n cazul


stocrii datelor, exist posibilitatea ca irul de bii primit napoi s nu fie identic cu cel original.
Pentru rezolvarea unor asemenea probleme, au fost dezvoltate diferite tehnici de
codificare care permit detectarea i corectarea erorilor. n prezent, datorit faptului c aceste
tehnici de codificare sunt implementate pe scar larg n componentele inteme ale sistemelor de
calcul, ele sunt invizibile pentru cei care utilizeaz calculatoarele, dar pe ele se bazeaz
fiabilitatea echipamentelor actuale.

1.8.1. Bii de paritate


O metod simpl pentru detectarea erorilor se bazeaz pe urmatoarea regula : dac fiecare
cuvnt binar manipulat are un numr impar de bii de 1, apariia unui cuvnt cu un numr par de
43

bii de 1 semnaleaz o eroare. Pentru a folosi aceast regul, avem nevoie de un sistem n care
fiecare cuvnt binar s conin un numr impar de bii 1, ceea ce se obine uor prin adugarea
unui bit suplimentar, bitul de paritate (parity bit).
Bitul de paritate se plaseaz pe poziia bitului cel mai semnificativ, deci codul de opt bii
devine un cod de nou bii.
Bitul de paritate va lua valoare 0 sau 1, astfel nct cuvntul rezultat s aibe un numr
impar de 1.

Figura 1.25 - Modificarea codurilor ASCII pentru caracterele A si I, astfel


nct s aibe paritatea impar

Dup aceast modificare ( precizat in figura de mai sus pentru caracterele A i I ),


ambele cuvinte vor avea nou bii i conin un numr impar de bii 1. Dup aceast modificare a
sistemului de codificare, un cuvnt cu un numr par de bii 1 semnaleaz faptul c s-a produs o
eroare i deci cuvntul respectiv este incorect. Sistemul de paritate descris poart numele de
paritate impar (odd parity), deoarece fiecare cuvnt conine un numr impar de bii 1.

44

O alt tehnic utilizeaz paritatea par (even parity). n aceast tehnic, fiecare cuvnt
trebuie s conin un numr par de bii 1, iar prezena unei erori este semnalat de apariia unui
cuvnt cu un numr impar de bii 1. irurile lungi de bii sunt nsoite adesea de un grup de bii
de paritate dispui ntr-un octet de control (checkbyte).
Printre variantele principiului de verificare cu octet de control, se numr schemele de
detecie a erorilor numite semne de control (checksums) i control de coduri ciclice (cyclic
redundancy check CRC).

1.8.2. Coduri corectoare de erori

Bitul de paritate permite detectarea unei erori singulare, dar nu furnizeaz informaia
necesar pentru corectarea erorii. Pot fi, ns, concepute coduri corectoare de erori (error
corecting codes) care nu numai c detecteaz erorile, dar le i corecteaz.
Intuitiv, se poate crede c nu poate fi corectat informaia dintr-un mesaj, dect dac se
cunoate informaia coninut de mesaj.Contrarul acestei afirmatii se va demonstra in
continuare. Pentru a nelege modul de funcionare a codului corector de erori, vom defini
distana Hemming dintre dou numere binare. Distana Hemming ntre dou numere binare este
numrul de bii prin care difer cele dou cuvinte.

Figura 1.26 Exemplu de cod corector de erori

45

Exemplu: n figura de mai sus, distana Hemming dintre simbolurile A i B n codul


prezentat este patru, dintre B i C este trei.
Caracteristica important a codului prezentat este c oricare dou cuvinte de cod sunt
separate de o distan Hemming de cel puin trei biti. Altfel spus, trebuie s modificm cel puin
patru bii n cod pentru a apare un alt cuvnt din lista propus de coduri.
S presupunem c recepionm 010100. Dac comparm acest cuvnt binar cu lista de
coduri propus n fig. 1.26, obinem distanele din figura 1.27. Vom putea trage concluzia c a
fost transmis caracterul D, acesta fiind cel mai apropiat de codul recepionat.
Cu ct distana Hemming dintre dou coduri utilizate este mai mare, cu att de pot
detecta i corecta mai multe erori.

Figura 1.27 - Decodificarea cuvntului 010100 utiliznd codul din figura 1.26

46

TEST AUTOEVALUARE 1 (Stocarea datelor)


1. Care din urmatoarele reprezentari zecimale este egala cu valoarea binara : 111.01001
1.

7 5/32

2.

7 9/32

3.

7 7/16

2. Care din urmatoarele reprezentari zecimale este egala cu valoarea octala : 71.15
1. 58 11/64
2. 57 13/64
3. 59 17/64
3. Care dintre urmatoarele afirmatii despre memoria interna (RAM) este falsa :
1. poate fi doar citita
2. de regula are componente electromecanice in miscare
3. informatia dispare la scoaterea de sub tensiune
4. Care din urmatoarele

reprezentari

zecimale

este egala cu valoarea hexazecimala

41A.0CA:
1. 1050 202/4096
2. 1060 198/4096
3. 1030 214/4096
5. Convertiti urmatoarea fractie ordinara : - 1
folosind notatia in virgula mobila.
Se va utiliza notatia in exces pe trei biti.
111.3
110.2
101.1
100.0
011-1
010-2
001... -3
000.. -4
47

(10)

in informatii stocate intr-un octet,

6. Convertiti in baza opt urmatoarele siruri de biti :


1. 1011011. 1011 011
2. 11101011. 1010101010101
7. Care sunt sirurile de biti reprezentate de urmatoarele numere hexazecimale :
1. BAF61C. 6A11
2. 11010.1101111
8. Convertii fiecare dintre urmtoarele reprezentri octale n forma zecinala (baza 10)
echivalent :
1.

6714. 1062

2.

314281. 217

9. Convertii fiecare dintre urmtoarele reprezentri binare n forma intreg si fractie


ordinara echivalent :
1. 1 0 0 1 . 0 1 0 1
2. 0 . 1 0 1 1 0 1
10. Exista urmatoarele informatii stocate intr-un octet, folosind notatia in virgula mobila :
1.

1 010 1 0 0 1

Calculati valoarea in baza 10 a sirului de biti de mai sus.


Pentru rezolvare utilizati urmatoarea notatie in exces pe trei biti
111.3
110.2
101.1
100.0
011-1
010-2
001... -3
000.. -4

48

11. Care din urmatoarele reprezentari zecimale este egala cu valoarea binara : 1010.0111
1.

10 3/4

2.

10 7/16

3.

10 11/64

12. Care dintre urmatoarele afirmatii despre memoria interna (RAM) este adevarata :
1. poate fi doar citita
2. de regula are componente electromecanice in miscare
3. informatia dispare la scoaterea de sub tensiune
13. Convertiti urmatoarea fractie ordinara : - 2

(10)

in informatii stocate in mantisa unui

octet, folosind notatia in virgula mobila. Se va utiliza notatia in exces pe trei biti.
111.3
110.2
101.1
100.0
011-1
010-2
001... -3
000.. -4
14.

Utilizati notatia hexazecimala pentru a reprezenta urmatoarele siruri de biti :


1. 1101101.110 011
2. 11101001011.1010101010101

15. Convertiti in baza opt urmatoarele siruri de biti :


1. 1101101.110 011
2. 1110100.10111010101
16. Exista urmatoarele informatii stocate intr-un octet, folosind notatia in virgula mobila :
1.

11111001

Convertiti sirurul de biti de mai sus in valoarea lor in baza 10


Pentru rezolvare utilizati urmatoarea notatie in exces pe trei biti
111.3
110.2
49

101.1
100.0
011-1
010-2
001... -3
000.. -4
17.

Utilizati notatia hexazecimala pentru a reprezenta urmatoarele siruri de biti :


1. 10110110.1110 011
2. 1110100101.11010101010101

18. Se considera urmatoarea reprezentare a numerelor binare in complement fata de doi:


0111.7
0110.6
0101.5
0100.4
0011.3
0010.2
0001.1
0000.0
1111-1
1110-2
1101-3
1100-4
1011-5
1010................................-6
1001-7
1000-8
Efectuati adunarile 7+4 ;

si scaderea 6 - 2.

Detaliati modul de rezolvare a fiecarei operatii solicitate.

50

19. Care din sirurile de mai jos ar putea reprezenta un numar scris in baza hexa (16) :

20.

1.

10010

2.

101011

3.

10111

Care dintre urmatoarele afirmatii despre memoria externa (CD-W, HDD, DVD-W,

discheta) este adevarata


1. poate fi doar citita
2. informatia dispare la scoaterea de sub tensiune
3. de regula are componente electromecanice in miscare
22.

Care dintre urmatoarele afirmatii despre memoria externa (CD-W, HDD, DVD-W,

discheta) este falsa :


1. poate fi doar citita
2. informatia dispare la scoaterea de sub tensiune
3. de regula are componente electromecanice in miscare

51

UNITATEA DE NVARE 2
2.

Manipularea datelor

2.1.

Unitatea central de prelucrare

Circuitele care realizeaz diferite operaii asupra datelor nu sunt conectate direct la
celulele memoriei principale. Aceste circuite sunt grupate n unitatea central de prelucrare
(central processing unit CPU). Unitatea central de prelucrare (CPU) se compune din:

unitatea aritmetico-logic (aritmetic/logic unit) conine circuitele care realizeaz


manipularea datelor ;

unitatea de comand (control unit) conine circuitele utilizate pentru coordonarea


activitii calculatorului.

registri (registrele)
n figura de mai jos este prezentat organizarea unui calculator [simplu] construit n jurul

unei magistrale. Unitatea Central de Prelucrare (UCP/CPU Control Processing Unit),


creierul calculatorului, are rolul de a executa programele pstrate n memoria principal prin
extragerea instruciunilor componente ale unui program, examinarea lor i execuia lor
secvenial (una dup alta).
Componentele sunt conectate printr-o magistral (bus), format dintr-o mulime de ci
paralele prin care sunt transmise adrese, date i semnale de control. Magistralele se pot afla att
n exteriorul UCP, conectnd-o cu memoria i dispozitivele de intrare/ieire, ct i n interiorul
UCP. Aceasta este alctuit din mai multe componente :

Unitatea de control care rspunde de extragerea instruciunilor din memoria


principal i de determinarea tipului [lor] fiecruia.

Unitatea aritmetic i logic execut operaii necesare pentru ndeplinirea


instruciunilor (SI logic, SAU logic, ).

52

Figura 2.1 - Organizarea unui calculator simplu

UCP conine de asemenea i o memorie special foarte rapid, folosit pentru


depozitarea rezultatelor temporare, precum i a unor informaii de control. Aceast memorie este
format dintr-un numr de registre, fiecare cu o anumit dimensiune i o anumit funciune.
Principalele registre sunt:

contorul de program (PC Program Computer) el indic urmtoarea instruciune


care va fi extras pentru execuie;

registrul de instruciuni (Instruction Register IR), n care se pstreaz


instruciunea n execuie.

Interfaa CPU / Memorie


Transferarea cuvintelor binare ntre unitatea central a unui calculator i memoria
principal se realizeaz prin conectarea acestora printr-un grup de fire denumite magistral
Prin intermediul magistralei, unitatea central poate s extrag (s citeasc)/s plaseze (s scrie)
date din/n memoria principal, furniznd adresa celulei de memorie dorite, mpreun cu un
semnal de citire. Analiznd acest mecanism, observm c presupune att implicarea unitii de
comand ct i a unitii aritmetico-logice.

53

Figura 2.2 - Arhitectura unitate central de prelucrare/memorie principal

Organizarea CPU-ului Von Neumann (tipic)


Aceast parte se numete calea de date (data path) i include pn la 32 de registre,
Unitatea aritmetic i logic (UAL) i mai multe magistrale de legtur. Registrele trimit datele
n cele dou registre de intrare ale UAL, notate cu A i B, care le pstreaz n timp ce UAL face
calculele.

Figura 2.3 - Calea de date a unei maini Von Neumann (adunarea)

54

Dup ce UAL execut cu datele de intrare, adunri, scderi i alte operaii simple,
transmite rezultatul n registrul de ieire. Majoritatea instruciunilor executate de UAP sunt de
tip: registru-memorie, registru-registru. Instruciunile registru-memorie permit cuvintelor din
memorie s fie ncrcate n registre, de unde sunt folosite ca date de intrare pentru UAL n
instruciunile urmtoare.
Instruciunile registru-registru extrag doi operanzi din registre, i aduc n registrele de
intrare UAL, execut o operaie oarecare asupra lor (adunare, SI logic, ) i depun rezultatul
napoi ntr-unul din registre. Acest ultim proces se numete ciclul cii de date (Data path cycle)
i reprezint inima celor mai multe UCP-uri. Cu ct acest ciclu este mai rapid, cu att maina
merge mai repede.

2.2.

Execuia instruciunilor

UCP execut fiecare instruciune printr-o serie de pai mici, dup cum urmeaz :
a. transformarea instruciunii urmtoare din memorie n registrul de instruciuni;
b. schimbarea contorului de program, pentru a indica instruciunea urmtoare;
c. determinarea tipului instruciunii proaspt extrase;
d. dac instruciunea are nevoie de un cuvnt din [spaiul] de memorie, determinarea
locului unde se gsete acesta;
e. extragerea cuvntului ntr-unul din registrele UCP, dac este cazul;
f. executarea instruciunii;
g. reluarea pasului a pentru a ncepe execuia instruciunii urmtoare.
Aceast secven [de pai] se mai numete ciclul extrageredecodificareexecuie
(fetchdecodeexecute). n fig. 2.4 este prezentat n detaliu procesul adunrii a dou valori
stocate n memorie.
Instruciuni n cod main
Instruciunile prezentate n fig. 2.4 reprezint instruciuni executabile de ctre unitatea
central de prelucrare i poart denumirea instruciunii n cod main (machine instructions).
Cnd ne referim la instruciunile cunoscute de un calculator, observm c ele pot fi
clasificate n trei categorii (grupe): instruciuni de transfer de date, instruciuni aritmeticologice, instruciuni de control.

55

Figura 2.4 - Adunarea unor valori stocate n memorie

Instruciuni de transfer de date


Instruciuni care realizeaz deplasarea datelor dintr-un loc n altul, dar fr dispariia lor
din poziia iniial. Paii 1, 2 i 4 din fig. 2.4 intr n aceast categorie. Termenii transfer sau
mutare sunt mai puin adecvai; mai exaci ar fi copiere sau clonare.
Cererea de ncrcare a unui registru de uz general cu coninutul unei celule de memorie
este desemnat de o instruciune LOAD, iar transferul coninutului unui registru ntr-o celul de
memorie se face prin intermediul unei instruciuni STORE.
n fig. 2.4 paii 1 i 2 reprezint instruciuni LOAD, iar pasul 4 este o instruciune STORE.
O parte important a instruciunilor de transfer se refer la operaii (comenzi) ntre
dispozitive n afara CPU i memoria intern. Aceste instruciuni se ocup de operaiile de
intrare/ieire (input/ output - I/O) din calculator i uneori plasate ntr-un grup distinct de
instruciuni.

Instruciuni aritmetice i logice


Instruciunile care indic uniti de comand s solicite unitii aritmetico-logice
efectuarea unei anumite operaii. Pasul 3 din fig. 2.4 face parte din aceast categorie de
instruciuni.
Operaiile logice posibile de efectuat sunt: AND, OR i XOR. Operaii care realizeaz
deplasarea la dreapta sau la stnga a coninutului registrilor: SHIFT, ROTATE. Vor fi dataliate
in subcapitolul 2.7.

56

Instruciuni de control
Instruciuni care nu manipuleaz date, ci dirijeaz modul de execuie al programelor.
Pasul 5 din fig. 2.4 face parte din aceast categorie ca un caz elementar.
Aceast familie de instruciuni conine i instruciunile de salt (JUMP, BRANCH) care
realizeaz aciune ca unitatea de comand s execute alt instruciune dect cea care urmeaz.
Exist dou variante de instruciuni de salt: salt necondiionat

salt condiionat. Ca

exemplu, pentru saltul condiionat prezentm secvena urmtoare:

Figura 2.5 - mprirea a dou valori stocate n memorie

Saltul condiionat se utilizeaz cnd se dorete ndeplinirea unei anumite condiii.


Primele calculatoare erau foarte puin flexibile, deoarece programul executat de fiecare
dispozitiv era cablat n unitatea de comand, ca o parte a sistemului.
Una din soluiile utilizate n primele calculatoare electronice pentru a dobndi mai
mult flexibilitate a constituit-o proiectarea unitilor de control, astfel nct diversele blocuri
s poat fi reconectate dup nevoie. Acest lucru se poate realiza utiliznd o plac de conexiuni
realizate pe principiul plcilor de comutare (utilizate n centralele telefonice).

57

Instruciunile ca iruri de bii


Un pas nainte s-a fcut odat cu nelegerea faptului c, n mod similar datelor,
programele pot fi codificate i stocate n memoria principal a calculatorului. Programul unui
calculator poate fi schimbat prin modificarea coninutului memoriei, n loc s se reconecteze
blocurile unitii de comand a calculatorului.
Conceptul de program stocat n memoria calculatorului a devenit n prezent situaiastandard de lucru. Pentru a-l putea aplica, calculatorul e proiectat astfel nct s recunoasc
anumite modele de bii ca reprezentnd diferite instruciuni. Aceast colecie de instruciuni,
mpreun cu sistemul de codificare, poart numele de limbaj-main (machine language) i
definete modul de comunicare al algoritmului pe care calculatorul trebuie s-l execute.
O instruciune-main, din punctul de vedere al codificrii, const, de obicei, din dou
pri: cmpul codului de operaie (operation code - op.code) i cmpul operandului (operand
code). irul de bii care apare n cmpul "op-code"-ului specific operaia elementar (STORE,
SHIFT, XOR, JUMP) a crei execuie e solicitat de instruciune. Modelul de bii pentru codul
operandului ofer detalii asupra operaiei respective (Ex.: pentru operaia de tip STORE,
informaia din cmpul operandului precizeaz registrul care conine datele ce trebuie stocate
precum i precizarea celulei de memorie n care se vor stoca ele).

Un limbaj tipic main


n continuare vom preciza cum ar trebui codificate instruciunile unui calculator obinuit.
Pentru aceasta propunem un calculator prezentat schematic mai jos.

Figura 2.6 - Arhitectura calculatorului model


58

Calculatorul are 16 regitri de uz general, numerotai de la 0 la F n hexazecimal, iar


memoria sa conine 256 celule. Fiecare celul de memorie este desemnat individual
(identificat) printr-un numr ntreg ntre 0 i 255. Vom considera c att registrii ct i celulele
de memorie au mrimea de opt bii.

Coduri de operaie
Fiecare instruciune este codificat pe un numr de 16 bii, reprezentai cu ajutorul a
patru cifre hexazecimale (vezi figura urmatoare).

Figura 2.7 - Formatul unei instruciuni main pentru limbajul restrns

Codul de operaie al fiecrei instruciuni este reprezentat de primii patru bii sau de prima
cifr hexazecimal.
Calculatorul dispune de dou instruciuni de adunare ADD: una pentru

adunarea

reprezentrilor n complement fa de doi i una pentru adunarea reprezentrilor n virgul


mobil. Tratarea este diferit datorit faptului c adunarea cuvintelor binare care reprezint
valori codificate cu notaia n complement fa de doi necesit executarea unor aciuni diferite
fa de cele de la adunarea valorilor reprezentate n virgul mobil.

59

2.3.

Execuia programelor

Un program este "urmrit" de calculator prin copierea instruc-iunilor din memorie, n


unitatea de comand, pe msur ce are nevoie de ele. Fiecare instruciune ajuns n unitatea de
comand este decodificat i executat. Ordinea de extragere a instruciunilor din memorie
corespunde ordinii n care sunt stocate, cu excepia cnd o instruciune de salt (JUMP) specific
altfel. Pentru nelegerea executrii unui program trebuie studiat amnunit unitatea de
comand din interiorul CPU. Aceasta (UC) conine doi registri cu destinaie special: contorul
programului (program counter) i registrul de instruciuni (instruction register), conform fig.
2.4. Registrul contorului programului conine adresa urmtoarei instruciuni care trebuie
executat, permind calculatorului s urmreasc locul n care se afl n program. Registrul de
instruciuni este utilizat pentru stocarea instruciunilor n curs de execuie.
Unitatea de comand i realizeaz sarcinile repetnd continuu un algoritm, denumit
ciclul mainii (machinecycle), care const n 3 pai: extragere (fetch), decodificare i execuie
(fig. 2.8).

Figura 2.8 - Ciclul main

n timpul pasului de extragere, unitatea de comand solicit memoriei principale s-i


furnizeze urmtoarea instruciune care va fi executat. Unitatea tie unde se afl urmtoarea

60

instruciune n memorie, deoarece adresa acesteia se afl n registrul contorului programului.


Unitatea de comand plaseaz instruciunea recepionat din memorie n registrul su de
instruciuni i incrementeaz apoi contorul programului astfel nct acesta s conin adresa
urmtoarei instruciuni.
Avnd astfel instruciunea n registrul de instruciuni, unitatea de comand ncepe faza de
decodificare din ciclul mainii. n acest moment, ea analizeaz cmpurile codului de operaie i
operanzilor pentru determinarea aciunilor ce trebuie efectuate.
Dup decodificarea instruciunii, unitatea de comand intr n faza de execuie. De
exemplu, dac instruciunea se refer la ncrcarea datelor din memorie, unitatea de comand
realizeaz (efectueaz) operaia de ncrcare; dac instruciunea se refer la o operaie
aritmetico-logic, unitatea de comand activeaz unitatea aritmetico-logic, avnd ca intrri
registrii corespunztori.
Dup execuia oricrei instruciuni, unitatea de comand ncepe un nou ciclu al mainii
cu faza de extragere. Deoarece contorul programului a fost incrementat la sfritul fazei
precedente de extragere, el furnizeaz din nou unitii de comand adresa corect a instruciunii.

Programe i date
Mai multe programe pot fi stocate simultan n memoria principal a unui calculator, att
timp ct ocup zone de memorie diferite, iar prin setarea adecvat a contorului programului se
poate determina care program se va executa la pornirea calculatorului.
Deoarece datele sunt stocate de asemenea n memorie i sunt codificate tot cu cifre
binare (0 i 1), calculatorul nu poate face distincia ntre date i programe.
Existena unui aspect comun pentru programe i date permite unui program s
manipuleze alte programe (sau chiar pe el nsui) ca pe nite date.

2.4.

Alte instruciuni

Pentru a avea o perspectiv mai larg, s studiem alte alternative la arhitectura de


calculator prezentat.

61

Arhitecturi CISC i RISC


Proiectarea unui limbaj-main implic luarea multor decizii, una dintre ele fiind s
construim:

masina cu structur complex care s poat decodifica i executa o larg


varietate de instruciuni;

o main mai simpl care s dispun de un set limitat de instruciuni.

Prima structur se numete calculator cu set complex de instruciuni (complex


instruction set computer - CISC), iar a doua opiune conduce la realizarea unui calculator cu set
restrns de instruciuni (reduced instruction set computer - RISC).
Cu ct structura procesorului este mai complex cu att mai simpl este programarea, n
timp ce n cazul calculatorului mai simplu aceeai operaie ar necesita o secven de mai multe
instruciuni. Pe de alt parte, structurile complexe sunt mai greu i mai scump de realizat,
utilizarea lor fiind mai costisitoare.
n prezent pe pia exist att procesoare CISC ct i RISC. Procesul Pentium (Intel
Corporation) reprezint un exemplu de arhitectur CISC;

seriile de procesoare Power PC

(dezvoltate de Apple Computer IBM i Motorola) urmeaz arhitectura RISC.


RISC vs. CISC
n anii '70, proiectanii de calculatoare au ncercat acoperirea spaiului semantic dintre
posibilitile calculatoarelor i necesitile limbajelor de programare de nivel nalt. Cu greu s-ar
fi gndit atunci cineva s proiecteze maini mai simple.
n 1980 s-a nceput proiectarea cip-urilor. VLSI pentru UCP fr interpretator, aprnd
termenul de RISC pentru cip-ul de unitate central. Aceste noi procesoare erau mult mai diferite
dect procesoarele de pn atunci, n sensul c aceste noi UCP-uri nu trebuiau s pstreze
compatibilitatea cu produsele existente.
n aceast situaie, proiectanii erau liberi s aleag noi seturi de instruciuni care
maximizau performanele globale ale mainii. Conta mai puin ct dura o instruciune, dar conta
numrul de instruciuni care puteau fi lansate n execuie ntr-o secund. Caracteristica pregnant
a acestor procesoare a fost numrul relativ mic de instruciuni disponibile (cca. 50) comparativ
cu numrul mult mai mare de instruciuni ale altor procesoare de calculatoare ale firmelor IBM,
DBC (cca. 250-300).
62

Acronimul folosit pentru procesoarele calculatoarelor cu set redus de instruciuni este


RISC (Calculator cu Set Redus de Instruciuni Reduced Instruction Set Computer). S-ar putea
crede c datorit unor avantaje oferite de tehnologia RISC, mainile RISC ar fi trebuit s
detroneze mainile CISC, dar nu s-a ntmplat aa.
Care au fost motivele care au generat aceast situaie:

compatibilitatea cu modelele anterioare;

dezvoltarea unor componente software dedicate gamei de procesoare Intel;

procesoarele Intel au ncorporat instruciuni RISC (un nucleu RISC) ntr-o arhitectur
CISC. Chiar dac aceast abordare hibrid nu este la fel de rapid ca i cea RISC pura,
le permite obinerea unei performane globale competitive i rularea vechiului software
nemodificat.

2.5.

Principii de proiectare pentru calculatoarele actuale


(principiile proiectrii RISC RISC design principles)

1) Toate instruciunile sunt executate direct de ctre hardware


Instruciunile uzuale nu sunt interpretate prin microinstruciuni. Eliminarea unui nivel de
interpretare conduce la creterea majoritii instruciunilor. pentru seturile de instruciuni CISC,
instruciunile mai complicate pot fi sparte n pri separate, aciune care ncetinete maina,
dar pentru instruciuni care apar mai rar.
2) Maximizeaz rata de lansare n execuie a instruciunilor
n calculatoarele moderne, lansarea n execuie a ct mai multe instruciuni
pe secund este problema principal. Procesorul MIPS (Millions of Instructions per Second)
realizeaz paralelismul execuiei instruciunilor, ceea

ce

conduce

la

mbuntirea

performanelor.
3) Instruciunile trebuie s fie uor de decodificat
Decodificarea instruciunilor individuale, pentru a determina resursele de care au nevoie,
este un factor critic care limiteaz rata de lansare a instruciunilor. Cu ct se folosesc mai puine
formate diferite pentru instruciuni, acestea sunt mai eficiente. de asemenea, numrul mic de
cmpuri cu dimensiune prestabilit este o alt component care poate eficientiza execuia
instruciunii.
63

4) Numai instruciunile LOAD i STORE trebuie s acceseze memoria


Unul din modurile simple de a descompune operaiile n pai separai este impunerea
condiiei ca operanzii majoritii instruciunilor s fie transferai n/din registre.
Deoarece accesul la memorie poate dura mult, cel mai bine ar fi s se suprapun
execuia acestor instruciuni cu a altora, dac ele nu fac altceva dect s mute operanzi ntre
registre i memorie.
5) Furnizeaz registre suficiente
Datorit accesului la memorie relativ lent, sunt necesare multe registre (>/= 32). Trebuie
evitat s se intre n criz de registre i s fim obligai s le salvm n memorie.

2.6.

Prelucrare simultan

Exist o limit n ceea ce privete dezvoltarea calculatoarelor foarte rapide, semnalele


electrice se propag prin circuite cu maximum viteza luminii. Chiar i viitoarele "calculatoare
optice" sunt afectate de aceast limitare.
Deoarece lumina (unda electromagnetic) parcurge o distan de aproximativ 30 de cm.
ntr-o nanosecund (o miliardime de secund), rezult c sporirea vitezei de execuie (lucru) a
unui calculator devine n ultim instan o problem de miniaturizare. ntr-un efort de rezolvare
a acestei probleme, cercetarea i-a ndreptat atenia asupra conceptului de capacitate de
transfer (throughput).
Capacitatea de transfer se refer la cantitatea total de operaii pe care le poate efectua
calculatorul ntr-un anumit timp. mbuntirea capacitii de transfer a unui calculator (fr
creterea vitezei de execuie) este tangibil prin tehnica de prelucrare simultan (pipelining).
Aceast metod se refer la posibilitatea ca n orice moment, n conduct (pipe) s se afle mai
multe instruciuni "n lucru". O instruciune este executat, alta este decodificat i inca o alta
este extras din memorie.
Datorit "prelucrrii" n acelai timp a 3 instruciuni, capacitatea de transfer a
calculatorului crete de 3 ori.

64

Calculatoare -multiprocesor
Alte soluii pentru creterea capacitii de transfer face parte din categoria prelucrrii
paralele (parallel processing), n care se utilizeaz mai multe procesoare pentru executarea
operaiei curente. Argumentul n favoarea acestei abordri l reprezint creierul uman.
Susintorii prelucrrii paralele se pronun n favoarea calculatoarelor-multiprocesor,
care conin, n opinia lor, configuraii cu un factor de utilizare mult mai ridicat.

2.7.

Instruciuni aritmetice i logice

Grupul operaiile aritmetice i logice conine instruciuni care solicit operaii


aritmetice, logice i de deplasare.

Operaii logice
Operaiile logice AND (I), OR (SAU), XOR (SAU echivalent) se pot extinde la operaii
care combin dou iruri de bii pentru a produce o ieire de forma unui ir de bii, aplicnd
operaia elementar bit cu bit.

Exemplu :

10011010
AND

11001001
10001000

OR

10011010

10011010

11001001

XOR 1 1 0 0 1 0 0 1

11011011

01010011

Operaia AND este utilizat la mascare (masscing).

Exemplu :

00001111
AND

operand masc (mask)

10101010

n acest caz operandul denumit masc (mask) determin care parte a celuilalt operand va
afecta rezultatul. Deci operaia AND permite copierea unei pri a unui ir de bii, plasndu-se 0
n partea neduplicat.

65

Operaia OR poate fi utilizat i ea pentru a copia o parte a unui ir de bii, plasndu-se


ns pe poziiile neduplicate. Una din utilizrile principale ale operaiei XOR o reprezint
compunerea complementului unui ir de bii, astfel:

11111111
XOR

10101010
01010101

Operaii de rotire i deplasare la nivel de bit


Operaiile de rotire i deplasare furnizeaz posibilitatea de deplasare a biilor dintr-un
registru i sunt folosite la rezolvarea problemelor de aliniere. Aceste operaii sunt clasificate
dup direcia de micare (stnga/dreapta), inndu-se cont i dac procesul este circular.
Dac se face deplasarea ctre un capt al irului de bii, bitul de la captul spre care se
face deplasarea dispare, iar la cellalt capt al irului apare un spaiu liber. Operaiunile de
deplasare se difereniaz tocmai prin ceea ce se ntmpl cu acest bit suplimentar n urma
deplasrii.
Una din tehnicile de deplasare este s se plaseze bitul suplimentar n spaiul liber de la
cellalt capt. Rezultatul este o deplasare circular, denumit rotaie.
Alt tehnic de deplasare elimin bitul de la captul irului spre care se face deplasarea i
completeaz cu 0 spaiul liber aprut la cellalt capt, adic realizeaz o deplasare logic
(logical shift).
Se ntlnesc adesea deplasri la dreapta care completeaz ntotdeauna spaiul liber, cu
valoarea bitului de semn; acestea se numesc deplasri aritmetice (arithmetic shift).

Operaii aritmetice (precizri suplimentare)


Aceste operaii pot fi adesea efectuate utiliznd doar operaia de adunare, alturi de
negarea logic.
n cazul adunrii:

dac valorile care trebuie adunate sunt stocate utilizndu-se notaia n complement fa
de doi, operaia de adunare trebuie realizat ca o operaie de adunare n binar;

66

dac operanzii sunt stocai utilizndu-se notaia n virgul mobil pentru adunare, trebuie
mai nti efectuat extragerea mantiselor operanzilor, deplasarea acestora la stnga sau la
dreapta n funcie de valoarea cmpurilor exponenilor, verificarea biilor de semn,
adunarea propriu-zis i apoi convertirea rezultatului n virgul mobil.
n cazul celor 2 operaii de adunare, din punctul de vedere al calculatorului ntre ele nu

exist nici o similitudine.

2.8.

Comunicaia ntre unitatea central i controlere

Comunicaia ntre unitatea central de prelucrare i un controler este controlat la fel ca


i comunicaia dintre CPU i memoria principal.
Faptic, controlerul este reprezentat de un bloc de celule din memoria principal. Atunci
cnd CPU scrie un ir de bii ntr-o celul de memorie din cadrul blocului de memorie (ex.
instruciunea STORE), ablonul e transferat de fapt controlerului i nu memoriei. Similar, atunci
cnd CPU ncearc s citeasc date dintr-una din celulele de memorie (instruciune LOAD), ea
primete un ir de bii de la controler. Acest sistem de comunicaie, denumit mapare n
memorie a operaiilor de intrare/ieire (memory mapped I/O) este reprezentat de fig. 2.9.

Figura 2.9 - Reprezentarea principal a maprii n memorie a operaiilor de I / O

Blocul de adrese asociate unui controler este denumit port, el reprezint "poarta" prin
care informaiile intr sau ies din calculator.

67

ntre controler i dispozitivul periferic pe care-l controleaz are loc o comunicare n


ambele sensuri. Dac n-ar exista o cale de comunicaie n ambele sensuri ntre calculator i
imprimant (de exemplu), imprimanta ar rmne foarte repede n urm.

Controlere
Comunicaia dintre unitatea central de prelucrare a unui calculator i un dispozitiv
periferic este controlat de un dispozitiv intermediar, denumit controler (controller). Fiecare
controler gestioneaz comunicaia cu un anumit tip de dispozitiv periferic. Un controler
corespunde fizic unei plci cu circuite electrice.
Controler-ul convertete mesajele i datele la forme compatibile cu caracteristicile
interne ale calculatorului respectiv la cele ale dispozitivelor periferice ataate controlerului.
Controlerele sunt ataate la aceeai magistral care conecteaz unitatea central la
memoria principal (fig. 2.10).

Figura 2.10 - Conectarea controlerelor la magistrala unui calculator

Fiecare controler monitorizeaz semnalele transmise de unitatea central de prelucrare i


rspundere atunci cnd i este adresat un semnal. Abilitatea (facilitatea) unui controler de a
accede la memoria principal a calculatorului poart numele de acces direct la memorie (direct
68

memory access - D M A).

Unitatea central poate trimite controlerului cereri codificate prin

care s-i cear s citeasc un anumit sector de pe disc i s plaseze aceste date ntr-o anumit
zon de memorie precizat.
Apoi CPU poate continua execuia altor operaii n timp ce controlerul efectueaz cererea
solicitat. Dup terminarea sarcinii atribuite, controlerul transmite prin magistrala calculatorului
un anumit semnal ctre CPU (astfel de semnale iau forma de ntreruperi i vor fi studiate n cap.
Sistemul de operare).
Un bloc de memorie utilizat pentru transferul datelor spre i dinspre dispozitivele
periferice poart numele de zon-tampon (buffer). Ataarea controlerelor n magistrala unui
calculator mrete semnificativ complexitatea operaiilor de control al comunicaiei de-a lungul
acestei ci principale de comunicaie.
Chiar n cazul unei proiectri foarte bune, magistrala principal poate deveni un punct
critic, cunoscut sub numele de gtuirea von Neumann (von Neumann bottleneck), se datoreaz
concurenei pentru accesul la magistral ntre unitatea central de prelucrare i controlere.

2.9.

Comunicaia serial i paralel

Comunicaia dintre diferite pri ale unui sistem de calcul se efectueaz ntr-una dintre
cele dou forme elementare paralel sau perial. Este vorba de modul de transfer al irurilor de
bii. n cazul comunicaiei paralele (parallel communication), toi biii dintr-un ir sunt
transferai simultan, fiecare pe o linie separat. n acest mod se realizeaz transferul rapid al
datelor, dar este necesar o linie de comunicaie cu un numr mare de cabluri electrice.
Comunicaia serial (serial communication) se bazeaz pe transmiterea irului bit cu
bit. Aceast metod este mai lent, dar linia de comunicaie este mai simpl.
Un exemplu obinuit l reprezint liniile telefonice, informaiile digitale fiind convertite
n semnale audio cu ajutorul unui dispozitiv numit modem (modulator-demulator). Datorit
limitrilor impuse de caracteristicile sistemului telefonic existent, o astfel de comunicaie nu se
poate realiza prin tehnicile de comunicaie paralel.
Viteza comunicaiei seriale se msoar n bii pe secund (bps), iar domeniul de variaie
se situeaz ntre cteva sute de bii pe secund i milioane de bii pe secund. O alt unitate

69

uzitat este rata band (band rate); ea se refer la viteza cu care se schimb starea liniei pe care
are loc comunicaia.
O alt metod de cretere a eficienei transferurilor de date (inclusiv stocarea datelor)
este compresia de date (data compression), adic reducerea numrului de bii necesar pentru
reprezentarea informaiilor.
n cazul reprezentrii unor iruri de caractere se poate recurge la un cod Huffman (cod
dependent de frecven). n cadrul acestui cod, lungimea unui ir de bii care reprezint un
caracter s fie invers proporional cu frecvena de utilizare a caracterului.
n acest fel se obine o reprezentare mai scurt a textului dect dac am utiliza un cod de
lungime uniform (codul ASCII). Eforturile de standardizare a tehnicilor de compresie a datelor
au dus la includerea acestora n multe din modemurile existente n prezent pe pia. Atunci cnd
2 modemuri care utilizeaz scheme de compresie compatibile comunic ntre ele, modemul
emitor comprim datele nainte de a efectua transmisia, iar modemul receptor decomprim
datele dup recepionarea lor.
Folosind asemenea soluii, modemurile pot obine rate de transfer echivalente cu 56700
bps, chiar dac de fapt sunt transmii numai 14400 bii pe secund, la o rat band de 1200.

Limbajul - main
Fiecare instruciune/main are o lungime de doi octei. Primii patru bii alctuiesc
cmpul codului de operaie, iar urmtorii doisprezece bii formeaz cmpul operandului.
n tabelul urmtor sunt prezentate instruciunile/main, n notaie hexazecimal, nsoite
de o scurt descriere. Literele R, S i T sunt utilizate n locul cifrelor hexazecimale pentru a
reprezenta identificatorul de registri. Literele X i Y sunt utilizate n locul cifrelor hexazecimale
n diferite cmpuri care nu reprezint registrii.

70

Cod
operaie

Operand

D e s c r i e r e
ncarc (LOAD) registrul R cu valoarea gsit n celula de

RXY

memorie a crei adres este X Y.


Ex. 1 4 A 3 va avea ca rezultat plasarea coninutului celulei de
memorie cu adresa A 3 n registrul 4.
ncarc (LOAD) registrul R cu valoarea reprezentat de irul de bii

RXY

X Y.
Ex. 2 0 A 3 va avea ca rezultat nscrierea valorii A 3 n registrul
0.
Stocheaz (STORE) valoarea registrului R n celula de memorie a

RXY

crei adres este X Y.


Ex. 3 5 B 1 va avea ca rezultat plasarea coninutului registrului 5
n celula de memorie cu adresa B 1.
Mut (MOVE) coninutul registrului R n registrul S.

ORS

Ex. 4 0 A 4 va avea ca rezultat copierea coninutului registrului A


n registrul 4.
Adun (ADD) irurile de bii din registrii S i T, ca i cum ar fi
reprezentri n complement fa de doi, i depune rezultatul n

RST

registrul R.
Ex. 5 7 2 6 are ca rezultat adunarea valorilor din registrii 2 i 6 i
plasarea rezultatului n registrul 7.
Adun (ADD) irurile de bii din registrii S i T ca i cum ar fi
reprezentai n virgul mobil i depune rezultatul n registrul R.

RST

Ex. 6 3 4 E are ca rezultat adunarea valorilor din registrii 4 i E ca


valori reprezentate n virgul mobil i plasarea rezultatului n
registrul 3.

71

Cod
operaie

Operand

D e s c r i e r e
Execut un sau logic (OR) ntre irurile de bii din registrii S i T i
depune rezultatul n registrul R.

RST

Ex. 7
C B 4 are ca rezultat executarea unui sau logic ntre coninutul
registrilor B i 4 i plasarea rezultatului n registrul C.
Execut un i logic (AND) ntre irurile de bii din registrii S i T i

RST

depune rezultatul n registrul R.


Ex.

8 0 4 5

are ca rezultat executarea unui i logic ntre

coninuturile registrilor 4 i 5 i plasarea rezultatului n registrul 0.


Execut un sau exclusiv (XOR) ntre irurile de bii din registrii S
9

RST

i T i depune rezultatul n registrul R.


Ex. 9 5 F 3 are ca rezultat executarea unui sau exclusiv ntre
coninutul registrilor F i 3 i plasarea rezultatului n registrul 5.
Rotete (ROTATE) irul de bii din registrul R cu un bit la dreapta
de X ori. La fiecare rotaie, bitul cel mai puin semnificativ este

ROX

mutat pe poziia bitului cel mai semnificativ.


Ex.

A 4 0 3

are ca rezultat mutarea circular la dreapta a

coninutului registrului 4 de 3 ori.


Salt (JUMP) la instruciunea plasat n celula de memorie cu adresa
X Y dac coninutul registrului R este egal cu coninutul registrului
0. Altfel se continu execuia normal a secvenei de instruciuni.
B

RXY

Ex. B 4 3 C se compar mai nti coninutul registrului 4 cu


coninutul registrului 0. Dac cei doi registri sunt identici, secvena
de execuie va fi modificat astfel nct urmtoarea instruciune
care se va executa s fie cea aflat la adresa de memorie 3 C.
Altfel, execuia progra-mului va continua n mod normal.

000

Oprirea (HALT) execuiei.


Ex. C 0 0 0 are ca rezultat oprirea execuiei programului.

72

TEST AUTOEVALUARE 2 (Manipularea datelor)

1. Precizati care este ordinea corecta a celor trei pasi in care se executa o instructiune :
1. extragere, decodificare, executie
2. decodificare, extragere, executie
3. extragere, executie, recodificare
2. Care din afirmatiile despre instructiunile de transfer de date este adevarata :
1. manipuleaza date
2. dirijeaza modul de executie a programelor
3.

realizeaza operatii de intrare / iesire

3. Se da urmatoarea secventa de program (adunarea a doua valori stocate in memorie)


Pasul 1

Se incarca un registru cu o
valoare din memorie.

Pasul 2

Se incarca alt registru cu o alta


valoare din memorie.

Pasul 3

Daca a doua valoare este zero


salt la pasul 6

Pasul 4

Se imparte continutul primului


registru la continutul celui de al
doilea registru si se depune
rezultatul in al treilea registru

Pasul 5

Se stocheaza continutul celui


de al treilea registru

Pasul 6

Stop.

Precizati pentru fiecare pas, in coloana treia, categoria/tipul instructiunii implicate.

73

4. Care dintre urmtoarele afirmaii despre prelucrarea interactiv (interactive processing)


este fals:
1. nu permite executarea programelor ce poart un dialog cu utilizatorul
2. prelucrarea interactiv permite prelucrarea n timp real (real time processing)
3. lucrrile stocate n vederea execuiei n memoria de mas sunt deservite dup
principiul FIFO (primul intrat, primul ieit)
5. Care din afirmatiile despre instructiunile de transfer de date este falsa :
1. manipuleaza date
2. dirijeaza modul de executie a programelor
3. realizeaza operatii de intrare / iesire, respectiv in / din calculator

74

UNITATEA DE NVARE 3

3.

Sistemele de operare

3.1.

Evoluia sistemelor de operare

Sisteme cu un singur procesor


Pentru primele sisteme de operare s-a acionat asupra simplificrii ncrcrii programelor
i reducerea perioadei de tranziie dintre lucrri. A fost stabilit un singur operator care efectua
toate operaiile cu calculatorul.
Operatorul ncrca toate materialele pe suportul de stocare de mas al calculatorului,
unde sistemul de operare avea acces la ele pentru a le executa. Acesta a fost nceputul
prelucrrii pe loturi (batch procession) - executarea lucrrilor prin plasarea lor ntr-un grup
unic i apoi reluarea lor fr o alt interaciune cu utilizatorul. n vederea execuiei, lucrrile
stocate n memoria de mas erau plasate ntr-o coad de lucrri (job queue) (fig. 3.1).

Figura 3.1 - Prelucrare pe loturi

Coada reprezint o structur de stocare n care obiectele (lucr-rile) sunt organizate dup
principiul primul intrat, primul ieit (FIFO First Input First Output).

75

Un dezavantaj al prelucrrii utiliznd administrator de sistem este acela c, dup ce


lucrarea a fost transmis n coada de lucrri, utilizatorul nu mai poate interveni asupra
programului.
Pentru a rspunde la aceste cerine au fost dezvoltate noi sisteme de operare care permit
prelucrarea interactiv (interactive processing) (fig. 3.2.).

Figura 3.2 - Prelucrarea interactiv

Aceste sisteme permit executarea unui program care poart un dialog cu utilizatorul prin
intermediul terminalelor de control la distan sau al staiilor de lucru. Sistemele interactive au
dat natere conceptului de prelucrare n timp real (real time processing).
Dac sistemele interactive ar fi putut s se adreseze unui singur utilizator la un moment
dat, prelucrarea n timp real n-ar fi pus nici o problem. Datorit preului ridicat al
calculatoarelor este necesar ca fiecare main s deserveasc mai muli utilizatori.
O soluie la aceast problem este proiectarea si realizarea sistemului de operare n aa
fel nct s parcurg pe rnd diferitele activiti ce trebuie executate printr-un proces numit
partajarea timpului.
Mai exact, partajarea timpului (time sharing) se refer la tehnica de mprire a
timpului n intervale, denumite felii de timp (time slices), cu restricia executrii unei activiti
numai ntr-o felie timp la un moment dat. La sfritul fiecrei felii de timp, activitatea curent
este trecut n repaus i o alt activitate primea dreptul de execuie n urmtoarea felie de timp.
Prin baleierea rapid a activitatilor n acest mod se crea iluzia executrii simultane a mai multor

76

procese. n prezent partajarea timpului este utilizat att n sistemele cu un singur procesor, ct
i n sistemele multiprocesor, dar n cazul primelor este denumit de obicei multitasking (iluzia
c mai multe activiti sunt desfurate simultan).
Sisteme multiprocesor
Nevoia de a partaja informaiile i resursele ntre diferite calculatoare a condus la ideea
conectrii calculatoarelor pentru schimbul de informaii.
A aprut conceptul de structur de mai multe calculatoare mici, conectate ntr-o reea
(net work), prin care utilizatorii partajeaz resursele. Software-ul pentru controlul unei reele de
calculatoare poate fi privit ca un sistem de operare n reea.

3.2.

Arhitectura unui sistem de operare

Pentru a nelege un sistem de operare tipic, propunem o clasificare a categoriilor de


componente.

Figura 3.3 Clasificarea software-ului

Exist dou categorii de software distincte : software de aplicaii (application software)


i software de sistem (system software). Software-ul de aplicaii conine programele care
efectueaz anumite activiti particulare specifice beneficiarului (end user-ului).
Spre deosebire de software-ul de aplicaii, software-ul de sistem efectueaz acele
activiti care sunt comune sistemelor de calcul n general.
Clasa software-ului de sistem se mparte n dou categorii: sistemul de operare propriuzis i module software numite software utilitar. ntr-un anumit sens, software-ul utilitar const n

77

uniti de software care extind caracteristicile sistemului de operare (abilitatea de formatare a


unui disc sau de copiere a unui fiier).
Unii utilizatori de calculatoare includ n clasa de software utilitar orice software livrat
odat cu sistemul de operare.

Interfaa
Partea dintr-un sistem de operare care definete modul de interaciune dintre sistemul de
operare i utilizatorii si poart numele de interfa (shell). Sarcina interfeei este aceea de a
permite comunicarea cu utilizatorul (sau utilizatorii) calculatorului.
Interfeele moderne realizeaz acest lucru folosind o interfea grafica cu utilizatorul
(graphical user interface - G U I), n care obiectele manipulate (fiiere i programe) sunt
reprezentate grafic pe ecran prin pictograme (incons). Astfel de sisteme permit utilizatorului s
execute comenzi prin selectarea i deplasarea pictogramelor pe ecran cu un dispozitiv denumit
"mouse". Vechile interfee comunicau cu utilizatorul numai prin mesaje de tip text (utiliznd
tastatura i ecranul). Interfaa realizeaz legtura ntre un utilizator i "inima" sistemului de
operare (vezi fig. 3.4).

Figura 3.4 - Interfaa dintre utilizatori i sistemul de operare

78

Nucleul
Partea din interiorul unui sistem de operare este adesea denumit nucleu (kernel).
Nucleul conine acele componente software care efectueaz operaiile primare necesare pentru
funcionarea calculatorului.
Una din aceste componente este administratorul de fiiere (file manager), avnd
sarcina s coordoneze utilizarea facilitilor oferite de memoria mas a calculatorului.
Pentru simplificarea utilizrii calculatorului, sistemele de administrare a fiierului permit
gruparea lor n uniti denumite directoare (directory) sau dosare (folder). Astfel este posibil ca
utilizatorul s-i organizeze fiierele conform scopului propus, permind ca directoarele s
conin alte directoare, denumite subdirectoare, realizndu-se astfel o organizare ierarhizat a
informaiilor. Secvena de directoare care indic drumul pn la un anumit subdirector sau fiier
se numete cale (path).
Orice acces la un fiier se obine prin intermediul administratorului de fiiere, care
solicit deschiderea fiierului. Dac administratorul de fiiere accept cererea de acces, el
furnizeaz informaiile necesare pentru gsirea i manipularea fiierului. Informaiile sunt
stocate ntr-o zon din memoria principal care poart numele de descriptor de fiier (file
descriptor).
O alt component a nucleului const dintr-o colecie de "drivere" de dispozitiv (device
drivers) - module software care comunic cu controlerele (sau uneori direct cu dispozitivele
periferice) pentru efectuarea operaiilor de ctre periferice.
Fiecare "driver" de dispozitiv este proiectat n mod individual pentru un anumit tip de
controler sau dispozitiv (imprimant, disc, monitor...) i traduce cererile formulate n termeni
generali ntr-o secven de instruciuni specifice controler-ului sau dispozitivului ataat acelui
driver.
Alt component a nucleului sistemului de operare este administratorul de memorie
(memory manager), nsrcinat cu activitatea de coordonare a utilizrii memoriei principale a
calculatorului. Aceast component este foarte utilizat n mediile multiutilizator sau
multitasking.
Sarcina administratorului de memorie se complic atunci cnd cantitatea total de
memorie solicitat depete dimensiunea memoriei disponibile. n acest caz, administratorul de
memorie poate crea iluzia unui spaiu suplimentar de memorie rotind programele i datele ntre
79

memoria principal i disc. Aceast memorie iluzorie este denumit memorie virtual (virtual
memory).

Pornirea calculatorului
Lansarea n execuie a sistemului de operare se realizeaz prin intermediul unei proceduri
cunoscute sub numele de ncrcarea sistemului de operare (boot straping) ; ncrcare
(booting).
Zona de memorie n care se ateapt s se gseasc programul pentru execuie se
numete memorie permanent (read-only memory

R O M). Cea mai mare parte din

memoria intern a unui calculator de uz general este memoria volatil, coninutul memoriei
pierzndu-se la oprirea calculatorului.
n scopul ncrcrii sistemului de operare al unui calculator de uz general, memoria
ROM conine un program de mici dimensiuni, denumit bootstrap. La pornirea calculatorului
acest program se execut automat i n multe cazuri obiectul transferului (de pe suportul de
stocare de mas n memoria principal a calculatorului - vezi fig. 3.5) este chiar sistemul de
operare. Dup plasarea n memorie a sistemului de operare, programul bootstrap instruiete VC
s sar la zona de memorie care-l conine.
Din acest moment sistemul de operare devine activ i preia controlul calculatorului.

Figura 3.5.a - Procesul de ncrcare a sistemului de operare

80

(Pasul 1) Calculatorul execut programul de ncrcare aflat n memorie. Sistemul de operare se


afl pe dispozitivul de stocare de mas.

Figura 3.5.b. - Procesul de ncrcare a sistemului de operare

(Pasul 2) Programul de ncrcare realizeaz transferul sistemului de operare n memoria


principal i i cedeaz apoi controlul.

3.3.

Coordonarea activitilor desfurate de calculator

n continuare se va prezenta modul n care sistemul de operare coordoneaz execuia


software-ului de aplicaie i utilitar, ct i pe cea a propriilor sale module.

Conceptul de proces
Unul din cele mai importante concepte, n cadrul sistemelor de operare, este deosebirea
dintre un program i aciunea de execuie a acestuia.
Programul reprezint un set static de directive, iar execuia lui este o activitate dinamic,
ale crei proprieti se modific n timp. Aceast activitate poart numele de proces. Procesul
este caracterizat de starea procesului. Starea procesului reprezint un instantaneu al functionarii
calculatorului la un moment dat. Un singur program poate fi asociat n acelai timp mai multor
procese. (Ex.: Doi utilizatori pot edita simultan documente diferite, ntr-un sistem multiutilizator
cu partajarea timpului, sistemul de operare utiliznd o singur copie a programului de editare).
81

Sarcina sistemului de operare este s coordoneze mai multe procese care concureaz
pentru utilizarea feliilor de timp.
Coordonarea implic alocarea resurselor necesare fiecrui proces (dispozitive periferice,
spaiu n memoria principal, acces la date i acces la unitatea central de prelucrare),
mpiedicarea interferenei proceselor independente i asigurarea schimbului de informaii intre
procese care trebuie s realizeze acest lucru. Pentru aceast tip de comunicaie se folosete
numele de comunicaie ntre procese (interprocess communication).

Administrarea proceselor
Operaiile asociate coordonrii proceselor sunt efectuate de ctre secveniator
(scheduler) i executor (dispatcher), din nucleul sistemului de operare.
Secveniatorul memoreaz o nregistrare a proceselor prezente n sistemul de calcul,
introduce noi procese i le elimin pe cele care s-au terminat. Pentru a putea urmri toate
procesele, secveniatorul le nregistreaz intr-un bloc de informaii denumit tabel de procese
(process table), n memoria principal. n acest tabel sunt memorate informaii, ca: zona de
memorie alocat procesului, prioritatea procesului, dac procesul este n ateptare etc.
Executorul este componenta nucleului care asigur execuia proceselor active,
programate de secveniator.
ntr-un sistem cu partajarea timpului, execuia programelor se realizeaz prin mpartirea
timpului n intervale scurte, fiecare purtnd numele de felie de timp (time slice) i avnd o
durat de cca 50 de milisecunde. Procedura de trecere de la un proces la altul poart numele de
comutare ntre procese (process switch).
La primirea unui semnal de ntrerupere, unitatea central de prelucrare completeaz
ciclul curent de extragere-decodificare- execuie salveaz poziia din procesul curent i ncepe
execuia unui program de tratare a ntreruperilor (interrupt handler), care este stocat la o
locaie predeterminat din memoria principal. Programul de tratare a ntreruperilor este o
component a executorului. Efectul semnalului de ntrerupere este de suspendare a procesului
curent i de transfer a controlului ctre executor.

82

Figura 3.6 - Partajarea timpului ntre procesele A i B

n acest punct executorul permite secveniatorului s actualizeze tabelul de procese, apoi


executorul selecteaz procesul care are cea mai mare prioritate dintre procesele gata de
continuare din tabel i permite procesului selectat s-i nceap felia de timp.
Abilitatea de oprire i de repornire ulterioar a unui proces este de importan vital
pentru succesul unui sistem cu partajarea timpului. Calculatoarele proiectate pentru sisteme de
operare cu partajarea timpului includ aciunea de salvare a valorii contorului de program,
precum i coninutul regitrilor i al celulelor de memorie asociate, ca parte a reaciei unitii
centrale de prelucrare la semnalul de ntrerupere. Ele dispun de obicei de instruciuni de limbaj
main pentru rencrcarea unei stri salvate anterior.

Modelul client/server
Modulele sistemului de operare (ntr-un sistem cu partajarea timpului) concureaz ntre
ele sub controlul executorului pentru feliile (cuantele) de timp.
Pentru a dobndi accesul la un fiier aflat pe un dispozitiv de stocare de mas, orice
proces trebuie s obin mai nti informaiile necesare de la administratorul de fiiere.
Pentru simplificarea comunicaiei ntre procese, componentele unui sistem de operare
sunt adesea proiectate n conformitate cu modelul client/server:
83

Figura 3.7 - Modelul client/server

Figura 3.8 - Structuri de comunicaie ntre clieni i servere, care opereaz pe un calculator sau
sunt distribuite pe mai multe calculatoare

Acest model definete cele dou roluri fundamentale pe care le pot juca diferitele
componente: client (emite cereri ctre uniti, respectiv server (satisface cererile emise de clieni).
Aplicarea modelului client/server n proiectarea software-ului conduce la uniformizarea tipurilor
de comunicaii care au loc n sistem.
Dac componentele unui sistem de operare sunt proiectat ca servere i clieni, comunicaia
ntre componentele din cadrul aceluiai calculator sau ntre componente ale unor calculatoare
aflate la mare distan unele de altele - figura 3.8., are aceeasi forma.
Att timp ct o reea de calculatoare permite trimiterea de cereri i rspunsuri ntre
calculatoare, mai muli clieni i mai multe servere se pot distribui n orice configuraie
convenabil, pentru reeaua respectiv.

84

3.4.

Gestionarea proceselor concurente

Componentele nucleului unui sistem de operare se ocup, n principal, cu alocarea


resurselor calculatorului ctre procesele ce se desfoar n sistem. Atribuim, n acest caz,
termenului resurse att dispozitivele periferice ale calculatorului, ct i funciile de care dispune
calculatorul. (Ex.: Administratorul de fiiere aloc att accesul la fiierele existente, ct i spaiul
pe disc pentru crearea de noi fiiere).
Deoarece un calculator nu gndete independent, ci doar execut instruciuni, pentru ca
sistemul de operare s funcioneze fiabil, s-au dezvoltat algoritmi care s acopere orice problem
identificat ca posibil.

Semafoare
S lum n discuie un sistem de operare cu partajarea timpului i la care este conectat o
singur imprimant. Dac un proces este n situaia de a-i tipri rezultatele, el trebuie s solicite
sistemului de operare accesul la programul driver al imprimantei. n acest moment, sistemul de
operare trebuie s decid dac satisface aceast cerere, verificnd dac imprimanta nu este
cumva utilizat de alt proces. Dac imprimanta este liber, sistemul de operare trebuie s acorde
permisiunea utilizrii ei i s permit procesului s continue.
Dac dou procese ar cpta simultan acces la imprimant, rezultatul n-ar prezenta nici o
utilitate pentru nici unul dintre ele. Soluia ar reprezenta-o utilizarea unui indicator (flag) un bit
n memoria ale crui stri sunt: 1 (setat) i 0 (ters).
Indicatorul ters arat c imprimanta este liber, iar setat indic faptul c imprimanta este
deja alocat. Dei aceast soluie pare bun la prima vedere, exist totui o problem. Operaia de
testare i eventual de setare a indicatorului necesit mai muli pai-main. Nu este exclus ca
operaia s fie ntrerupt dup detectarea unui indicator nul, dar nainte ca indicatorul s fie setat,
ceea ce face posibil apariia situaiei urmtoare:
Presupunem c imprimanta este disponibil i un proces cere utilizarea sa. Indicatorul care
corespunde imprimantei este verificat i gsit ca fiind ters, ceea ce indic c imprimanta este
disponibil. Dar n acel moment procesul este ntrerupt i alt proces i ncepe felia de timp, i
acest nou proces solicit utilizarea imprimantei. Indicatorul imprimantei este verificat din nou i
gsit tot ters, deoarece procesul precedent a fost ntrerupt nainte de a-l putea seta. n consecin,

85

sistemul de operare permite celui de al doilea proces s nceap utilizarea imprimantei. Se ajunge
deci la o situaie n care dou procese utilizeaz simultan aceeai imprimant.
Problema este c operaia de testare i (eventual) de setare a indicatorului trebuie s fie
terminat fr a fi ntrerupt prin utilizarea instruciunilor de invalidare i validare a ntreruperilor,
disponibile n limbajele-main.
O alt metod o reprezint utilizarea instruciunii de testare i setare (test-and-set), care
este disponibil n multe limbaje-main. Unitii centrale de prelucrare i se cere s citeasc
valoarea unui indicator, s o memoreze i apoi s seteze indicatorul, toate acestea printr-o singur
instruciune-main. Avantajul acestei metode este c, de vreme ce unitatea central termin
ntotdeauna de executat o instruciune nainte de a sesiza o ntrerupere, operaia de testare i setare
a indicatorului, implementat cu o singur instruciune, nu poate fi ntrerupt.
Un indicator implementat corect, ca mai sus, poart numele de semafor (semaphore). Prin
similitudine o secven de instruciuni care trebuie executat fr ntreruperi corespunde unei
poriuni de cale ferat pe care poate trece, la un moment dat, un singur tren. O asemenea secven
de instruciuni poart numele de zon critic (critical region). nainte de a intra ntr-o zon
critic, un proces trebuie s gseasc nul semaforul asociat ei i s-l seteze, apoi trebuie s tearg
semaforul dup ieirea din zona critic.

Interblocarea
O alt problem care poate aprea n timpul alocrii resurselor este interblocarea
(deadlock) situaia n care desfurarea a dou sau mai multe procese este blocat, deoarece
fiecare dintre ele ateapt acces la resursele alocate celuilalt.
Un alt exemplu apare n situaia n care procesele creeaz noi procese pentru efectuarea
unor operaii mai simple. Dac secveniatorul nu are destul spaiu n tabelul de procese i
fiecare proces din sistem trebuie s creeze un proces suplimentar nainte de a-i termina treaba,
atunci nici un proces nu va putea continua.
La o analiz mai atent, constatm c poate s apar o interblocare numai dac sunt
satisfcute simultan urmtoarele trei condiii:
1. Exist o competiie pentru resurse care nu pot fi partajate;
2.

Resursele sunt solicitate n mod parial, ceea ce nseamn c, dispunnd


resurse, un proces va reveni ulterior solicitnd mai multe;
86

de

anumite

3. O dat ce o resurs a fost alocat, nu se poate fora eliberarea sa.


Concluzia care rezult este c eliminarea interblocrii se poate face prin eliminarea uneia
dintre cele trei condiii de mai sus.
Aa cum am vzut, pentru ca un calculator s poat ndeplini o anumit sarcin, trebuie si furnizm un algoritm care s-i spun exact ce are de fcut. n acest sens, n continuare vom
prezenta cteva concepte fundamentale, ca:

dezvoltarea i reprezentarea algoritmilor

controlul iteractivitii i recursivitii algoritmilor.


De asemenea vor fi descrii n continuare civa algoritmi foarte cunoscui de cutare i

sortare.

87

TEST AUTOEVALUARE 3 (Sisteme de operare)


1. Un job queue poate fii definit ca:
a. locul unde lucrrile sunt stocate n memoria de mas
b. executarea lucrrilor prin plasarea lor ntr-un grup unic
c. o coad de lucrri
2. O coad poate reprezenta:
a. O structur de stocare
b. O coad de lucrri (job queue)
c. Primul intrat, primul ieit (FIFO)
3. Principiul dup care o coad poate funciona, este:
a. First Input First Ouput (FIFO)
b. Last Input First Ouput (LIFO)
c. First Input Last Out (FILO)
d. First Come First Served (FCFS)
e. Garbage In Garbage Out (GIGO)
4. Partajarea timpului (time sharing) se refera la tehnica de:
a. felii de timp (time slices)
b. mparirea timpului n interval
c. Executare a unei activiti ntr-o felie de timp la un moment dat
5. Partajarea timpului (time sharing) este utilizat n:
a. Programarea algoritmilor i stabilirea gradului de complexitate
b. Sistemele cu un singur procesor
c. Sistemele multiprocesor
6. Arhitectura unui sistem de operare este compus din:
a. Software
b. Aplicaie
c. Interfa
d. Algoritmi

88

7. Software-ul de system se mparte n:


a. Sistem de aplicaii pentru sistemul de operare
b. Sistemul de operare propriu-zis
c. Module software
d. Software utilitar
8. Interfaa unui sistem de operare definete:
a. Modul de interaciune dintre sistemul de operare i utilizatorii si
b. Comunicarea cu procesele unui sistem de operare
c. Comunicarea cu utilizatorul
9. Partea din interiorul unui sistem de operare poart numele de:
a. Nucleu (kernel)
b. Director (folder)
c. Cale (path)
10. Secvena de directoare indic:
a. Poziia unde m aflu pe hard-disk
b. Drumul pn la un anumit subdirector sau fiier
c. Operaiile primare necesare pentru funcionarea calculatorului
11. O component a nucleului sistemului de operare este:
a. Administratorul de memorie (memorz manager)
b. Administratorul de procese
c. Driver
12. Memoria iluzorie a unui sistem de operare:
a. Memorie fizic
b. Memoria virtual
c. Memoria RAM
13. Boot straping se refer la:
a. Zona de memorie n care este ncrcat sistemul de operare
b. Lansarea n execuie a sistemului de operare
c. Memoria permanent

89

14. Memoria n care se gsete programul pentru execuie este:


a. ROM (Read-only memory)
b. RAM (Random Access Memory)
c. HDD (Hard Disk Drive)
15. Un program reprezint:
a. Un set static de directive
b. O list de instruciuni
c. O activitate dinamic
16. Sarcina unui sistem de operare este s coordoneze:
a. Un proces sau mai multe procese
b. Fiierele de pe hard disk
c. Alocarea resurselor necesare
17. Coordonarea proceselor sunt efectuate de :
a. Secveniator (scheduler)
b. Executor (dispatcher)
c. Interprocess communication
18. Secveniatorul memoreaz (scheduler) se refer la:
a. Memorarea nregistrrii proceselor prezente n sistemul de calcul
b. Eliminarea proceselor ce se afl n memorie
c. Creearea de noi procese ce sunt memorate n managerul de procese al sistemului
de operare
19. Procesele active sunt programate de:
a. Secveniator
b. Executor
c. Managerul de task-uri
20. Executorul (dispatcher) se refer la:
a. Execuia proceselor active
b. Este component a nucleului
c. Programarea secvenial a proceselor
21. Definii modelul client/server prin precizarea principalelor componente importante
precum i rolul legturii dintre ele.
90

22. Modelul client/server se refer la:


a. Proiectarea software-ului
b. Proiectarea echipamentelor hardware necesare rulrii unui software
c. Comunicaia dintre procesele unui sistem de operare n vederea rulrii unui
software n parametrii optima
23. Termenul de resurse se refer la:
a. Dispositive periferice
b. Administratorul de fiiere
c. Procesele calculatorului
24. Definii conceptul de semafor si exemplificai funcionarea acestuia printr-un exemplu.
25. Interblocarea poate aprea n condiiile:
a. Exist o competiie pentru resurse care nu pot fi partajate
b. O data ce o resurs a fost alocat, nu se poate fora eliberarea sa
c. Resursele sunt solicitate n mod parial, ceea ce nseamn c, dispunnd de
anumite resurse, un process va reveni ulterior

91

UNITATEA DE NVARE 4

4.

Algoritmii

4.1.

Conceptul de algoritm

Algoritmul este abstract i trebuie difereniat de reprezentarea sa. n acest context, al


distinciei dintre algoritm i reprezentarea sa, se poate lmuri i diferena dintre dou concepte
nrudite - program i proces. Programul este reprezentarea unui algoritm (reprezentarea formal a
unui algoritm proiectat n vederea unei aplicaii informatice).
Procesul este definit ca fiind activitatea de execuie a programului, dar putem defini
procesul ca activitatea de execuie a unui algoritm. Deci, programele, procesele i algoritmii sunt
entiti nrudite, dar distincte.
Un algoritm const dintr-o mulime ordonat de pai executabili, descrii fr echivoc,
care definesc un proces finit.
Analiznd definiia algoritmului, ne vom opri asupra cerinei ca paii care descriu
algoritmul s fie ordonai, deci trebuie s aibe o ordine clar n execuia pailor. Exist i algoritmi
paraleli care conin mai multe secvene de pai, fiecare secven urmnd s fie executat de alt
procesor n cadrul unei maini multiprocesor (deci nu este vorba numai de un fir de execuie).
n continuare vom analiza cerina ca algoritmul s fie compus din pai executabili. Fie
instruciunile:
Pasul 1: Construii o list cu toate numelele ntregii pozitive.
Pasul 2: Sortai lista n ordine descresctoare.
Pasul 3: Extragei primul numar ntreg din lista rezultat.
Aceste instruciuni nu descriu un algoritm, deoarece pasul 1 i 2 sunt imposibil de executat
(nu se poate construi o list cu toi ntregii pozitivi i ntregii pozitivi nu pot fi aezai n ordine
descresctoare.
Alt cerin, descrierea fr echivoc a pailor algoritmului nseamn ca, n timpul execuiei
programului, informaiile din fiecare stare a procesului trebuie s fie suficiente pentru a determina
unic i complet aciunile n fiecare pas.
92

Execuia algoritmului nu necesit creativitate, ci doar capacitatea de a urma instruciunile.


Descrierea algoritmului ca un proces finit nseamn c execuia algoritmului trebuie s aibe
sfrit. Trebuie realizata o delimitatare ntre procesele care se termin cu un rspuns- rezultat i
cele care se execut la infinit, fr a ajunge la vreun rezultat.
Termenul de algoritm este folosit adesea ntr-o accepiune mai puin riguroas pentru a
descrie procese care nu sunt neaprat finite. (Ex. Algoritmul de mprire fr rest a numerelor
ntregi, mprirea lui 1 la 3).

4.2.

Reprezentarea algoritmilor

Primitive
Reprezentarea unui algoritm nu se poate face n absena unui limbaj. n cazul oamenilor
acest limbaj poate fi limbajul natural uzual sau limbajul imaginilor. Aceste canale naturale de
comunicare duc la nenelegeri, termenii folosii pot avea mai multe sensuri.
Informatica abordeaz aceste probleme stabilind o mulime bine definit de blocuri
elementare care stau la baza reprezentrii algoritmilor. Aceste blocuri elementare poart numele
de primitive. Definirea precis a primitivelor elimin ambiguitatea i permite un grad uniform de
detaliere.
O mulime de reguli care guverneaz modul n care aceste primitive pot fi combinate
pentru reprezentarea ideilor mai complexe constituie un

limbaj de programare. Fiecare

primitiv const din dou elemente: sintaxa i semantica. Sintaxa se refer la reprezentarea
simbolic a primitivei, n timp ce semantica se refer la conceptul reprezentat (semnificaia
primitivei respective).
Pentru a reprezenta algoritmi destinai calculatorului utiliznd un ansamblu de primitive,
se poate porni de la instruciunile pe care calculatorul tie s le execute. Detalierea algoritmilor la
acest nivel este incomod, n mod normal se utilizeaz primitive de nivel mai nalt, construite pe
baza primitivelor de nivel sczut oferite de limbajul-main. Rezult astfel un limbaj de
programare formal, n care algoritmi pot fi exprimai ntr-o form conceptual mai nalt dect n
limbajul-main.

93

Pseudocodul
Vom prezenta n continuare un sistem de notare mai intuitiv, cunoscut sub numele de
pseudocod. O metod de obinere a pseudocodului este de a relaxa pur i simplu regulile
limbajului formal n care va fi exprimat varianta final a algoritmului.
Ceea ce ne propunem este s discutm despre dezvoltarea i prezentarea algoritmilor fr
s ne oprim asupra unui limbaj de programare. Ne propunem s reprezentm anumite structuri
care pot deveni primitive. Printre structurile mai des ntlnite remarcm:
1. Selectarea ntre dou activiti n funcie de ndeplinirea unei condiii. Fiecare dintre
aceste instruciuni poate fi rescris astfel nct s respecte structura:
if (condiie) then (activitate)
else (activitate)
, unde am folosit cuvintele-cheie if (dac), then (atunci) elese (astfel) pentru a introduce
substructurile din cadrul structurii principale i paranteze pentru delimitarea granielor dintre
aceste substructuri.
Adoptnd pentru pseudocod aceast structur sintactic, am obinut o metod uniform de
exprimare a unei structuri semantice des ntlnite. n cazurile n care activitatea alternativ (else)
lipsete, vom utiliza sintaxa mai scurt:
if (condiie) then (activitate).
2. alt structur algoritmic [ntlnit] este executarea repetat a unei instruciuni sau a unei
secvene de instruciuni atta timp ct o anumit condiie este adevrat. Modelul
pseudocodului este:
while (condiie) do (activitate).
O astfel de instruciune nseamn verificarea condiiei, executarea activitii i revenirea
la verificarea condiiei. Cnd condiia nu mai este ndeplinit, se trece la executarea instruciunii
care urmeaz. Uneori ne referim la anumite valori prin intermediul unor nume sugestive. Pentru
astfel de asocieri se utilizeaz:
assign (nume) the value (expresie)
, unde nume este un nume descriptiv, iar expresie indic valoarea care este asociat numelui
respectiv.
Lizibilitatea programului poate fi mbuntit prin identare (adic scriere poziionat pe
condiii logice).
94

Exemplu: if (articolul este impozabil)


then [if (pre > limit)
then (pltete x)
else (pltete y)]
else (pltete z).
Vom folosi pseudocodul pentru a descrie activiti care s fie utilizate ca instrumente
abstracte n alte aplicaii, aceste uniti de program le vom numi n continuare procedur i vom
folosi cuvntul procedure pentru atribuirea fiecrui modul de pseudocod un nume.
procedure nume.
Aceast instruciune introductiv va fi urmat de instruciunile care descriu aciunea
modulului respectiv. n figura 4.1 este prezentat pseudocodul unei proceduri numit Salutri, care
tiprete de trei ori mesajul Hello:

procedure Salutri
assign Count the value 3
while Counct 0 do
(tiprete mesajul Hello i
assign Count the value Count 1).

Figura 4.1 - Procedura Salutri exprimat n pseudocod

Atunci cnd este nevoie de efectuarea procedurii altundeva n cadrul secvenei


pseudocodului, procedura va fi apelat prin nume. Procedurile trebuie s fie ct mai generale
posibil. Astfel o procedur care sorteaz orice list de nume, trebuie s fie scris n aa fel nct
lista respectiv s nu fie specific procedurii, ci s fie desemnat n reprezentarea acesteia sub un
nume generic. Vom adopta convenia de a scrie aceste nume generice ntre paranteze pe acelai
rnd cu numele procedurii.
(Ex.)

procedure Sort (List).

Atunci cnd avem nevoie de serviciile procedurii Sort, va fi identificat lista are se substituie listei
List. (Ex.):

se aplic procedura Sort asupra listei cu membrii organizaiei;


95

se aplic procedura Sort asupra listei cu elevii clasei.


Nu trebuie pierdut din vedere faptul c scopul n care folosim pseudocodul este s

creionm algoritmi, nu s scriem un program.

4.3.

Dezvoltarea algoritmilor

Dezvoltarea unui program const din dou activiti:

dezvoltarea algoritmului;

reprezentarea algoritmului ca program.


Pn acum ne-a preocupat problema reprezentrii algoritmilor, dar stabilirea algoritmului

constituie, n general, cea mai incitant etap a dezvoltrii software-ului.

Teoria rezolvrii problemelor


Capacitatea de a rezolva diferite probleme rmne mai degrab un talent artistic care
trebuie dezvoltat. Etapele pentru rezolvarea problemelor, definite n linii mari de matematicianul
Polya (1945), rmn valabile i astzi ca principii de baz:

Faza 1. nelegerea problemei;

Faza 2. Conceperea unui plan de rezolvare a problemei;

Faza 3. Punerea n practic a planului respectiv;

Faza 4. Evaluarea soluiei din punctul de vedere al corectitudinii

i ca potenial

instrument pentru rezolvarea altor probleme.


n contextul dezvoltrii programelor, aceste etape devin:

Faza 1. nelegerea problemei;

Faza 2. Conceperea unei metode de rezolvarea problemei prin procedur algoritmic;

Faza 3. Formularea algoritmului i reprezentarea lui ca program;

Faza 4. Evaluarea programului din punctul de vedere al corectitudinii si ca potenial


instrument pentru rezolvarea altor probleme.

96

Importana primului pas


Vom identifica pe scurt cteva metode de rezolvare a problemelor. Toate aceste metode au
ceva n comun i anume: important este primul pas.
Acest prim pas se poate realiza prin mai multe metode:
1. Una dintre aceste metode ar fi s procedm invers, anume: dac se dorete a se gsi o
metod de a obine o anumit ieire pe baza unei intrri date, se pornete de la valoarea de
ieire, ncercnd s se ajung la valoarea de intrare.
2. O alt metod este aceea de a se cuta o problem nrudit cu cea care trebuie rezolvat
mai simplu sau care are deja o soluie. Se va ncerca aplicarea soluiei problemei nrudite
i asupra problemei iniiale. Aceast metod este foarte util n contextul dezvoltrii
programelor pentru care dificultatea const n gsirea algoritmului general care s permit
rezolvarea tuturor cazurilor.
3. n final avem metoda rafinrii pas cu pas. Aceast tehnic pornete de la mprirea
problemei n mai multe subprobleme. Metoda permite abordarea problemei generale n
mai multe etape, n ideea c fiecare n parte este mai uor de rezolvat dect problema n
ansamblul ei. n continuare subproblemele vor fi la rndul lor descompuse n mai multe
etape, pn cnd se ajunge la o serie de subprobleme uor de rezolvat.
Rafinarea pas cu pas este o metodologie descendent (top-down), care merge de la general
ctre particular. Exist, de asemenea, i metodologia ascendent (bottom-up) care pornete de la
cazurile particulare ctre cazul general. Soluiile obinute prin metoda rafinrii pas cu pas au n
mod natural o structur modular, motiv pentru care aceast metod este apreciat.
Un algoritm cu o structur modular poate fi uor adoptat la o reprezentare modular, ceea
ce simplific mult gestionarea activitii de dezvoltare a programului propriu-zis. De asemenea,
modulele rezultate din aplicarea metodei de rafinare pas cu pas sunt pe deplin compatibile cu
ideea de lucru n echip, modul cel mai rspndit de dezvoltare a unui produs software.
Dezvoltarea multor proiecte software pentru prelucrarea datelor presupune o dezvoltare a
unei componente organizatorice. Problema nu presupune descoperirea unui algoritm uluitor, ci
organizarea coerent a sarcinilor care trebuie duse la ndeplinire.
n concluzie, dezvoltarea algoritmilor rmne mai degrab un talent care se dezvolt n
timp, dect o tiin foarte exact cu metodologii bine stabilite.

97

4.4.

Structuri iterative

n cadrul structurilor iterative unele instruciuni se repet ciclic. Vom prezenta n


continuare civa algoritmi celebri: cutarea secvenial si binar.

Algoritmul de cutare secvenial


Scopul acestui algoritm este determinarea unei valori dac exist sau nu n cadrul unei
liste. Presupunem c lista a fost sortat pe baza unei reguli oarecare, funcie de entitile
componente (o list de nume respect ordinea alfabetic, o list de numere respect ordinea
cresctoare/descresctoare). Pentru exemplificare, propunem urmtorul algoritm: cutm ntr-o
list atta timp ct mai sunt nume i numele-int este mai mic dect numele curent.
n pseudocod, acest proces se reprezint astfel:
se selecteaz primul articol din list ca articol de test
while (valoare-int > articol-test i mai sunt articole de
luat n considerare)
do ( selecteaz urmtorul articol din list ca
articol de test).
La ieirea din aceast structur, articolul de test va fi mai mare sau egal cu numele-int,
fie va fi ultimul nume din list. n oricare din aceste cazuri putem determina dac procesul s-a
ncheiat cu succes prin compararea valorii articolului de test cu valoarea-int. Pentru aceasta se
adaug la valoarea rutinei n pseudocod (deja scris) urmtoarea instruciune:
if (valoare-int = valoare articol-test)
then (declar cutarea un succes)
else (declar cutarea un eec).
Am fcut ipoteza (presupunerea) c lista conine cel puin un articol. Totui vom plasa
rutina pe ramura else a instruciunii:
if (lista este goal)
then (declar cutarea un eec)
else (...).

98

n acest mod vom obine procedura din fig. 4.2.

procedure Search (list target value)


if (lista este goal)
then (declar cutarea un eec)
else [(selecteaz primul articol din list ca articol de test)
while(target value = articolul de test i mai sunt articole
de luat n considerare)
do (selecteaz urmtorul articol din list ca articol de
test)
if (target value = articolul de test)
then (declar selectarea un succes)
else (declar cutarea un eec)]

Figura 4.2 - Algoritm de cutare secvenial reprezentat n pseudocod


(sequential search algoritm)

Acest algoritm este folosit pentru listele de mici dimensiuni sau cnd utilizarea lui este
dictat de alte considerente.

Controlul ciclurilor
Utilizarea repetat a unei instruciuni sau a unei secvene de instruciuni este unul din
conceptele algoritmice cele mai importante. O metod de implementare a acestui concept este
structura iterativ denumit ciclu/bucl (loop).
n cadrul buclei o serie de instruciuni, numit corpul buclei, este executat n mod repetat
sub supravegherea unui proces de control.

Ex. while (condiie) do (corpul ciclului).

Instruciunea while de mai sus reprezint o structur ciclic deoarece execuia ei conduce
la parcurgerea ciclic a secvenei: testeaz condiia; execut corpul ciclului; testeaz condiia;
99

execut corpul ciclului, ... , testeaz condiia, pn cnd condiia este ndeplinit. S analizm mai
ndeaproape i instruciunea de control. Controlul unui ciclu (bucle) const n trei activiti:
iniializare, testare, modificare, aa cum se prezint i n fig. 4.3:

iniializare =

stabilete o stare iniial care poate fi modificat n vederea

atingerii condiiei de ncheiere


testare

compar condiia curent cu condiia de ncheiere i, n caz de

egalitate, ncheie procesul de repetare


modificare = schimb starea astfel nct aceasta s avanseze ctre condiia de
incheiere

Figura 4.3 - Componentele controlului repetitiv

Figura 4.4 - Structura ciclului de tip while


Exist dou structuri de tip bucl foarte rspndite i anume: while (condiie)

do

(activitate) care se reprezint prin schema logic (flowchart) din fig. 4.4. n cazul structurii while
testarea condiiei de ncheiere se face naintea executrii corpului ciclului.

100

Figura 4.5 - Structura ciclului de tip repeat

A doua structur tip bucl, reprezentat n fig 4.5., solicit s se execute mai nti corpul
ciclului i dup aceea s se testeze condiia de ncheiere. Pentru reprezentarea schemei din fig. 4.5.
n pseudocod se utilizeaz urmtoarea formulare :
repeat (activitate) until (condiie).
Ca exemplu suplimentar de utilizare a structurilor iteractive vom prezenta algoritmul de
sortare prin inserare. Algoritmul de sortare prin inserare sorteaz o list extrgnd n mod repetat
cte un articol i inserndu-l n poziia corespunztoare ordinii dorite.
procedure Sort (lista)
if (lista conine dou sau mai multe articole) then
[(umbrete poriunea din lista de la al doilea pn la ultimul articol;
repeat (elimin umbra din primul articol al poriunii umbrite din
list i identific acest articol drept pivot; mut pivotul
ntr-o locaie temporar lsnd n list un spaiu gol);
while (exist un nume deasupra spaiului i acest nume este mai
mare dect pivotul)
do (mut numele de deasupra spaiului n spaiul gol,
lsnd un spaiu deasupra numelui respectiv;
mut pivotul n spaiul gol din list)
until (orice umbr din list a fost eliminat).

Figura 4.6 - Sortarea prin inserare


101

4.5.

Structuri recursive

Structurile recursive reprezint o alternativ de realizare a proceselor repetitive fr a


utiliza cicluri. Pentru a nelege aceast tehnic vom discuta algoritmul de cutare binar
(binary search).

Algoritmul de cutare binar


Vom relua problema cutrii unui articol ntr-o list sortat abordnd metoda pe care o
folosim cnd cutm un cuvnt n dicionar. La cutarea ntr-un dicionar ncepem prin a
deschide dicionarul la o pagin din zona n care credem c se afl articolul cutat. S-ar putea s
gsim cuvntul chiar n pagina respectiv, dac nu, trebuie s continum cutarea. Numai c am
restrns (deja) zona de cutare, putndu-ne rezuma fie la zona dinaintea poziiei curente, fie la
cea de dup poziia curent. Fig. 4.7 este reprezentarea nucleului cutrii binare n pseudocod a
acestui mod de cutare aplicat asupra unei liste generice.
n aceast situaie nu avem avantajul de a ti cu aproximaie n ce zon se afl articolul
cutat, aa c instruciunile din figur ne spun s ncepem prin a deschide lista la articolul din
mijloc. n cazul cnd lista are un numr par de elemente, prin articol de mijloc vom nelege
primul articol din cea de a doua jumtate a listei. Dac articolul astfel selectat nu este cel cutat,
rutina ofer dou alternative, ambele oferind o cutare efectuat cu ajutorul unei proceduri
numit search. Selecteaz mijlocul listei list ca articol de test; execut unul dintre urmtoarele
blocuri de instruciuni, n funcie de situarea valorii-int Target/Value fa de articolul de test.

Figura 4.7 - Nucleul cutrii binare


102

Se observ c procedura permite i rezolvarea cazului cutrii ntr-o list goal dac va fi
completat, obinndu-se pentru cautarea binara programul n pseudocod prezentat n fig. 4.8.
procedure search (lista, Target Value
if (lista este goal)
then (declar cutarea ncheiat cu eec)
else [selecteaz mijlocul listei cu articol de test; execut una dintre urmtoarele
blocuri de instruciuni, n funcie de situarea valorii-int Target Value fa de
articolul de test
Target Value = articolul de test;
(declar cutarea ncheiat cu succes)
Target Value < articolul de test
(aplic procedura search pentru a vedea dac Target

Value este n poriunea din lista

de deasupra articolului de test, i


if (acea cutare este ncununat de succes)
then (declar aceast cutare ncheiat cu succes)
else (declar aceast cutare ncheiat cu eec)]
Target Value > articolul de test
[aplic procedura search pentru a vedea dac Target Value este n poriunea din lista
de sub articolul de test i
if (acea cutare este ncununat de succes)
then (declar aceast cutare ncheiat cu succes)
else (declar aceast cutare ncheiat cu eec)].

Figura 4.8 - Algoritmul cutrii binare reprezentat n pseudocod

4.6.

Eficien i corectitudine

Dou dintre subiectele legate de algoritmi sunt importante i vor fi abordate n


continuare: eficiena i corectitudinea acestora.

103

Eficiena algoritmilor
Dei calculatoarele actuale execut milioane de instruciuni pe secund, eficiena
proiectrii algoritmilor rmne o preocupare important, deoarece adesea diferena dintre un
algoritm eficient i unul ineficient constituie diferena ntre o soluie practic i una inaplicabil.
S analizm o problem practic pentru a nelege mai bine eficiena algoritmilor.
Problema const n regsirea nregistrrii unui student din mulimea nregistrrilor studenilor
(cca 30.000 studeni) din cadrul unei universiti. Pentru nceput vom analiza modul de regsire
folosind algoritmul de regsire secvenial.
Acest algoritm parcurge lista de la nceput, comparnd fiecare articol cu numrul cutat.
Necunoscnd valoarea-int, nu putem spune ct de departe va merge n list aceast cutare.
Statistic ne ateptm ca media s fie pe la jumtatea listei. Prin urmare, n medie algoritmul
secvenial va investiga cca 15.000 de nregistrri pentru fiecare cutare. Dac regsirea i
verificarea unei nregistrri dureaz o milisecund, o astfel de cutare dureaz cca 15 secunde. O
zi de lucru are 28.800 secunde; dac s-ar lucra continuu, algoritmul de cutare secvenial va
permite s se efectueze cca 1.9002.000 de cutri pe zi. Deci regsirea celor 30.000 de studeni
va dura cca. 15 zile.
Acum a venit rndul s analizm cutarea binar. Aceast cutare ncepe prin a compara
valoarea-int cu articolul situat n mijlocul listei. Este posibil s nu gseasc articolul cutat, dar
se reduce aria cutrii la jumtate din lista iniial. Deci dup prima interogare, cutarea binar
mai are de luat n calcul cel mult 15.000 de nregistrri. Dup a doua interogare rmn cel mult
7.500 i aa mai departe, pn la cea de a 15-a interogare cand se gsete articolul cutat. Dac
o interogare dureaz o milisecund, atunci regsirea unei anumite nregistrri se va face n
maximum 0,015 secunde. Aceasta nseamn c pentru a gsi nregistrrile corespunztoare ale
celor 30.000 de studeni, este nevoie de cel mult 7,5 minute.
Cele dou rezultate arat clar o mbuntire substanial a timpului de cutare folosind
algoritmul de cutare binar.

Verificarea produselor software


Verificarea software-ului este o sarcin dintre cele mai impor-tante, iar cutarea unor
tehnici eficiente de verificare constituie unul dintre cele mai active domenii de cercetare.

104

Una din direciile de cercetare este ncercarea de a

demonstra corectitudinea

programelor prin aplicarea tehnicilor logicii formale. Deci, ideea de baz este reducerea
verificrii la o procedur de logic formal care s nu fie afectat de concluziile care pot rezulta
din aplicarea unor argumente intuitive. Pentru demonstrarea corectitudinii unui program vom
porni de la presupunerea c la nceputul execuiei acestuia sunt ndeplinite un numr de condiii,
numite precondiii.
Pasul urmtor const n evaluarea modului n care consecinele acestor precondiii se
propag prin program. Cercettorii au analizat diverse structuri de programe pentru a vedea
cum este afectat execuia lor de o anumit afirmaie despre care se tie c este adevrat nainte
de execuia structurii respective. Dac, de exemplu, se tie c afirmaia este adevrat nainte de
execuia structurii if (condiie)
then (instruciunea 1)
else (instruciunea 2)
, atunci imediat nainte de execuia instruciunii 1 putem spune c att afirmaia respectiv, ct i
condiia de test sunt adevrate, n timp ce dac se execut instruciunea 2 tim c sunt adevrate
afirmaia respectiv i negarea condiiei de test. S lum ca exemplu ciclul repeat din fig 4.9:

Figura 4.9 Aseriuni asociate cu o structura repeat


105

S presupunem c n urma precondiiilor din punctul A putem stabili c o anumit


aseriune este adevrat de fiecare dat cnd n timpul procesului repetitiv este atins punctul B
(o astfel de aseriune care apare n cadrul unui ciclu este cunoscut sub numele de invariant al
buclei). La ncheierea procesului repetitiv, execuia ajunge n punctul C, unde putem spune c
att invariantul, ct i condiia de ieire sunt adevrate.
Invariantul este n continuare adevrat, deoarece testul de ncheiere a ciclului nu
modific nici o valoare de program, iar condiia de ncheiere este adevrat, pentru c astfel
ciclul nu s-ar terminat). Dac aceste aseriuni combinate implic obinerea rezultatului de ieire
dorit, atunci pentru a demonstra c astfel ciclul nu s-ar fi terminat.
Dac aseriunile de mai sus implic obinerea rezultatului de ieire dorit, pentru a
demonstra c programul este corect trebuie s artm c cele dou componente ale controlului,
iniializarea i modificarea, conduc la ndeplinirea condiiei de ncheiere.
Tehnicile formate de verificare a programelor nu au atins un stadiu care s faciliteze
aplicarea lor asupra sistemelor generale de prelucrare a datelor. n cele mai multe cazuri,
programele sunt verificate prin aplicarea lor pe seturi de date de test, procedur care nu este
foarte sigur. Alegerea datelor de test folosite pentru verificarea programelor ar trebui tratat cu
aceeai atenie ca i obinerea unui eantion reprezentativ pentru o cercetare statistic.

106

TEST AUTOEVALUARE 4 (Algoritmii)


1. Definii noiunea de algoritm si prezentai principalele trsturi ce caracterizeaz un
algoritm.
2. Programul este reprezentarea unui:
a. Algoritm
b. Pseudocod
c. Liste de instruciuni
3. Care dintre urmtoarele exemple pot constitui probleme ce se pot rezolva prin
intermediul unui algoritm:
a. Construirea unei liste cu toate numerele ntregi i pozitive
b. Sortarea unei liste n ordine descresctoare
c. Extragerea primului numr ntreg din lista rezultat
4. Care dintre urmtoarele exemple nu pot constitui probleme ce se pot rezolva prin
intermediul unui algoritm:
a. Construirea unei liste cu toate numerele ntregi i pozitive
b. Sortarea unei liste n ordine descresctoare
5. Un algoritm este alctuit din:
a. Procese
b. Instruciuni
c. Liste
6. Definii noiunea de primitive i ilustrai-le printr-un exemplu.
7. O primitiv const din dou elemente. Ele sunt:
a. Sintaxa i Semantic
b. Procese i Semafoare
c. Secveniator i Executor
8. Sintaxa se refer la:
a. Reprezentarea simbolic a unei primitve
b. Reprezentarea n pseudocod a unui algoritm
c. Reprezentarea gradului de complexitate a unui algoritm

107

9. Semantica se refer la:


a. Conceptul reprezentat (semnificaia primitivei respective)
b. Procese i semafoare
c. Reprezentarea simbolic a unei primitive
10. Definirea precis a primitivelor elimin:
a. Ambiguitatea
b. Claritatea
c. Certitudinea
11. Definirea precis a unei primitive permite:
a. Un grad uniform de detaliere
b. Un grad uniform de amplificare
c. Stabilirea de blocuri elementare care stau la baua reprezentrii algoritmilor
12. Un limbaj de programare este constituit din:
a. Semafoare i procese
b. Primitive ce pot fi combinate pentru reprezentarea ideilor mai complexe
c. Instruciuni de ciclare
13. Un pseudocod este:
a. Sistem de notare intuitiv
b. Diagrame UML
c. ablon de proiectare
14. Definii noiunea de pseudocod i ilustrai folosirea acestuia printr-un exemplu, maxim
dou.
15. Funcia If poate fi reprezentat prin pseudocod?
a. Adevrat
b. Fals
16. Funcia If poate exista fr instruciunea else?
a. Adevrat
b. Fals
17. Funcia If poate fi definit ca:
a. if (condiie) then (activitate)
else(activitate)
108

b. if(condiie) then(activitate)
c. if(condiie) do(activitate)
18. Selectarea ntre dou activiti n funcie de ndeplinirea unei condiii, poate fi
reprezentat prin:
a. Funcia If
b. Funcia While
c. Funcia Assign
19. Funcia While const n:
a. Executarea repetat a unei instruciuni sau a unei secvene de instruciuni atta
timp ct o anumit condiie este adevrat.
b. Executarea unei instruciuni folosind un numr exact de pai
c. Executarea unei instruciuni la infinit
20. Modelul pseudocod al instruciunii while este:
a. while(condiie) do(actvitate)
b. if(condiie) while(activitate)
c. do(activitate) if(condiie)
21. Definii funcia while i ilustrai folosirea acesteia printr-un exemplu n pseudocod.
22. Definii pe scurt funcia assign i folosirea acesteia printr-un exemplu n pseudocod.
23. Modelul pseudocod pentru funcia assign este:
a. assign(nume) the value(expresie)
b. assign(instruciune) do(activitate)
c. do(activitate) while(assign(instruciune))
24. Definii noiunea de procedur i ilustrai folosirea acesteia printr-un exemplu
25. Identificai numele procedurii din urmtorul cod:
procedure Salutri
assign Count the value 3
while Counct 0 do
(tiprete mesajul Hello i
assign Count the value Count 1)

109

26. Procedurile trebuiesc s fie:


a. Ct mai generale
b. Ct mai lizibile
c. Greu de neles pentru ali programatori cu excepia celui care a scris-o
27. Dezvoltarea unui program const din:
a. Dezvoltarea algoritmului
b. Reprezentarea algoritmului ca program
c. Gradul de complexitate s fie ct mai mic
28. Definiia teoria rezolvrii problemelor i a programelor preciznd principalele faze i
principii.

110

UNITATEA DE NVARE 5

5.

Limbaje de programare

5.1.

Perspective istorice

Primele generaii
La nceput, programarea presupune o metod foarte laborioas, anume transpunerea
algoritmilor respectivi n limbaj-main, suplimentar fa de proiectarea algoritmului. Dup
localizarea i corectarea erorilor, se poate spune c programul este utilizabil.
Prima simplificare a procesului de programare a fost s se renune la reprezentarea
operaiilor i operatorilor sub form de cifre hexazecimale, atribuindu-se memoria pentru
instruciunile limbajului-main. n cazul operanzilor s-au stabilit reguli pentru atribuirea unor
nume descriptive (identificatori) pentru locaiile de mnemonice i utilizarea acestor nume n
instruciuni.
Iniial programatorii foloseau aceste notaii pentru dezvoltarea programului pe hrtie,
ulterior translatndu-l ntr-o form utilizabil de calculator. Procesul de translatare este un tip de
activitate care poate fi realizat direct de calculator. Utilizarea mnemonicelor s-a oficializat ca
limbaj de asamblare, s-a creat asamblorul, care translateaz programele scrise n limbaj de
asamblare ntr-o form compatibil cu calculatorul.
Limbajele de asamblare au aprut ca un pas uria pe drumul ctre medii de programare
mai eficiente. Limbajele de asamblare, ca limbaje de generaia a doua, prezentau multe
avantaje fa de limbajele-main (prima generaie), dar nu constituiau un mediu de
programare foarte propice.
Orice limbaj de asamblare este dependent de main, deoarece instruciunile folosite se
refer la caracteristicile unui anumit calculator.
Alt dezavantaj al limbajelor de asamblare este acela c programul trebuie gndit la un
nivel foarte cobort (instruciunile urmresc pas cu pas limbajul-main), n loc s se
concentreze asupra unei soluii globale a problemei de rezolvat.

111

Pe baza acestor concepte s-au dezvoltat limbaje de programare, din a treia generaie, la
care primitivele erau de nivel nalt i independente fa de main (calculator). Principala
preocupare n dezvoltarea limbajelor de programare din generaia a treia a fost identificarea unui
ansamblu de primitive de nivel nalt, similare pseudocodului despre care am discutat, care s
permit dezvoltarea produselor software. Dup identificarea setului de primitive la nivel nalt, a
fost scris un program, numit translator, care translateaz programele exprimate n primitive de
nivel nalt n programe n limbaj-main. Aceste programe

de translatare au ajuns s fie

cunoscute sub denumirea de compilatoare.

Independena fa de main
Un program scris ntr-un limbaj din generaia a treia poate fi utilizat la orice calculator,
utiliznd pur i simplu asupra lui compilatorul corespunztor.
O component a problemei portabilitii este faptul c n unele cazuri nu s-a ajuns la un
acord cu privire la definiia corect (exact) a unui anumit limbaj. Pentru a elimina probleme de
acest tip, American National Standards Institute (ANSI) i International Standars Organization (I
S O) au adoptat i publicat standarde pentru multe din limbajele cele mai rspndite.
Faptul c mainile pot acum s rspund la instruciuni de nivel nalt a permis
specialitilor s vizeze medii de programare n care oamenii s poat s comunice cu maina
direct prin intermediul unor concepte abstracte specifice gndirii umane, fr s mai fie necesar
transpunerea ntr-o form compatibil mainii.
De asemenea, exist preocupri pentru realizarea unor maini (calculatoare) care s
participe nu numai la execuia algoritmilor, ci i la dezvoltarea algoritmilor. Rezultatul acestor
preocupri a condus la apariia unei game de limbaje de programare n continu diversificare,
care cu greutate pot fi clasificate n generaii.
Ca regul general, termenul de limbaje de programare din generaia a patra se refer
la pachetele software care permit utilizatorilor fr o pregtire de specialitate s poat adapta
produsele propriilor lor necesiti. n aceast categorie se ncadreaz sistemele de calcul tabelar,
sistemele de baze de date, pachete pentru grafic, procesoare de text, aceste pachete sunt adesea
grupate ntr-un singur sistem integrat.
Termenul de limbaje din generaia a cincea este folosit adesea cu referire la
programarea declarativ i n special pentru ceea ce se numete programarea logic.
112

Paradigme de programare
Dezvoltarea istoric a limbajelor de programare se poate reprezenta printr-o diagram cu
mai multe piste, n care cile de dezvoltare (conform diferitelor paradigme) sunt reprezentate
separat (fig. 5.1). Apar astfel patru piste care ilustreaz patru paradigme diferite: funcional,
orientat spre obiecte, imperativ, declarativ, limbajele asociate fiecruia fiind nfiate
ntr-un mod care s arate evoluia lor n timp, ceea ce nu nseamn c aceste limbaje au evoluat
neaprat unele din altele.

Figura 5.1 - Evoluia paradigmelor de programare

Paradigma imperativ (procedural) reprezint modul clasic ce abordare a procesului


de programare. Pe aceast paradigm se bazeaz ciclul parcurs de unitatea central: citirea
instruciunii decodificare execuie. Prin aceast paradigm se definete procesul de
programare ca o secven de comenzi care, urmate, conduc la rezultatul dorit.
Paradigma declarativ propune dezvoltarea i implementarea unui algoritm general de
rezolvare a problemelor. Pentru rezolvarea unei probleme nu va trebui dect ca ea s fie
formulat ntr-o manier compatibil cu algoritmul i s i se aplice algoritmul respectiv.
113

Principalul obstacol n calea dezvoltrii unui limbaj de programare bazat pe paradigma


declarativ este descoperirea algoritmului (general) de rezolvare a problemelor.
Paradigma funcional prezint procesul de dezvoltare a programelor ca o construcie
de cutii negre, fiecare acceptnd intrri i furniznd ieiri.
Matematicieni desemneaz aceste cutii drept funcii, de unde denumirea de paradigm
funcional. Primitivele unui limbaj de programare funcional constau din funcii elementare de
baz cu care programatorul construiete funciile complexe necesare rezolvrii problemei
respective.Paradigma de programare funcional ncurajeaz abordarea modular a programelor,
deci programele sunt bine organizate n mod natural. Cu aceast metod se dezvolt de obicei
pachete de software complexe.
Paradigma orientat spre obiecte, aceast metod conduce la un proces de programare
cunoscut sub numele de

programare orientat spre obiecte (OOP object oriented

Programming). n aceast abordare datele sunt considerate a fi obiecte active, spre deosebire
de rolul pasiv care le este atribuit n paradigma imperativ.
n abordarea orientat pe obiecte lista e considerat a fi un obiect care se compune din
lista propriu-zis, la care se adaug un ansamblu de rutine pentru gestionarea ei. Programul
care lucreaz cu lista nu are nevoie de algoritmi pentru efectuarea acestor operaii, ci folosete
rutinele oferite de obiect. Limbajele de programare orientate spre obiecte sunt Visual Basic
(Microsoft Corporation), Delphi (Borland International) i Java.

5.2.

Conceptele programrii clasice

n principiu, instruciunile ntr-un limbaj de programare se mpart n: instruciuni


declarative, instruciuni imperative i comentarii.
Instruciunile declarative definesc terminologia specific utilizat n cadrul
programului (ex. numele folosite pentru diferite date).
Instruciunile imperative sunt cele care descriu paii algoritmului respectiv.
Comentariile mbuntesc nelegerea algoritmului.
Orice modul de program ncepe cu o parte declarativ (descrierea terminologiei), urmat
de o parte procedural (instruciuni imperative pentru indicarea aciunilor). Comentarii sunt
plasate n program ori de cte ori se consider necesar acest lucru.

114

Variabile, constante i literali


Identificatori de tip nume descriptive a unor locaii de memorie sunt cunoscui sub
numele de variabile. Prin modificarea valorii stocate n locaia respectiv n timpul execuiei
programului se schimb valoarea asociat identificatorului.
Uneori programul folosete valori predefinite care nu se modific. Aceast valoare se
poate include ca un literal. Unele limbaje de programare permit atribuirea de nume descriptive i
unor valori particulare care nu pot fi modificate. Aceste nume se numesc constante.
Ex.:
Pentru scrierea unui program referitor la un aeroport este necesar altitudinea acestuia. ntr-o
linie de program ce utilizeaz literali aceasta se scrie astfel:
assign Effective Alt

the value (Altimeter 392)

, unde: Effective Alt, Altimeter sunt variabile, 392 este o valoare literal.
ntr-o linie de program ce utilizeaz constante acelai lucru se scrie astfel:
assign Effective Alt the value (Altimeter Airpor Alt)
const Aieport Alt = 392
, (instruciunea declarativ const asociaz constanta AirporAlt cu valoarea 392, iar numele
Airpot Alt poate fi folosit oriunde n program n locul valorii 392).

Categorii de date
Instruciunile declarative identific i tipul datelor. Tipul datelor determin modul n
care este interpretat irul respectiv de bii, ct i operaiile care pot fi efectuate cu data
respectiv. Cele mai utilizate tipuri de date sunt: ntreg (integer),

real (real),

caracter

(character) i boolean.
Tipul integer se refer la date numerice ntregi, reprezentate n complement fa de doi.
Se pot efectua cu aceste numere operaii aritmetice clasice i comparaiile.
Tipul real se refer la numere reale, stocate n general n virgul mobil. Activitile
care trebuie executate pentru adunarea a dou numere reale sunt diferite de cele pentru adunarea
doi ntregi.
Tipul character se refer la date care constau din simboluri, codificate de obicei n
ASCII. Asupra acestui tip de date se pot efectua: comparaii asupra poziionrii alfabetice a unui

115

simbol fa de altul; testarea apariiei unui ir de simboluri n cadrul altui ir, concatenarea unui
ir de simboluri la sfritul altuia pentru a forma un ir de mai lung.
Tipul boolean se refer la acele date cu valori doar de adevrat sau fals, ce apar ca
urmare a efecturii unor comparaii. Operaiile compatibile cu acest tip de date sunt verificrile
dac o valoare este adevrat sau fals.
n figura 5.2 sunt prezentate exemple de astfel de instruciuni declarative n Pascal,
C, C++, Java i FORTRAN. n aceste exemple variabilele Length i Width sunt declarate de
tip real, iar Price, Tax, Total de tip ntreg.

Declaraii de variabile n Pascal:


Var
Length, Width: real;
Price, Tax, Total : integer.

Declaraii de variabile n C, C++ i Java:


float Length, Width;
int Price, Tax, Total.

Declaraii de variabile n FORTRAN:


REAL Length, Width;
INTEGER Price, Tax, Total.

Figura 5.2 - Declaraii de variabile n Pascal, C, C++, Java, FORTRAN

Structuri de date
Un concept asociat instruciunilor declarative este acela de structur de date care se
refer la forma conceptual a datelor. Datele pe lng tip, deja explicat n capitolul anterior, au i
o lungime (mrime).
Un ir de caractere este un caz particular al unei structuri generice de date care poart
numele de vector omogen (homogeneous array). Pentru a declara un astfel de vector, majoritatea

116

limbajelor de programare utilizeaz o instruciune declarativ n care se precizeaz mrimea


pentru fiecare dimensiune a vectorului.
n fig. 5.3 se prezint instruciuni declarative n C i Pascal care declar Nume ca vector
unidimensional de tip caracter i lungime opt, iar Scores ca vector bidimensional de tip ntreg,
cu dou linii i nou coloane.

Vectori declarai n Pascal


Var
Name: packet array [1...8] of char;
Scores: array [1...2, 1...9] of integer.

Vectori declarai a C
char Name [8];
int Scores [2] . [9].

Structura conceptual a vectorilor


Name:

Scores:

Figura 5.3 - Declararea unor vectori omogeni n Pascal i C

Exist i vectori neomogeni, din punct de vedere al tipului de date incluse, numii vectori
heterogeni (heterogenous array). n fig. 5.4 se prezint modul de declarare a unui asemenea
vector.
Dup declararea vectorului se poate face referire la el n ntregime, prin nume, iar la
fiecare component a sa prin poziia acesteia. n cazul vectorilor omogeni componentele sunt
identificabile prin indici care specific linia, coloana etc.

117

Vectori declarai n Pascal


Var
Employe: record
Name: packed array [1...8] of char;
Age : integer;
Skill Rating: real
End

Vectori declarai n C
Struct
(char Name [8];
int Age ;
float Still Rating;
Employe.

Figura 5.4 - Declararea unor vectori heterogeni n Pascal i C

Instruciuni de atribuire
Instruciunea de atribuire solicit ca unei variabile s i se atribuie o valoare. O astfel de
instruciune are urmtoarea sintax: variabila urmat de un simbol care reprezint operaia de
atribuire i d e o expresie care indic valoarea ce se atribuie.
n limbajele C, C++ instruciunea Total = Price + Tax cere ca variabilei Total s-i fie
atribuit valoarea sumei dintre Price i Tax.

118

n paradigmele imperativ i cea orientat pe obiecte instruciunea de atribuire este


foarte utilizat, deoarece datele sunt manipulate n principal prin intermediul su.

Instruciuni de control
Instruciunile de control sunt instruciuni imperative care modific ordinea de execuie a
programului. Aceste instruciuni au strnit cele mai multe controverse, iar principalul vinovat
este cea mai simpl dintre ele, go to. Aceast instruciune furnizeaz o metod de a continua
programul din alt punct, care a fost identificat printr-o etichet (nume, numr). Includerea unei
astfel de instruciuni ntr-un limbaj de nivel nalt conduce la scrierea unor secvene foarte
nclcite. Pentru evitarea unor asemenea situaii, limbajele moderne de programare dispun de
instruciuni de control mai elaborate (ex. if then else) care permit ramificarea programului
prin intermediul unei singure structuri sintactice.
n figura 5.5 sunt prezentate cteva din cele mai utilizate structuri de ramificare i
instruciuni de control, precum i modul lor de reprezentare n diverse limbaje.

Figura 5.5 a - Structuri de control i reprezentarea lor n Pascal, C, C++, Java i Ada

119

Fig 5.5. b. Structuri de control i reprezentarea lor n Pascal, C, C++, Java i Ada
O alt structur larg folosit este cea numit for. Ea este similar cu structura while
utilizat n pseudocod, dar iniializarea, modificarea i ncheierea ciclului sunt ncorporate ntr-o
singur instruciune.

Figura 5.6 - Structura for i reprezentarea ei n Pascal, C, C++ i Java


120

Comentarii
Experiena arat c orict de bine ar fi proiectat un limbaj de programare i orict de
bine ar fi folosit, informaiile suplimentare sunt utile ntotdeauna pentru orice doritor care
ncearc s neleag un program de oarecare complexitate. n acest scop limbajele de
programare furnizeaz o sintax pentru inserarea n program a unor instruciuni explicative
numite comentarii. Documentarea constituit din aceste comentarii se numete documentaie
intern
Documentaia intern este ignorat de ctre translator. pentru a include comentariile n
program, limbajele de programare furnizeaz dou metode de delimitare a acestora de restul
programului. Fie se include comentariul ntre nite marcaje speciale, fie se marcheaz doar
nceputul comentariului, acesta urmnd s ocupe tot rndul sau chiar mai multe rnduri (n acest
caz se adaug i la nceputul rndurilor suplimentare semnul specific comentariului. Este
recomandabil ca toate comentariile care se refer la un anumit modul de program s fie grupate
ntr-un singur loc.

5.3.

Module de program

Limbajele bazate pe paradigma funcional mpart n mod natural programele n funcii,


iar limbajele bazate pe paradigma orientat spre obiecte au ca rezultat module de program care
reprezint obiectele. Ne vom concentra asupra tehnicilor prin care se poate obine o reprezentare
modular a unui algoritm.

Proceduri
Procedura este un modul de program scris indepndent de programul principal, dar legat
de acesta printr-un proces de transfer/revenire conform fig.5.7.
Cnd este nevoie de serviciile procedurii, controlul se transmite acesteia (instruciunea
JUMP, limbajul-main), iar dup execuie controlul revine modulului principal.
Ca regul general, variabilele declarate n interiorul procedurii sunt variabile locale (se
utilizeaz numai n interiorul procedurii). Sunt totui cazuri n care unele date trebuie utilizate n
comun de mai multe module. Variabilele utilizate ntr-o asemenea situaie se numesc variabile
globale.

121

Figura 5.7 - Transferul controlului la apelarea unui subprogram

Parametrii
Folosirea n comun a unor informaii prin utilizarea unor variabile globale nu este
recomandat, deoarece acest mod de lucru mascheaz activitile modulelor de program care
partajeaz datele respective.
Se recomand identificarea datelor partajate de mai multe module de program, ceea ce se
poate face prin includerea explicit a listei acestora n instruciunea prin care se solicit execuia
procedurii. Astfel i antetul procedurii trebuie s conin o list a variabilelor crora li se
atrib7uie valori la apelarea procedurii. Elementele care compun aceste dou liste se numesc
parametri.
La apelarea procedurii, lista de parametri din modulul apelant este asociat, element cu
element, listei de parametri din antetul procedurii. Valorile parametrilor din modulul apelant
sunt transferate efectiv parametrilor corespondeni din procedur.
Dup aceea, procedura este executat, iar valorile (eventual modificate) sunt transferate
napoi ctre modulul apelant. n alte situaii transferul poate avea loc ntr-un singur sens, fie
ctre procedur, fie ctre modulul apelant.
Un avantaj major al acestui sistem de substituire este acela c aceeai procedur poate fi
apelat de mai multe ori, cu diferite seturi de date.

122

Funcii
Termenul de funcie se refer la un modul de program asemntor unei proceduri, cu
deosebirea c o valoare se transfer napoi ctre programul principal nu prin intermediul listei de
parametri, ci ca valoare a funciei. Altfel spus, valoarea respectiv este asociat numelui
funciei, aa cum se asociaz o valoare unei variabile. n cazul funciei, valoarea se obine prin
executarea instruciunilor din cadrul funcie.

Instruciuni de intrare/ieire
Procedurile i funciile sunt metode foarte bune de a extinde caracteristicile unui limbaj
de programare.
Dac limbajul nu furnizeaz o anumit operaie ca primitiv, se poate scrie o procedur
sau o funcie care s efectueze acea operaie, iar apoi se va apela la modulul respectiv ori de cte
ori este nevoie. n majoritatea limbajelor, operaiile de intrare/ieire sunt implementate n acest
mod, cu diferena c procedurile i funciile apelate sunt de fapt rutine ale sistemului de operare.
Pentru a citi o valoare de la tastatur i a o atribui variabilei Value, n Pascal se scrie:
readln (Value),
, iar pentru a afia valoarea respectiv pe ecran:
writeln (Value).
Limbajul C++, fiind un limbaj orientat pe obiecte, furnizeaz dou obiecte prefabricate,
cin i cout, care reprezint dispozitivul standard de intrare i, respectiv, dispozitivul standard de
ieire. Aceeai aciune de mai sus n limbajul C++ se va scrie astfel:
cin >>Value; [citirea valorii de la tastatur]
cout << Value; [afiarea variabilei Value pe ecran].

5.4.

Implementarea limbajelor

n continuare vom analiza procesul de convertire a unui program scris ntr-un limbaj de
nivel nalt ntr-o form executabil de main.

123

Procesul de translatare
Procesul de convertire a unui program dintr-un limbaj n altul se numete translatare.
Programul n forma iniial este programul surs, iar versiunea translatat este programul
obiect.
Procesul de translatare const din trei activiti: analiza lexical, analiza sintactic
(parsing) i generarea codului.

Figura 5.8 - Procesul de translatare

Analiza lexical este procesul prin care se identific irurile de simboluri din programul
surs are reprezint entitile distincte. Pe msur ce analizorul lexical identific grupuri de
simboluri care constituie entiti distincte, le clasific n funcie de ceea ce reprezint o valoare
numeric, un cuvnt, un operator aritmetic, ... i genereaz un model de bii cunoscut sub
numele de simbol (token), care arat clasa entitii respective.
Analiza sintactic este un proces de identificare a structurii gramaticale a programului i
de recunoatere a rolului fiecrei componente. Majoritatea limbajelor de programarea sunt
limbaje cu format liber, ceea ce nseamn c locul instruciunilor n program nu are important.
Pentru ca un calculator s poat analiza sintactic un program scris ntr-un limbaj cu format liber
trebuie ca analizorul s-l identifice indiferent de spaiile utilizate n programul surs.
n acest scop majoritatea limbajelor folosesc semnele de punctuaie, cum ar fi punct i
virgul, pentru a marca sfritul unei instruciuni, precum i de cuvinte-cheie (cuvinte
rezervate), cum ar fi if, then sau else pentru a marca nceputul unor propoziii distincte.

124

Procesul de analiz sintactic se bazeaz pe un set de reguli care definesc sintaxa


limbajului de programare, reprezentare prin diagramele de sintax. n fig. 5.9 se prezint
diagrama de sintax a instruciunii if then - else.

Figura 5.9 - Diagrama de sintax a instruciunii if then else din pseudocod

Procesul de analiz sintactic const, n esen, din construirea arborelui de analiz


sintactic a programului surs. Din acest motiv, regulile de sintax care descriu structura
gramatical a unui program nu trebuie s permit obinerea a doi arbori diferii pentru acelai ir
analizat. Pentru exemplificare, regula din fig. 5.9 conine o eroare care permite ca, pentru
instruciunea :
if B1 if B2 then S1 else S2
s se obin doi arbori de analiz diferii, prezentai n fig. 5.10.
Definiiile de sintax ale limbajelor formale de programare sunt proiectate astfel nct s
evite asemenea ambiguiti, folosind parantezele. Pentru a distinge cele dou interpretri
posibile vom scrie:

if B1
then (if B2 then S1)
else S2
if B1
then (if B2 then S1
else S2)

125

Figura 5.10 - Arbori de analiz sintactica diferii pentru instruciunea


( if B1 then if B2 then S1 else S2 )
Informaiile extrase din instruciunile declarative sunt nregistrate ntr-o tabel numit
tabela de simboluri, care conine date referitoare la variabilele care au fost declarate i la
tipurile i structurile de date asociate.
O alt activitate din cadrul translatrii unui program este generarea codului,
reprezentnd procesul de construire a instruciunilor n limbajul-main care simuleaz
instruciunile recunoscute de analizorul sintactic. Una din sarcinile importante ale generatorului
de cod este optimizarea codului.

126

Analiza lexical, sintactic i generarea codului nu se realizeaz strict n aceast ordine,


ci se mpletesc: analizorul lexical identific primul simbol i l transfer analizorului sintactic
care ar trebui s urmeze i i cere urmtorul simbol.
n momentul n care sunt recunoscute instruciuni sau propoziii complete, analizorul
sintactic apeleaz generatorul de cod, care produce instruciunile main necesare.

Editarea de legturi i ncrcarea


Programul obiect care rezult n urma procesului de translatare, dei exprimat n limbaj
main, este arareori ntr-o form executabil. Majoritatea mediilor de programare permit
dezvoltarea i translatarea individual a modulelor de program, la momente diferite, ceea ce
permite construcia modular a produselor software. Chiar dac programul este dezvoltat i
translatat sub forma unui singur modul, n cele mai multe cazuri programul obiect tot nu este
pregtit pentru execuie, deoarece conine cereri de servicii software care sunt oferite direct de
sistemul de operare sau pot fi obinute prin intermediul acestuia.
Un program obiect este un program main cruia i lipsesc unele legturi care trebuie
nnodate pentru a-l transforma ntr-un program executabil.
nnodarea acestor legturi este efectuat de un program numit editor de legturi (linker).
Sarcina acestui linker este de a lega ntre ele programele-obiect, rutinele sistemului de operare i
alte utilitare software ntr-un program executabil (modul ncrcabil), memorat ca fiier n
sistemul de stocare de mas al calculatorului.
Pentru executarea unui program astfel translatat, el trebuie plasat n memorie de ctre
programul de ncrcare (leader), parte a secveniatorului.
Pe scurt, pregtirea unui program scris ntr-un limbaj de nivel nalt const dintr-o
secven de trei pai: translatare, editare de legturi i ncrcare, aa cum se vede n fig.7.11.
Dup translatare i editare de legturi, programul poate fi ncrcat i executat n mod repetat,
fr a mai reveni la versiunea-surs. Dac sunt necesare modificri n program, acestea se fac n
programe-surs, dup care sursa modificat este translatat i se face editarea de legturi,
obinndu-se un nou model ncrcabil.

127

Figura 5.11 - Procesul complet de pregtire a programului

Pachete pentru dezvoltarea produselor software


Tendina curent este aceea de a grupa translatorul i celelalte elemente software utilizate
n procesul de dezvoltare a unui produs software ntr-un pachet care funcioneaz ca un sistem
integral. Avantajele utilizrii unui astfel de sistem integrat sunt reprezentate de posibilitatea ca
programatorul s poat trece cu uurin de la editor la instrumente de depanare modificnd i
testnd imediat programul.

5.5.

Programarea declarativ

Logica formal furnizeaz un algoritm general de rezolvare a problemelor, n jurul cruia


se poate construi un sistem de programare declarativ.

Deducia logic
S presupunem c urmtoarea afirmaie este adevrat: Kermit fie este bolnav, fie se afl
pe scen. n aceste condiii, dac ni se spune despre Kermit c nu este pe scen, tragem
concluzia c este bolnav.
Acesta este un exemplu de aplicare a principiului deductiv numit rezoluie. Ca s
nelegem mai bine acest principiu, s ncepem prin a reprezenta propoziiile logice prin litere,
iar negarea negaiile lor prin simbolul nsoit de o liter.
n form general principiul rezoluiei precizeaz faptul c dac propoziiile:
P OR Q i

R OR Q

sunt adevrate, atunci i propoziia:


P OR R este adevrat.
Altfel spus, cele dou propoziii iniiale se rezolv prin a treia, numit rezolvent.

128

Se observ c rezoluia poate fi aplicat doar perechilor de propoziii cu forma clauzal


(propoziii legate prin operatorul boolean OR).
n fig. 5.12 este reprezentat grafic rezoluia a dou propoziii.

Figura 5.12 - Rezolvarea propoziiilor (P OR Q) i (R OR -Q) prin (P OR Q)

Se spune c o serie de propoziii este inconsistent dac este imposibil ca toate


propoziiile s fie adevrate n acelai timp. n fig. 5.13 se demonstreaz faptul c setul de
propoziii P OR Q; R OR Q; R; P este inconsistent.

Figura 5.13 - Rezolvarea propoziiilor (P OR Q) i (R OR Q), R i P

Procesul prin care, pentru a face posibil aplicarea principiului rezoluiei variabilelor, li
se atribuie valori se numete unificare. Acest proces, de unificare, permite ca ntr-un sistem
deductiv propoziiile generale s fie aplicate n cazuri particulare.

129

Limbajul PROLOG
Limbajul Prolog (PROgramming in LOGic) este un limbaj de programare declarativ al
crui algoritm de rezolvare a programelor are la baz rezoluia repetat.
Un program Prolog const dintr-o serie de propoziii iniiale, pe care algoritmul i
bazeaz toate deduciile.
Componentele din care sunt construite aceste propoziii se numesc predicate. Un astfel
de predicat se compune dintr-un identificator, urmat de o parantez cu lista argumentelor
predicatului.
Argumentele predicatului ncep ntotdeauna cu liter mic. Limbajul Prolog face
distincia ntre constante (liter mic) i variabile (majuscule). Instruciunile ntr-un limbaj
Prolog sunt fie afirmaii, fie reguli; ele se termin cu punct.
O afirmaie const dintr-un singur predicat. Nu trebuie s v nchipuii c sistemul
Prolog nelege semnificaia predicatelor din program; el le manipuleaz ntr-o manier absolut
simbolic, aplicnd regulile de inferen ale rezoluiei.
Programatorului i revine responsabilitatea de a descrie toate caracteristicile i
predicatele sub forma unor afirmaii i reguli. Majoritatea implementrilor de Prolog sunt
proiectate pentru utilizare interactiv.
Atunci cnd sistemul Prolog

primete o ntrebare, el i aplic principiul rezoluiei

ncercnd s confirme faptul c o afirmaie corespunztoare ntrebrii este o consecin a


afirmaiilor iniiale.
Astfel, pe baza seriei de instruciuni care descriu viteza relativ, pot fi confirmate toate
ntrebrile urmtoare:
faster (broasca, melc)
faster (iepure, broasc)
faster (iepure, melc).
Primele dou sunt afirmaii care apar n setul iniial de instruciuni, iar cea de a treia
poate fi dedus de ctre sistem. Dac furnizm sistemului ntrebri care au argumente variabile,
nu constante, vom obine exemple mult mai interesante.
De exemplu, pornind de la ntrebarea:
faster (w, melc)
vom obine ca rspuns:
130

faster (broasca, melc).


Putem cere sistemului Prolog s gseasc animale care sunt mai lente dect iepurele
punndu-i ntrebarea:
faster (iepure, w).
Astfel, utiliznd un singur program Prolog, vom putea s confirmm faptul c un animal
este mai rapid dect altul, s gsim toate animalele care sunt mai rapide dect un animal dat sau
s gsim toate relaiile dintre animale n ceea ce privete viteza. Aceast flexibilitate este unul
dintre aspectele care a trezit interesul specialitilor pentru limbajul Prolog.

131

TEST AUTOEVALUARE 5 (Limbaje de programare)


1. Un program este utilizabil atunci cnd:
a. Gradul de complexitate este mic
b. Gradul de complexitate este mare
c. Cnd localizarea i corectarea erorilor a fost nlturat
2. Asamblorul are rolul de:
a. Scrierea algoritmilor sub form de pseudocd
b. Translatare a programelor scrise n limbaj de asamblare
c. Organizare a prioritilor proceselor folosind semafoare
3. Definii pe scurt limbajul de asamblare.
4. Descriei independea programelor fa de main.
5. ANSI se refer la:
a. American National Standards Institute
b. International Standards Organization
c. International Electrotechnical Comission
6. Prezentai pe scurt clasificarea limbajelor de programare.
7. Translatorul are rolul de:
a. Translatare a programelor exprimate n primitive de nivel nalt n limbaj-main
b. Translatarea programelor n pseudocod
c. Realizare a instruciunilor din cadrul unui program n semafoare i procese
8. Programele de translatare mai sunt cunoscute i sub numele de:
a. Asamblatoare
b. Compilatoare
c. Translatoare
9. Descriei pe scurt paradigmele de programare.
10. Limbajul C++ este un limbaj bazat pe o paradigm de tip:
a. Funcional
b. Orientat pe obiect
c. Procedurale
132

d. Declarativ
11. Limbajul Pascal este un limbaj bazat pe o paradigm de tip:
a. Funcional
b. Procedurale
c. Declarativ
12. Limbajul Prolog este un limbaj bazat pe o paradigm de tip:
a. Declarativ
b. Orientat pe obiecte
c. Funcional
13. Definii paradigma imperativ (procedural) i dai exemple de limbaje de
programare care se bazeaz pe aceast paradigm.

14. Definii paradigma declarativ i dai exemple de limbaje de programare care se


bazeaz pe aceast paradigm.

15. Definii paradigma funcional i dai exemple de limbaje de programare care se


bazeaz pe aceast paradigm.

16. Definii paradigma orientat spre obiecte i dai exemple de limbaje de programare
care se bazeaz pe aceast paradigm.

17. Definii conceptele programrii clasice.


18. Care sunt conceptele programrii clasice:
a. Instruciuni declarative
b. Procese
c. Instruciuni imperative
d. Translatoare
e. Comentariile
19. Caracterizati pe scurt variabilele, constantele i literali.
20. O variabil poate fi definit ca:
a. locaie de memorie
b. o valoare oarecare
c. valoare binar

133

21. Caracterizai pe scurt principalele categorii de date, furniznd cte un exemplu pentru
fiecare.

22. Tipul datelor determin:


a. Modul n care este interpretat irul
b. Valorile pe care le poate accepta o variabil
c. Modul n care compilatorul aloc memorie pentru tipul dat
23. Tipul integer se refer la:
a. Date de tip numere ntregi
b. Date tip numere reale
c. Date de tip caracter
d. Date de tip adevrat sau fals
24. Cu ajutorul tipului integer se pot efectua operaii:
a. Aritmetice
b. Booleene
c. De substituie
25. Tipul real se refer la numerele:
a. Reale, stocate n virgul mobil
b. Reale, stocate ca numere ntregi
c. ntregi
26. Tipul character se refer la date care constau:
a. Din simboluri, codificate ca ASCII
b. n valori binare
c. n valori hexazecimale
27. Tipul boolean se refer la date care constau:
a. n valori adevrate (true) sau false (false)
b. n valori octale
c. n valori hexazecimale
28. Descriei pe scurt tipul de date integer.

134

29. Descriei pe scurt tipul de date real.


30. Descriei pe scurt tipul de date character.
31. Descriei pe scurt tipul de date boolean.
32. Definii i dai exemple de diferite variabile (integer, real, character, boolean) dnd
preciznd limbajul n care au fost definite.

33. Conceptul de structur de dat este asociat:


a. Instruciunilor ciclice
b. Instruciunilor declarative
c. Instruciunilor de control
34. Conceptul de structur de date se refer la:
a. Forma abstract a datelor
b. Forma general a datelor
c. Forma conceptual a datelor
35. Definii i caracterizai prin exemplu structura conceptual a vectorilor omogeni.
36. Numele unui ir de caractere este un caz particular al unei:
a. Structuri generice de algoritmi
b. Structuri generice de date
c. Structuri ciclice i de control
37. Pentru a putea face referire la un vector n ntregime, el trebuie s fie mai nti:
a. Declarat
b. Iniializat
c. Scris n pseudoco
38. Ne putem referi la un vector n ntregime:
a. Prin nume
b. Prin poziia componentei
c. Prin tipul vectorului
39. Prin ce sunt identificabile componentele unui vector omogen:
a. Indici
b. Coloane
c. Rnduri
135

40. Definii conceptul de instruciune de atribuire i dai exemple.


41. Ce se solicit unei variabile prin instruciunea de atribuire:
a. Valoarea s fie incrementat cu 1
b. Valoarea s fie decrementat cu 2
c. S i se atribuie o valoare
42. Definii conceptul de instruciune de control i dai exemple.
43. Instruciunile de control sunt instruciuni:
a. Imperative
b. Prin Alegeri opionale
c. Prin argumente justificabile
44. Comentariile ntr-un program sunt utile pentru:
a. Comentarea anumitor instruciuni
b. Furnizarea de informaii suplimentare pentru nelegerea programului
c. Marcarea variabilelor aflate n memorie n timpul execuiei

45. Variabilele globale se definesc:


a. La nceputul programului
b. n afara funciilor
c. n interiorul funciilor
136

46. Definiii conceptul de parametru i dai exemple.


47. Definii conceptul de funcie i dai exemple.
48. Definii conceptul de instruciuni de intrare/ieire.
49. Fie urmtorul proces de translatare. Definii i caracterizai fiecare component ce face
parte din acest proces (analizor lexical, analizor sintactic, generator de cod).

50. Analiza lexical este procesul prin care:


a. Se identific irurile de simboluri din programul surs
b. Se identific structura gramatical a programului
c. Se ajunge de la program sursa la program obiect
51. Definiia analiza lexical.
52. Definii analiza sintactic i dai un exemplu.
53. Definii generatorul de coduri.
54. Informaiile extrase din instruciunile declarative sunt nregistrate ntr-o tabel numit:
a. Tabel de rutare
b. Tabel static
c. Tabel de simboluri
55. Activitatea de generare a codului reprezint:
a. Procesul de construire a instruciunilor n limbaj main
b. Trecerea de la cod surs la cod main
c. Trecerea de la hexazecimal la binar

137

56. Definii editarea de legturi i procesul complet de pregtire a programului.


57. nainte ca un program s fie executat, el trebuie plasat n:
a. Memorie
b. Pe un dispozitiv optic
c. n memoria virtual
58. Logica formal st la baza:
a. Unui sistem de programare declarativ
b. Unui sistem de programare obiectul
c. Unui sistem de programare procedural
59. Definii si argumentai deducia logic.
60. Procesul prin care este posibil aplicarea principiului rezoluiei variabilelor se numete:
a. Unificare
b. Potenare
c. Divizare
61. Procesul de unificare permite ntr-un sistem deductiv ca propoziiile generale s fie
aplicate n cazuri:

a. Particulare
b. Generale
c. Specifice
62. Limbajul PROLOG (Programming in Logic) este un limbaj de:
a. Programare declarativ
b. Programare orientat pe obiect
c. Programare procedural
63. ntr-un program PROLOG propoziiile din care este construit, se numesc:
a. Verbe
b. Adjective
c. Predicate
64. Caracterizai limbajul PROLOG (Programming in Logic) dnd i exemple.

138

UNITATEA DE NVARE 6
6.

Structuri de date

6.1.

Vectori

Vectorii permit exprimarea unui algoritm ca i cum datele manipulate ar fi stocate ntr-un
aranjament rectangular. n acest fel, ne putem referi la cel de al cincelea element al unui vector
rectangular sau la elementul situate pe a treia linie i a asea coloan al unui vector
bidimensional.

6.1.1. Vectori unidimensionali


S presupunem necesitatea stocrii i prelucrrii unui ir de temperaturi msurate din or
n or. Cea mai comod form de organizare a acestor date este un vector unidimensional. Acest
vector unidimensional poate fi considerat o list numit. Citiri ale crei articole sunt specificate
prin poziia lor n list.
Prima valoare nregistrat va fi specificat cu Citiri(1), a doua cu Citiri(2) i asa mai
departe. Organizarea fizic, n exemplul nostru, este evident datele vor fi stocate ntr-o secven
de 24 de celule de memorie care au adrese consecutive. Cunoscnd adresa primei celule de
memorie translatorul va putea s converteasc referirile de tipul Citiri(4) n adrese de memorie
corespunzatoare.

Figura 6.1 - Vectorul Citiri stocat n memorie ncepand de la adresa 15

139

6.1.2. Vectori multidimensionali


n cazul acestor vectori destinai organizrii datelor se poate sugera o form tabelar. S
imaginm exemplul vnzrilor fcute de un numr de ageni comerciali pe o perioad de o
sptamn. Forma de organizare tabelar este urmtoarea, n stnga apar pe vertical agenii, iar
pe prima linie zilele sptmnii. Deci datele vor fi dispuse pe linii i coloane. Valoriile de pe o
linie reprezint vnzrile efectuate de un agent, iar pe o coloan vnzrile efectuate ntr-o
anumit zi. Extragerea informaiei din tabel presupune gsirea valorii care se afl la intersecia
unei linii cu o coloan. Memoria calculatorului nu are o structur matricial, motiv pentru care
structura tabelului va trebui simulat. Calculm pentru nceput spaiul de memorie necesar i
rezervm un bloc continuu de celule de memorie de dimensiunea respectiv. Apoi se vor stoca
datele n memorie linie cu linie n ordine astfel, valorile din prima linie, apoi valorile din linia
doua, etc.

Figura 6.2 - Vector bidimensional stocat n ordinea liniilor

Acest sistem de stocare se numete n ordinea liniilor (row major order); existnd i
posibilitatea stocrii n ordinea coloanelor (column major order).
Cum putem localiza elementele vectorului atunci cnd este nevoie de ele? Notm cu C
numrul de coloane ale vectorului (numarul elementelor de pe o linie). Pentru a gsi elementul

140

din linia I, coloana J va trebui s ne deplasm de la nceputul blocului cu C* (I-1)+J poziii.


Aceast exprimare se numete polinom de adresa (address polynomial).
Altfel spus, trebuie s depim I-1 linii, fiecare avd C articole, pentru a ajunge la linia I,
apoi nca J elemente pentru a ajunge la elementul J, din linia curent. n fig. 2 acest calcul este
urmatorul C=6, I=3, J=5; formula devine 6*(3-1)+5 = 17

6.2.

Liste

Exist i structuri vectoriale dinamice, cu forma i dimensiuni variabile. n anumite


cazuri, pe lng localizarea elementelor n cadrul structurii ne vom confrunta i cu variaiile
lungimii acesteia.

Pointeri
Locaiile din memoria calculatorului sunt identificate prin adrese numerice. Prin adresa
unei anumite date vom gsi elementul respectiv far nici o dificultate. Aa cum elementul
propriu-zis poate fi nregistrat ntr-o celul de memorie i adresa lui poate fi stocat n alta
celul. Ulterior dac accesm adresa gsim elementul respectiv prin intermediul respectivei
adrese. Putem considera c celula de memorie care conine adresa indic (point) ctre
elementul respective, de unde apare i numele de pointeri dat celulelor de memorie care conin
adrese.
Multe limbaje de programare permit declararea, alocarea i manipularea pointerilor. S
exemplificm prin situaia unei biblioteci care ine evidena crtilor n ordine alfabetic, dup
titlu. n respectiva organizare este dificil de gsit toate crile scrise de un anumit autor. Pentru a
rezolva problema se rezerv n blocul care conine informaii referitoare la carte o celul
supliment de tip pointer. n fiecare celul pointer se stochez adresa altui bloc care corespunde
unei cri scrise de acelai autor. n acest fel, crile care au acelai autor vor fi legate ntr-un fel
de bucl (fig.6.3).

141

Figura 6.3 Lista de cri dintr-o biliotec stocat dup titlu i nlanuit dup autor

n continuare vom discuta despre structurile dinamice analiznd modalitile de stocare a


unei liste de nume n memoria calculatorului.

Liste contigue
Una din tehnicile de stocare a unei liste de nume n memoria calculatorului este plasarea
listei ntr-un bloc de celule cu adrese consecutive. Presupunem c numele respective nu depesc
opt caractere. Vom mprii blocul n sub-blocuri de cte opt celule. n fiecare sub-bloc se va
putea stoca un nume (nregistrnd n fiecare celul codul ASCII pentru o litera - fig.6.4). Dac

142

numele nu ocup toate celulele din blocul alocat, vom complete celulele libere cu codul ASCII
pentru spaiu.

Figura 6.4 - Nume stocate n memorie ca list contigu

Acest mod de organizare se numete list contigu, n cadrul sistemului pentru stocarea
listei. Exemplu. Instructiune Pascal
Var
List packed array (1 .. 8,1..10) of char
, declar un vector bidimensional de 8 linii i 10 coloane. Problemele acestei structuri de stocare
(structura contigua) apar la :
a. tergerea unui nume din list - Dac numele ters nu este ultimul pentru a pstra ordinea
de stocare (eventual alfabetic) trebuie s fie mutate toate numele care se afl n lista
dupa numele ters.
b. Adaugarea unui nume nou n list - O problem posibil, s nu mai fie loc n memorie
pentru acest nou nume, deoarece folosim un bloc contiguu. O alt problem este
poziionarea noului nume ntr-o list alfabetic, acolo unde-i este locul.
Liste nlnuite
Fiecare nume se nregistreaza ntr-un ir de nou celule, primele opt vor fi utilizate
pentru stocarea numelui propriu-zis, iar ultima va fi folosit ca pointer ctre urmatorul nume din
list. Astfel, lista poate fi fragmentat n mici blocuri, de cte nou celule, blocuri legate ntre ele
prin pointeri. Acest mod de organizare se numeste list inlantuit (linked list).
Pentru a ti de unde ncepe lista trebuie rezervat o celula de memorie n care se salveaz
adresa primului articol din list pointer cap de list (head pointer). Citirea listei va ncepe de la
locaia indicat de pointer-ul cap de list, unde se gsete primul nume din list i un pointer
143

ctre articolul urmator. n acelai fel se poate parcurge ntreaga list. Problema detectrii
sfritului de list se rezolv prin utilizarea pointer-lui NIL (o combinaie special de bii
nscris n celula de tip pointer a ultimului element din list). n figura 6.5 este prezentat
structura unei liste nlnuite.

Figura 6.5 - Structura unei liste nlnuite

Revenind la problemele care apar la structura contigu, tergerea unui nume i adaugarea
unui nume n list, ele au o soluionare mult simplificat n cadrul listei nlnuite.
a. tergerea unui nume implic doar schimbarea unui pointer. Pointer-ul care arat iniial
ctre numele pe care-l tergem va arta ctre urmatorul nume din list fig.6.6.

Figura 6.6 - Stergerea unui articol dintr-o list nlnuit


144

b. Pentru inserarea unui nou nume trebuie gsit mai inti un loc liber de nou celule n
memorie, apoi se stocheaz noul nume n primele opt celule i se completeaz cea de a
noua celul cu adresa numelui din lista care trebuie precedat n lista numelui inserat fig.6.7.

Figura 6.7 - Inserarea unui articol ntr-o list nlnuit

La tergerea i inserarea unui nume ntr-o list trebuie s se ina seama i de evidena
blocurilor de celule eliminate din list (aceste blocuri pot fi refolosite pentru stocarea noilor
articole inserate). Evidena blocurilor terse se poate ine prin construirea unei noi liste
nlnuite.

Stive
Stiva reprezint o list n care inserrile i tergerile se fac la un singur capt al structurii.
Captul listei la care se efectuea aceste operaii se numete vrful stivei (top), iar cellalt capt
se numete baza stivei. Pentru inserarea unui element n stiv se va folosi denumirea de operaie
push, iar pentru tergerea unui element din stiv se folosete denumirea de operaie pop.
Una dintre cele mai comune aplicaii prin care se poate explica modul de lucru ntr-o
stiv este execuia unor module de program din categoria procedurilor din pseudocod.
145

La solicitarea execuiei unei proceduri, calculatorul acceseaz proceduri, iar ncheierea


procedurii trebuie s se termine n punctul anterior i s continue execuia programului apelant,
ca n figura 6.8.

Figura 6.8 - Procedurile i ncheie execuia n ordinea invers celei n care au fost apelate

Dup realizarea transferului iniial trebuie s existe i s funcioneze un mecanism de


memorare a punctului n care trebuie s revin. Mecanismul de memorare trebuie s salveze
punctele de revenire i s le regseasc n ordine corect. Conceptul de stiv este inerent
proceselor care presupun ieirea dintr-un sistem urmndu-se drumul invers celui de intrare.

Implementarea stivei
n mod obinuit se rezerv pentru stiv un bloc de memorie suficient de mare pentru a
permite creterea dimensiunii ei. Dup rezervarea blocului de memorie, trebuie s stabilim
captul care va servi ca baz stivei. Acesta este punctul n care vom include n stiv primul
146

element, articolele urmtoare fiind stocate n continuare, spre cealalt extremitate a blocului
rezervat.
Este nevoie de un instrument suplimentar: posibilitatea identificrii n orice moment a
vrfului stivei. Aceast celul suplimentar poart numele de pointer al stivei (stack pointer).
Sistemul astfel completat este prezentat n figura 6.9.

Figura 6.9 - Stocarea stivei n memorie

Modul de funcionare al sistemului:

pentru adugarea unui element n stiv, se modific (mai nti) pointerul de stiv astfel
nct s indice ctre primul loc gol de deasupra vrfului, apoi plasm respectivul element
n locaia respectiv;

pentru a terge (scoate) un element din stiv citim datele din locaia indicat de pointerul
de stiv, apoi ajustm pointerul astfel nct s arate ctre urmtorul articol situat spre
baza stivei.
Dac nu putem rezerva un bloc fix de memorie suficient de mare pentru a se putea terge

stiva, trebuie implementat stiva ca structur nlnuit.


147

Cozi
Organizarea de tip coad este o form de list n care adugarea (inserarea) se face pe la
un capt al listei, iar tergerea la cellalt capt. Astfel spus coada este un obiect de stocare de tip
FIFO (primul venit, primul plecat).
Capetele de la care sunt eliminate articolele se numesc cap (head), iar captul la care se
adaug articole se numete coad (tail); pentru evitarea confuziilor vom folosi n acest scop
termenii de nceput i sfrit.

Implementarea cozilor
O metod este folosirea unui bloc continuu de celule de memorie. n cazul cozilor se
efectueaz operaii la ambele extremiti ale structurii, deci se vor folosi doi pointeri: un pointer
de nceput i un pointer de sfrit.
Presupunem la nceput, coada goal deci ambii pointeri indic aceeai locaie de
memorie, figura 6.10.

Figura 6.10 - La nceput coada este goal

La inserarea unui articol, acesta va fi stocat la locaia indicat de pointerul de sfrit dup
care se va modifica pointerul de sfrit (va arta urmtoarea locaie neutilizat) - figura 6.11.

148

Figura 6.11 - Dup inserarea unui articol (A)


n acelai fel se va realiza inserarea a nc un articol - figura 6.12.

Figura 6.12 - Dup inserarea nc unui articol

La eliminarea unui articol din coad, se va extrage obiectul care indic locaia indicat de
pointerul de nceput, dup care se va ajusta acest pointer aa nct s arate ctre articolul care
urmeaz dup cel eliminat - figura 6.13.

149

Figura 6.13 - Dup eliminarea articolului A

n cadrul acestui sistem de stocare, coada tinde s se deplaseze lent prin memorie,
distrugnd n drumul ei alte date. Aceast sete de memorie este un efect colateral al procedurii
de acces.
O soluie la aceast problem este ca articolele rmase n coad vor nainta pe msur ce
articolele de la nceputul cozii sunt eliminate. n aceast situaie, ar trebui gsit o metod de a
ncadra coada ntr-o anumit zon de memorie, fr s fie nevoie de rearanjarea datelor.
Faptic rezervm un bloc de memorie i plasm coada, pentru nceput, la una dintre
marginile blocului i i permitem s migreze ctre cealalt margine.
Cnd sfritul cozii atinge marginea blocului, vom ncepe s inserm elemente la cellalt
capt al blocului, unde au aprut noi articole, care ateapt. Astfel coada se va nvrti n cadrul
blocului rezervat (coad circular).

6.3.

Arbori

Spre exemplificarea acestei structuri ne vom inspira din diagrama de organizare a unei
companii - figura 6.14.

150

Figura 6.14 - Un exemplu de diagram de organizare

Fiecare poziie din cadrul arborelui poart denumirea de nod. Nodul din vrful ierarhiei
se numete nodul rdcin, nodurile de la cealalt extremitate a arborelui sunt denumite noduri
terminale (sau frunze). Linia care unete dou noduri se numete are. Oricare componente a
unui arbore poart numele de sub-arbore. Se vorbete de n cadrul acestei structuri de strmoi i
de descendeni unui nod.
Descendenii de la nivelul imediat inferior se numesc fii. Nodul superior este denumit
nod printe; nodurile generate de acelai nod printe se numesc frai.
Adncimea arborelui, reprezint numrul de noduri care formeaz cea mai lung cale de
la nodul rdcin la un nod terminal; adncimea arborelui este egal cu numrul de straturi
orizontale din componenta acestuia.

Implementarea arborilor
Ne vom rezuma la cazul particular al arborilor binari arbori n care fiecare nod are cel
mult doi descendeni.
n cazul arborilor binari, fiecare artiol (nod) al arborelui conine trei componente:

datele;

un pointer ctre primul descendent (pointer ctre descendentul stng)

un pointer ctre al doilea descendent (pointer ctre descendentul drept)

151

Fiecare nod al arborelui va fi reprezentat ntr-un bloc continuu de celule de memorie


conform figurii 6.15.

Figura 6.15 - Structura unui nod dintr-un arbore binar

Stocarea arborelui n memorie presupune att identificarea unor blocuri disponibile n


care s se nregistreze nodurile, ct i legarea acestor noduri pentru a se forma structura dorit.
Fiecare pointer trebuie definit astfel nct s indice ctre descendentul stng/drept al nodului sau
s i se atribuie valoarea NIL (dac nodul nu are descendeni n direcia respectiv).
Evident pentru un nod terminal ambii pointeri sunt NIL. De asemenea trebuie s
rezervm o locaie special pentru adresele nodului rdcin (pointer ctre rdcin).
n figura 6.16 este prezentat structura conceptual a arborelui, iar n figura 6.17, modul
de stocare a structurii n memorie.

Figura 6.16 - Organizarea conceptual a arborelui binar

Cu ajutorul sistemului de stocare deschis se va putea identifica nodul rdcin i se va putea


urma orice turneu n cadrul arborelui mergnd din nod n nod, cu ajutorul pointerilor.

152

Figura 6.17 - Organizarea real a unui arbore binar

O metod alternativ de stocare a arborilor binari i propune rezervarea unui bloc de


memorie continu, stocarea nodului rdcin n prima celul (fiecare nod ocup o singur celul),
stocarea descendentului stng al nodului rdcin n a doua celul, stocarea descendentului
drept al nodului rdcin n a treia rdcin (n general stocarea descendentului ,,stngrespectiv
,,drept al nodului din celula n n celulele 2n, respectiv 2n+1. Celule neutilizate pentru stocarea
structurii arborescente vor avea o valoare particular, indicnd absena datelor figura 6.18.

Figura 6.18 - Stocarea arborelui din figura 6.16 fr pointeri

Aceast metod de stocare ofer un mod convenabil de regsire a prinilor sau frailor
oricrui nod. Pentru a regsi prinii i fraii n cadrul structurii nlnuite, trebuie folosii
pointeri suplimentari.

153

TEST AUTOEVALUARE 6 (Structuri de date)

1. In contextul structurilor de date, ce reprezinta un vector ?


2. Descrieti implementarea vectorului unidimensional avand in vedere modul de rezervare a
blocului de memorie.
3. Descrieti implementarea vectorului multidimensional avand in vedere modul de
rezervare a blocului de memorie.
4. In contextul structurilor de date, prin ce parametrii se poate caracteriza o lista ?
5. Explicati succint notiunea de pointer, care apare in cadrul unei liste.
6. Precizati si explicati succint doua dintre problemele care pot apare la actualizarea unei
liste contigue.
7. Descrieti implementarea listei inlantuite avand in vedere modul de rezervare a blocului
de memorie.
8. Descrieti modul de stergere a unui articol folosind structura de tip lista inlantuita.
9. Descrieti modul de inserare a unui articol folosind structura de tip lista inlantuita.
10. In contextul structurilor de date , ce reprezint o stiv?
11. Operaia de inserare ntr-o list poart denumirea de?
a. Push
b. Pop
c. Insert
12. Descriei implementarea stivei avnd n vedere modul de funcionare al sistemului i
rezervarea blocului de memorie.
13. Celula suplimentar ntr-o stiv poart denumirea de?
a. Referin
b. Pointer
c. Definiie
14. In contextul structurilor de date ,ce reprezint o coad?

154

15. Ce tip de obiect de stocare este o coad?


a. LIFO
b. FIFO
c. Depth-first search
16. Descriei implementarea cozilor.
17. In contextul structurilor de date , ce reprezint un arbore?
18. Poziia din cadrul unui arbore poart denumirea de?
a. Frunz
b. Nod
c. Copil
19. Nodurile aflate la extremitile arborelui sunt denumite noduri?
a. Frunz
b. Printe
c. Copil
20. Descriei implementarea arborilor.
21. Un nod are?
a. Descendeni
b. Ascendeni
c. Copii
22. Ce reprezint adncimea unui arbore?
23. Stiva poate fi descris astfel:
a. primul element introdus n stiv este ultimul care poate fi extras
b. primul element introdus n stiv este primul care poate fi extras
c. ultimul element introdus n stiv este primul care poate fi extras.
24. Eliminarea unui element din stiv se poate face astfel:
a. se elimin elementul din vrf
b. se elimin elementul de la baz
c. se poate elimina orice element din stiv

155

25. Notm cu VARF poziia pe care se afl elementul din vrful stivei , i cu BAZA poziia
celui de la

captul opus; stiva este vid dac:

a. VARF = BAZA
b. VARF = 0
c. VARF < BAZA
26. La o coad adugarea unui nou element se poate face:
a. dup ultimul element
b. n faa primului element
c. ntr-o poziie intermediar
27. In contextul structurilor de date ,cnd o list este vid?
28. In contextul structurilor de date ,ce este o list circular?
29. Coada poate fi descris astfel:
a. primul element introdus n coad este ultimul care poate fi extras
b. primul element introdus n coad este primul care poate fi extras
c. ultimul element introdus n coad este primul care poate fi extras

156

UNITATATEA DE NVARE 7
7.

Structuri de fiiere

7.1.

Fiierele secveniale

Noiuni de baz
Organizarea secvenial este, desigur, una conceptual. Funcie de caracteristicile fizice
ale dispozitivului periferic utilizat se poate stoca fiierul respectiv n alt format i s fie prezentat
utilizatorului ca un fiier secvenial. Noiunea de organizare secvenial aici a nregistrrilor
ntr-un fiier este legat de dispozitivul periferic i de suportul fizic utilizat (ex. banda
magnetic este, prin natura sa, secvenial). Desigur, fiiere secveniale se pot stoca i pe
suportul disc magnetic dispersnd nregistrrile n diferite locaii disponibile (care nu sunt una
dup alta ca adresare). Sistemele de operare pstreaz evidena locaiilor (sectoarelor) ocupate
de nregistrri i fiiere i a ordinii n care trebuie citite.
Sfritul fiecrui fiier secvenial este indicat de un marcaj de sfrit de fiier EDF (end
of file). n figura 7.1 este prezentat organizarea secvenial a fiierului.

Fig. 7.1. Fiier secvenial

Utilizatorul unui fiier secvenial poate s vad nregistrrile numai n ordine secvenial.
Singurul mod de a gsi o nregistrare este acela de a ncepe cutarea de la nceputul fiierului i
de a le gsi i extrage n ordinea n care se afl n fiier.
Structura secvenial a unui fiier este convenabil pentru generarea unor rapoarte (ex.
statele de salarii), dar aceeai structur secvenial este total nefavorabil la actualizarea
nregistrrilor. (De exemplu, pentru actualizarea orelor lucrate de un angajat se citete cartela sa
de pontaj i apoi se caut n tot fiierul nregistrarea angajatului respectiv pentru actualizare, iar
pentru urmtorul angajat trebuie reluat procesul de la nceput. Procesul poate fi simplificat dac
ordinea cartelelor de pontaj corespunde cu ordinea nregistrrilor din fiierul angajailor).

157

Din aceste motive fiierele secveniale sunt de regul stocate n ordine alfabetic sau
numeric, n funcie de coninutul unui cmp, numit cmp-cheie (key field). Avnd n vedere
avantajele oferite de o ordine bine stabilit n prelucrarea fiierelor secveniale, sortarea ocup
un loc important.
Pentru actualizarea unui fiier secvenial, noile informaii (n cazul nostru colecia de
cartele de pontaj) sunt nregistrate sub forma unui fiier secvenial independent, cunoscut sub
numele de fiier tranzacional. Acest fiier tranzacional este sortat n ordinea n care este sortat
fiierul care trebuie actualizat i nregistrrile fiierului iniial sunt actualizate n ordinea lor de
apariie.

Aspecte legate de programare


n ceea ce privete manipularea fiierelor secveniale din punct de vedere al
programatorului, tendina n cadrul limbajelor de nivel nalt este ca operaiile cu fiiere s se
realizeze prin proceduri care sunt fie definite ca parte a limbajului formal, fie furnizate de
extensii ale acestuia, sub form de biblioteci. n ambele situaii, parametrii procedurilor indic
fiierul-int i zona de memorie principal n care se scrie sau din care se citesc nregistrrile
manipulate.
De exemplu, n Pascal se pot folosi instruciuni de forma:
read (Lista potal, nregistrare potal)
i
write (List potal, nregistrare potal)
pentru a citi, respectiv a scrie (salva) informaii dintr-un/ntr-un fiier secvenial identificat ca
List potal. Alturi de identificatorul de fiier, n lista de parametri apare i numele
nregistrare potal, utilizat n cadrul programului pentru identificarea blocului de date care se
transfer.
Observai c aceste instruciuni nu conin nici o informaie explicit cu privire la poziia
pe care o au n fiier nregistrrile manipulate. Fiierul fiind secvenial, nregistrarea citit este
cea care urmeaz poziiei curente n cadrul fiierului, iar nregistrarea care se scrie n fiier este
plasat imediat dup poziia curent.

158

Pe lng subrutine care permit manipularea nregistrrilor dintr-un fiier secvenial,


majoritatea limbajelor de nivel nalt furnizeaza i instrumente pentru detectarea marcajului de
sfrit de fiier.

7.2.

Fiiere de text

Dac nregistrarea logic dintr-un fiier secvenial se rastrange la, un singur octet, se
consider c avem un fiier de text (text file). Denumirea fiierului reflect faptul c aceste
fiiere sunt utilizate de obicei pentru stocarea unor documente care conin text.
Altfel spus, un fiier de text poate fi considerat compus din secvene de rnduri separate
prin marcaje de sfrit de rnd.

Manipularea fiierelor de text


Din motive legate de stocare, fiierele de text sunt mprite n secvene de octei care
formeaz nregistrri fizice a cror dimensiune e compatibil cu sistemul de stocare utilizat.
Manipularea acestor nregistrri fizice este realizat n mod transparent de program.
n realitate, la solicitarea prelurii din fiier a primului octet/primul rnd de text,
programul citete una sau mai multe nregistrri fizice i le memoreaz ntr-un buffer (zon de
tampon) din memoria principal. Pe msur ce programul transfer coninutul buffer-ului ctre
utilizator, n buffer sunt aduse noi nregistrri i aa mai departe, pn la atingerea sfritului de
fiier.
La scriere n fiier, programul colecteaz octeii ntr-un buffer, pn cnd se acumuleaz
acolo o nregistrare fizic ntreag sau s-a ajuns la captul fiierului i apoi se trece la
transferarea efectiv a nregistrrii fizice pe dispozitivul de stocare.

Aspecte legate de programare


Manevrarea fiierelor de text se face cu ajutorul procedurilor predefinite, incluse n
definiia formal a limbajului sau n biblioteci oferite ca extensii ale acestuia.
Considerm Symbol o variabil de tip caracter implicat n instruciunea:
read (Vechiul manuscris, Symbol).

159

Instruciunea de mai sus citete un octet din fiierul de text identificat ca Vechiul
manuscris i atribuie acea valoare variabilei Symbol.
Similar, instruciunea:
write (Noul manuscris, Symbol)
, plaseaz octetul atribuit variabilei Symbol la poziia curent n fiierul Noul manuscris.

7.3.

Fiiere indexate

Ideea de indexare este preluat din modul de lucru cu o carte, unde se utilizeaz un index
care permite localizarea unui subiect mult mai repede dect prin parcurgerea secvenial a crii.

Noiuni de baz
Indexul fiierului const dintr-o list a valorilor care apar n cmpurile-cheie ale
fiierului, la care se adaug poziia nregistrrii respective n cadrul dispozitivului de stocare
masiv a informaiilor. Acest mod de organizare presupune s cunoatem valoarea cmpuluicheie corespunztor nregistrrii cutate.

Organizarea indexului
Pentru a cuta ceva n nregistrarea identificat prin index este necesar ca indexul s fie
transferat n memoria principal i n acest sens dimensiunea lui trebuie s se ncadreze n limite
rezonabile. O metod de rezolvare a problemei indecilor de mari dimensiuni este utilizarea unui
index al indexului iniial. Astfel indexul general va lua o form stratificat sau arborescent.

Aspecte legate de programare


Foarte puine dintre limbajele actuale de programare de nivel nalt conin comenzi
specifice pentru manipularea fiierelor prin intermediul unui index. Sistemele de gestiunea
bazelor de date furnizeaz instrumente care scutesc programatorul de sarcina de a-i ntreine
propriile sisteme de fiiere indexate.
Totui exist i la nivelul limbajelor de programare crmizile elementare pentru
construirea unui fiier indexat.

160

De exemplu: ntr-un program scris n limbajul C se poate utiliza funcia fsetpos pentru a
stabili poziia curent n cadrul unui fiier.
Astfel, instruciunea:
fsetpos (Personal, & Poziie)
solicit ca poziia curent n cadrul fiierului Personal s fie stabilit la locaia identificat prin
valoarea variabilei Poziie.
Dac imediat dup aceast instruciune se scrie:
fscanf (Personal, %s, Nume)
, vom obine numele situat la respectiva poziie din fiier.

7.4.

Fiiere dispersate (hashed files)

Sistemul de stocare reprezentat prin fiiere dispersate permite doar accesul direct, fr a
utiliza un mod de indexare. Ideea de baz este calcularea poziiei fiecrei nregistrri n memorie
prin aplicarea unui algoritm (algoritmul de dispersie) asupra valorii cmpului-cheie.
Altfel spus, fiind dat cmpul-cheie cutat, se poate determina rapid poziia nregistrrii
respective, fr a utiliza o tabel special (cazul fiierelor indexate).

Exemplu de tehnic de dispersie


Se mparte zona de memorie de mas alocat pentru fiierul respectiv n mai multe
seciuni, pe care le vom numi containere.
S presupunem c zona de stocare se mparte n 20 de containere. De asemenea,
presupunem c nregistrrile din fiier vor fi cutate dup numrul de identificare i vom stabili
acest cmp drept cmp-cheie.
Obiectivul nostru urmtor este s convertim orice valoare a cmpului-cheie ntr-o valoare
numeric. Acest lucru este oarecum simplu, deoarece vom putea scrie forma binar a fiecrei
valori din cmpul-cheie. Apoi utiliznd aceast interpretare numeric, se va mpri aceast
valoare binar a cmpului-cheie la numrul de containere, obinndu-se ctul i restul. Aceste
resturi vor fi ntotdeauna un numr ntre 0 i 19.

161

Utiliznd acest sistem se poate converti orice valoare din cmpul cheie ntr-un ntreg care
identific unul dintre containerele din memoria de mas, unde vom stoca nregistrarea
respectiv.
Rezolvarea situaiilor de depire superioar
Un fiier dispersat trebuie implementat n ideea c se va ajunge la depirea capacitii
containerelor. n acest sens trebuie gsit o metod de soluionare a situaiei.
Metoda tipic de rezolvare a problemei este rezervarea unei zone suplimentare de
memorie de mas, unde s fie nmagazinate nregistrrile care depesc capacitatea
containerelor. Aceast zon suplimentar a memoriei de mas se numete zona de depire.
n concluzie, dac numrul depirilor este foarte mare, eficiena acestui tip de fiier
scade considerabil. Din acest motiv, proiectarea unui fiier dispersat presupune o atent alegere
a algoritmului de dispersie, a numrului i a dimensiunilor containerelor, precum i a mrimii i
structurii zonei de depire.

Aspecte legate de programare


Limbajele procedurale de nivel nalt folosite n prezent nu ofer o implementare direct a
fiierelor dispersate. Acest fapt se datoreaz att apariiei unor sisteme de gestiunea bazelor de
date performante, ct i dependenei de aplicaie a detaliilor de proiectare (algoritmul de
dispersie, numrul i dimensiunea containerelor).
n limbajul C va fi nevoie doar s se memoreze poziiile de stocare ale containerelor i s
se utilizeze funcia fsetpos pentru localizarea containerului indicat de funcia de dispersie.
Tehnicile de dispersie sunt folosite cu mare succes si n distribuia datelor n zone ale
memoriei interne principale.

7.5.

Rolul sistemului de operare

Mediul de lucru, n cazul limbajelor de nivel nalt, ofer rutine predefinite pentru
manipularea fiierelor componente, care nu intr n sarcina programatorului.
Pentru utilizarea operaiilor de regsire i inserare a nregistrrilor, rutinele comunic cu
sistemul de operare, deci acestuia i revine sarcina manipulrii fiierelor. Sistemul de operare
trebuie s cunoasc structura fiierului, cmpul-cheie i dac fiierul trebuie salvat.

162

Funcie de tipul fiierului se pot prelua: poziia curent n cadrul fiierului, nregistrarea
fizic care se afl n buffer-ul din memoria principal.
Pentru gestionarea acestor informaii, sistemul de operare folosete cte o tabel
numit descriptor de fiier sau bloc de control pentru fiecare fiier utilizat.
Dac un program lucreaz cu trei fiiere, sistemul de operare va trebui s construiasc
trei descriptori de fiier care s permit gestionarea acestora. n limbajele de nivel nalt,
construirea descriptorului de fiier se iniializeaz printr-o rutin numit Open.
n FORTRAN, instruciunea tipic are urmtoarea form:
OPEN (UNIT = 10, FILE = Test File, STATUS = OLD,
ACCESS = SEQUENTIAL)
i solicit sistemului de operare s construiasc un descriptor de fiier pentru fiierul cu numele
Test File.
Parametrii precizai specific c:

fiierul va fi indicat ulterior n program ca unitatea logic numrul 10 (UNIT = 10);

numele fiierului este Test File (File = Test File);

sistemul de operare ar trebui s gseasc deja fiierul n memoria de mas (STATUS =


OLD);

structura fiierului este secvenial (ACCESS = SEQUENTIAL).


Din exemplul furnizat se observ c un fiier poate fi desemnat ulterior n program prin

alt nume dect numele lui propriu-zis. Aceast distincie care se face ntre numele extern al
fiierului i identificatorul utilizat n program reflect diferena ntre regulile sintactice ale
sistemului de operare i cele ale limbajului de programare. Aceast distincie ntre identificatorii
externi i interni de fiier permite, de altfel, un grad mai mare de flexibilitate n sensul c o
procedur proiectat s manipuleze fiierul prin intermediul identificatorului intern poate fi
utilizat ca rutin generic pentru prelucrarea a diferite fiiere.
Dup prelucrarea fiierului, multe limbaje de programare cer s fie apelat o rutin
numit Close. Aceast rutin informeaz sistemul de operare c spaiul de memorie rezervat
pentru descriptorul de fiier poate fi folosit n alte scopuri. Pentru anumite fiiere (ex. fiierele
txt), rutina Close are i rolul de a comunica sistemului de operare necesitatea transferrii ultimei
nregistrri fizice pe dispozitivul de stocare.

163

TEST AUTOEVALUARE 7 (Structuri de fiiere)


1. De cte tipuri pot fi structurile de fiiere? Enumerai-le.
2. Dai exemple de suporturi fizice specifice organizrii secveniale.
3. Cum se marcheaz sfritul fiecrui fiier secvenial?
4. Fiierele secveniale sunt stocate n ordine ...... sau ..., n funcie de
coninutul unui cmp, numit .
5. Singurul mod de a gsi o nregistrare este acela de a:
a) ncepe cutatea de la nceputul fiierului;
b) folosi o cheie de cutare;
c) cuta n arhiv, folosind un algoritm.
6. Ce este un fiier tranzacional?
7. Pentru a citi, respectiv a scrie (salva) informaii dintr-un/ntr-un fiier secvenial
identificat ca List potal, n Pascal se pot folosi instruciuni de forma :
a) read
b) compare
c) summ up
d) write
8. Cum se numete parametrul utilizat n cadrul programului pentru identificarea blocului
de date care se transfer:
a) nregistrare potal;
b) nregistrare fiscal;
c) Separare numeric.
9. Ce este un fiier de text?
10. Fiierele de text sunt mprite n :
a) secvene de octei ;
b) secvene de rnduri separate ;
c) secvene de uniti lingvistice.

164

11. Unde sunt memorate mai nti nregistrrile nregistrrile fizice, nainte de transferarea
efectiv a acestora pe dispozitivul de stocare:
a) ntr-un buffer;
b) Pe un hard-disk extern;
c) Pe o partiie separat.
12. Descriei aspectele legate de programarea fiierelor de text.
13. Ce este indexul fiierului?
14. Care este condiia necesar pentru ca un index s devin viabil:
a) Dimensiunea lui trebuie s se ncadreze n limite rezonabile;
b) Trebuie s rmn n memoria secundar a calculatorului;
c) Trebuie s se regseasc pe ambele partiii.
15. Descriei etapele de aplicare a funciei fsetpos i rolul acesteia (limbajul C).
16. Calcularea poziiei fiierelor dispersate n memorie se realizaz prin aplicarea unui
algoritm numit ......................................... asupra valorii .................................
17. Descriei o tehnic de dispersie cunoscut.
18. Ce este o zon de depire?
19. Care este rolul sistemului de operare?
20. Cum se numete tableta folosit de sistemul de operare pentru gestionarea informaiilor?

165

UNITATEA DE INVATARE 8

8.

Structuri de Baze de date

8.1.

Consideraii generale

n general, nelegem prin baz de date orice ansamblu de date, dar termenul semnific
de obicei un ansamblu de date stocate pe un dispozitiv magnetic de stocare de mas, avnd
diferite forme de prezentare (organizare), n funcie de necesiti i disponibil ca surs de date
pentru o gam larg de aplicaii.
Din alt punct de vedere, o baz de date este rezultatul combinrii mai multor serii de
date (proiectate i culese iniial pentru aplicaii diferite) ntr-un singur ansamblu unificat.
Aceast abordare integrat a conceptului de baz de date i are originea n evoluia istoric a
sistemelor automate de stocare i ntreinere a datelor.
De exemplu, nevoia calculrii salariilor a condus la apariia unor fiiere secveniale, iar
necesitatea regsirii interactive a datelor a avut ca rezultat realizarea unor fiiere cu acces direct.
Dei fiecare din aceste sisteme de fiiere a reprezentat o mbuntire fa de procedurile
manuale, datorit lipsei de comunicare ntre ele, totui permiteau numai o utilizare limitat i
neeficient a resurselor. n aceste condiii, bazele de date au reprezentat soluia adecvat a
organizrii informaiilor stocate i gestionate de instituii i organizaii.
Dac se implementeaz o baz central de date referitoare la datele solicitate de mai
multe compartimente, administrarea acesteia se poate executa dintr-o unic poziie cunoscut
sub numele de administrator al bazei de date (DBA database administrator).
Administratorul tie att ce date sunt disponibile n cadrul organizaiei, ct i care sunt
datele necesare diferitelor compartimente, putnd lua hotrri referitoare la organizarea i
accesul la date. Exist i dezavantaje care apar la organizarea datelor sub forma unor baze de
date. Una din problemele delicate este controlul accesului la datele importante. Controlul
asupra accesului la informaiile din baza de date este la fel de important ca i capacitatea lor de
partajare.
166

Acordarea de drepturi distincte de acces la sistemele de baze de date se face innd


seama de schema de descriere a ntregii structuri a bazei de date.

ultima

vreme,

dimensiunile i aria de cuprindere a bazelor de date a cunoscut o cretere rapid, ceea ce a


condus la apariia unor grupri foarte mari de date. Aceste grupri de date pot fi fr efort
organizate, asamblate i interogate de la distan. Acest mod de manipulare genereaz
propagarea cu uurin a informaiilor greite i apariia incidentelor legate de utilizarea
neautorizat sau vicierea intenionat a informaiilor cum ar fi falsificarea creditelor, cazierelor
judiciare sau accesul neautorizat la informaii personale.

8.2.

Implementarea stratificat a bazelor de date

Cel care utilizeaz o baz de date este numit utilizator (user), iar uneori utilizator final
(end-user). Acest utilizator final poate fi n egal msur un funcionar al unei companii aviatice
care efectueaz rezervri de locuri sau un director executiv al unei mari societi constructoare
de automobile.
n ambele cazuri, probabil c utilizatorul nu este specialist n calculatoare i nici nu
trebuie s cunoasc n detaliu tehnologia i tehnicile utilizate n domeniu. Utilizatorul trebuie s
se poat concentra asupra problemei pe care o are de rezolvat, iar sistemul de gestionare a bazei
de date trebuie s i prezinte informaiile necesare ntr-o form specific aplicaiei respective, i
nu ntr-un limbaj tehnic greu de neles.
Pentru a rspunde la aceste cerine bazele de date sunt construite pe mai multe niveluri
de abstractizare (fig. 8.1).
Imaginea datelor oferit utilizatorului final este produs de un software de aplicaie, a
crui comunicare cu utilizatorul se desfoar n mod interactiv i n termeni specifici
programului.
Proiectarea acestui software de aplicaie imprim personalitate sistemului de uz general.
De exemplu, comunicarea cu utilizatorul se poate face printr-un sistem de ntrebri i rspunsuri
sau prin formulare care trebuie completate.

167

Figura 8.1 - Stratificarea conceptual a bazelor de date

Indiferent de interfaa adoptat, aplicaia trebuie s comunice cu utilizatorul pentru a


obine de la acesta informaiile necesare (inclusiv cerinele/solicitrile), pe care ulterior s le
prezinte ntr-un format ct mai prietenos (friendly user interface).
De manipularea datelor, n cadrul bazei de date, se ocup un pachet de programe numit
sistem de gestiunea bazei de date SGBD (data base management system DBMS).
Primul avantaj al utilizrii acestor sisteme de gestiunea bazei de date SGBD este
simplificarea activitii programatorului aplicaiei n ceea ce privete manipularea efectiv a
datelor solicitate de aplicaie. Aceast manipulare s-ar complica i mai mult din punct de vedere
al rezolvrii problemei n contextul unei baze de date distribuite (o baz de date mprit pe mai
multe calculatoare legate n reea).
Alt avantaj al separrii aplicaiei de sistemul de gestiune a bazei de date este c o astfel
de organizare permite controlul accesului la baza de date.
Un alt avantaj important al utilizrii a dou pachete de programe, unul pentru interfaa cu
utilizatorul, cellalt pentru manipularea efectiv a datelor este obinerea independenei datelor.
Altfel spus, este posibil schimbarea organizrii bazei de date fr a fi necesar modificarea
aplicaiilor.
i un ultim avantaj al separrii ntre aplicaii i SGBD este acela c permite ca aplicaia
s fie scris utilizndu-se un model simplificat conceptual, al bazei de date, fr a lua n
considerare structura efectiv a acesteia.

168

Aplicaiile sunt scrise n limbaje de uz general, dispunnd de instrumente necesare


exprimrii algoritmilor, dar nu i pentru operaii care s permit manipularea facil a bazei de
date. Rutinele furnizate de SGBD extind facilitile limbajului utilizat, permind folosirea
imaginii conceptuale a modelului bazei de date.
Un astfel de limbaj de uz general care se adaug capacitilor SGBD-ului se numete
limbaj de gazd.
Cutarea unor model mai performante de baze de date este n plin desfurare, scopul
fiind acela de a se gsi un model care s permit conceptualizarea unor sisteme complexe, s
conduc la moduri ct mai concise de solicitare a informaiilor i s poat fi implementat eficient
prin furnizarea de ctre SGBD a unor instrumente abstracte utilizabile n aplicaii.

8.3.

Modelul relaional

Popularitatea de care se bucur modelul relaional este motivat de simplitatea sa


structural, modelul prezint datele ca fiind stocate n nite tabele numite relaii. Modelul
relaional permite reprezentarea informaiilor referitoare la salariaii unei firme printr-o relaie ca
cea din tabelul urmtor:

Figura 8.2 - Relaia care conine informaii despre angajaii unei firme

O linie din cadrul relaiei (tabelului) poart numele de tuplu. Coloanele relaiei se
numesc atribute.

169

Proiectarea relaional
Proiectarea unei baze de date utiliznd modelul relaional se concentreaz pe proiectarea
relaiilor din componena sa. S presupunem c pe lng informaiile coninute n relaia din fig.
8.2, dorim s includem i alte informaii legate de un istoric al poziiilor deinute de un salariat
n cadrul firmei cu urmtoarele atribute: denumirea postului (secretar, ef birou, ef
compartiment), codul de identificare a postului (unic pentru fiecare post), codul referitor la
pregtirea profesional necesar fiecrui post, compartimentul n cadrul cruia a fost deinut
postul i perioada de ocupare a postului (data/nceput i data/sfrit activitate; n cazul unui post
deinut n prezent se va nota acest atribut cu un asterisc).
Un mod de rezolvare a noi probleme este extinderea relaiei din fig. 8.2, prin adugarea
de noi coloane care s cuprind noile atribute conform fig. 8.3. La o examinare mai atent
aceast relaie ridic o serie de probleme. Una dintre ele este ineficiena relaiei: nu mai conine
cte un tuplu pentru fiecare salariat, fiind posibil ca un salariat s fi fost avansat n decursul
timpului.
Descriind legturile dintre atribute, ca mai sus, informaiile iniiale se vor repeta, fie:
marca, numele, adresa, codul numeric, fie: departamentul, codul pregtire profesional. O alt
problem apare la tergerea unor informaii nregistrate o singur dat n baza de date, cum ar fi
codul funciei pentru poziia a treia din tabel (S8 director compartiment).
Aceast situaie a aprut deoarece am combinat n aceeai relaie informaii care se
refer la lucruri diferite. Modul de rezolvare a problemei este reproiectarea bazei de date
folosind attea relaii cte subiecte am ales. n cazul nostru este vorba de trei subiecte
identificare salariat, locul su de munc i perioada angajrii salariatului pentru fiecare loc de
munc.

170

Figura 8.3 - Baz de date care conine trei relaii

Utiliznd aceast baz de date informaiile suplimentare sunt disponibile implicit prin
combinarea informaiilor coninute n aceste relaii. Cte odat mprirea atributelor n relaii
foarte simple duce la pierderea de informaii. Pornind de la proprietile relaiilor s-au putut
construi ierarhii de clase de relaii numite prima form normal, a doua form normal, a

171

treia form normal, ..., fiecare din aceste forme normale (clase de relaii) fiind mai puin
predispuse apariiei unor anomalii de funcionare dect cele din clasa precedent.
Operaii relaionale
Analizam in continuare operaiile efectuate asupra relaiilor.
Pentru a regsi informaiile referitoare la un angajat se va selecta din relaia
identificarea salariatului tuplul cu atributul de identificare dorit, iar pentru a obine lista
posturilor dintr-un compartiment se vor selecta tuplurile din relaia identificarea locului de
munc care pentru atributul compartiment au valoarea codului departamentului precizat.
Realizarea seleciei tuplului i plasarea sa ntr-o nou relaie se poate exprima sintactic
astfel:

NEW

SELECT from SALARIAT where Marca = 34A70


(din)

(unde)

Astfel se creeaz o nou relaie numit NEW care conine tuplurile din relaia salariat,
al cror atribut Marca este egal cu 34A70 (fig. 8.4.).

Figura 8.4 - Operaia SELECT


172

Operaia PROJECT extrage anumite coloane. Dac dorim s aflm titulaturile posturilor
dintr-un compartiment, dup ce am efectuat o operaie SELECT pentru a extrage din relaia
LOCURI de MUNC tuplurile care conin departamentul-int plasndu-le ntr-o relaie NEW,
lista pe care o cutm este cea a valorilor din coloana Denumire compartiment a acestei noi
relaii.
Pentru a extrage aceast nou coloan i a plasa rezultatul ntr-o nou relaie, utilizm
operaia PROJECT, care se va exprima sintactic astfel:
MAIL

PROJECT

Nume,

Adres

from

SALARIAT

i va realiza obinerea unei liste cu numele i adresele tuturor salariailor firmei. Lista se va gsi
n noua relaie MAIL care are dou coloane (vezi fig. 8.5).

Figura 8.5 - Operaia PROJECT

173

Relaia JOIN aplicat asupra a dou relaii are ca rezultat obinerea unei noi relaii ale crei
atribute sunt atributele relaiilor iniiale (fig. 8.6).
Modul n care sunt concatenate tuplurile este determinat de condiia specificat pentru
operaia JOIN.

JOIN A and B where A . W = B . X

n acest exemplu un tuplu din relaia A va fi concatenat cu unul din relaia B dac i numai dac
atributele W i X ale celor dou tupluri sunt egale.

Figura 8.6 - Operaia JOIN

174

Se va exemplifica mai jos operaia JOIN asupra bazei de date din fig 8.3 pentru a obine
o list a codurilor de identificare ale tuturor angajailor, mpreun cu departamentul n care
lucreaz fiecare.
Instruciunea necesar este :

PLACE 1

J OIN ANGAJARE SALARIAT AND LOC DE MUNC unde

ANGAJARE SALARIAT . Cod funcie = LOC DE MUNC .

Cod funcie, rezultatul este prezentat n fig. 8.7. Pentru a rezolva problema se selecteaz
mai nti acele tupluri din relaia ANGAJARE SALARIAT Data sfrit, unde Data sfrit =
* , iar dup aceea se proiecteaz atributele:
ANGAJARE SALARIAT Marca salariatului
i
LOC DE MUNC Denumire departament.
n concluzie, obinerea informaiilor se realizeaz prin executarea instruciunilor :
PLACE 1

JOIN ANGAJARE SALARIAT AND LOC DE MUNC unde

ANGAJARE SALARIAT . Cod funcie = LOC DE MUNC .Cod funcie

PLACE 2

SELECT from PLACE 1 unde


ANGAJARE SALARIAT Data sfrit = *

LIST

PROJECT ANGAJARE SALARIAT, Marca salariat LOC DE MUNC


Denumire departament from PLACE 2.

175

Figura 8.7 - Exemplu de aplicare a operaiei JOIN


176

Sistemul de gestiune a bazei de date are rolul de a accepta comenzi exprimate n termenii
modelului relaional i de a le transforma n aciuni ce in cont de structura efectiv de stocare.
Un sistem de gestiune a bazei de date care utilizeaz un model relaional va include rutine pentru
efectuarea operaiilor SELECT, PROJECT i JOIN, rutine care vor fi apelate din aplicaie
printr-o structur sintactic compatibil cu limbajul-gazd.
n realitate sistemele de gestiune a bazelor de date conin operaii care pot fi combinaii
ale unor pai elementari ntr-o form prietenoas pentru utilizatori. Un astfel de limbaj este
limbajul S Q L (Structured Query Language).

SQL
Limbajul SQL este destinat interogrii bazelor de date. Acest limbaj permite ca printr-o
singur instruciune SQL se poate exprima o interogare care presupune o secven de operaii
SELECT, PROJECT i JOIN.
De exemplu interogarea din ultimul exemplu (fig. 7.7) poate fi exprimat n SQL printr-o
instruciune:
select Marca salariat, Denumire departament
from ANGAJARE SALARIAT, LOC DE MUNC
unde ANGAJARE SALARIAT . Cod funcie = COD LOC DE MUNC .
Cod funcie i ANGAJARE SALARIAT . Dat sfrit = * .
Iat cteva exemple n SQL.
Instruciunea:
select Nume, Adres
from IDENTIFICAREA SALARIATULUI
genereaz o list care conine numele i adresele tuturor angajailor din relaia
IDENTIFICAREA SALARIATULUI. (Aceast operaie este identic cu operaia PROJECT).
Instruciunea :
select IDENTIFICAREA SALARIATULUI Nume, ANGAJAREA
SALARIATULUI . Dat debut
from IDENTIFICAREA SALARIATULUI, ANGAJAREA SALARIATULUI
where IDENTIFICAREA SALARIATULUI . Cod funcie = ANGAJAREA
SALARIATULUI .
177

Cod funcie furnizeaz o list a tuturor angajailor cu informaii privind data angajrii.
Pe lng interogri, limbajul SQL permite i definirea structurii unei relaii, crearea de
noi relaii, ca i modificarea coninutului unor relaii existente.
Baze date orientate spre [pe] obiecte
Una dintre cele mai noi direcii de cercetare n domeniul bazelor de date o constituie
aplicarea paradigmei orientate spre obiecte. Direcia este ncurajat de urmtoarele motive:

independena datelor se poate obine prin ncapsulare;

clasele i motenirea par concepute dedicat pentru descrierea schemei


generale a bazei de date i a schemelor pariale;

baze de date constituite din obiecte inteligente care pot rspunde direct la
ntrebrile ce li se pun, fr s utilizeze un program supervizor de interogare;

abordarea orientat pe obiecte elimin anumite restricii inerente altor metode


de organizare a bazelor de date.

Meninerea integritii bazelor de date


Sistemele de gestiune a bazelor de date (SGBD) de uz personal sunt n general ieftine
i relativ simplu de manipulat. Instalarea lor nu-l implic de utilizator n detalii tehnice legate de
implementare. Volumul acestor baze de date este de mrime mic sau medie, iar pierderea sau
alterarea informaiilor coninute constituie o neplcere i nu un dezastru. n general problemele
aprute nu afecteaz de obicei dect civa oameni, iar pierderile de ordin financiar sunt desul
de mici.
Desigur altfel stau lucrurile cu SGBD-urile de mari dimensiuni (ca volum de informaii
nmagazinat i manipulat) utilizate n scop comercial. n astfel de sisteme unul din principalele
roluri ale sistemului de gestiune este de a veghea la meninerea integritii bazei de date, evitnd
operaiile efectuate parial sau acre, acionnd ntr-un mod neprevzut, care conduc la apariia de
informaii eronate.

Protocolul Commit/Rollback
Transferarea unei sume de bani dintr-un cont n altul presupune retragerea sumei din
contul-surs i adugarea ei la contul-destinaie. n faza intermediar ntre dou etape de
actualizare a bazei de date, informaiile din baza de date pot fi contradictorii. Astfel n scurta
178

perioad dintre retragerea (scoaterea) banilor dintr-un cont i depunerea lor n cellalt cont, suma
respectiv dispare din evidene.
n cazul bazelor de date de mari dimensiuni n care sunt n curs de execuie foarte multe
tranzacii, probabilitatea ca la un moment ales aleator s fie n curs o tranzacie este foarte mare.
n cazul unei defeciuni, SGBD nu las baza de date n stare de contradicie intern.
Acest deziderat este dus la ndeplinire prin meninerea unui jurnal n care se nregistreaz toate
activitile efectuate asupra unei tranzacii.
Punctul n care s-au nregistrat toate etapele tranzaciei se numete punct de angajare
(commit point).
n acest fel SGBD-ul dispune de toate informaiile necesare pentru reconstruirea pe cont
propriu a tranzaciei dac acest lucru este necesar. n cazul defectrii unui dispozitiv, SGBD-ul
utilizeaz informaiile din jurnal pentru a reconstitui tranzaciile ncheiate de la efectuarea
ultimei salvri. Dac apare o problem nainte ca o tranzacie s ating punctul de angajare,
SGBD-ul se va gsi n situaia de a fi executat parial o tranzacie pe care nu o poate finaliza.
n aceast situaie jurnalul poate fi utilizat pentru anularea (derulare napoi roll back)
activitilor deja efectuate de tranzacia respectiv.

Uneori derularea napoi a unei tranzacii

poate afecta elementele bazei de date care au fost utilizate ntre timp la alte tranzacii.
Este posibil ca tranzacia anulat s fi actualizat un cont bancar, iar alt tranzacie
efectuat ntre timp s fi utilizat noua valoare. Aceast situaie necesit anularea i a altor
tranzacii, ceea ce va avea influen i asupra altora .a.m.d. Fenomenul se numete anulare n
cascad (cascading rollback).

Blocarea
Dac studiem problema unei tranzacii care se execut n timp ce baze de date se
modific ca urmare a altei tranzacii uneori observm apariia unor interaciuni dorite ntre
tranzacii care pot conduce la rezultate eronate. Atunci cnd o tranzacie efectueaz un transfer
de fonduri dintr-un cont n altul, n timp ce alte tranzacii calculeaz valoarea total a
depozitelor, poate apare problema cunoscut sub numele de nsumare incorect (incorrect
summary problem).

179

Pentru nlturarea unei astfel de situaii, SGBD-ul poate obliga tranzaciile s se execute
integral, una dup alta (serial), noile tranzacii plasndu-se ntr-o coad de ateptare pn la
finalizarea celor precedente.
Majoritatea sistemelor mari de gestiune a bazelor de date utilizeaz un modul de
coordonare a partajrii timpului de calcul ntre tranzacii.
Pentru evitarea unor anomalii din categoria precizat, modulele de coordonare recurg la
un protocol de blocare (locking protocol), n care elementele bazei de date care sunt utilizate n
mod curent ntr-o tranzacie sunt marcate ca fiind blocate.
Se utilizeaz dou tipuri de blocare blocarea partajabil i blocarea exclusiv,
corespunznd celor dou tipuri de acces partajabil i exclusiv. Dac o tranzacie nu modific
datele, atunci are nevoie de acces partajabil (permite altor tranzacii s citeasc datele
respective).
Dac tranzacia are ca obiectiv modificarea datelor, atunci are nevoie de acces exclusiv
(nu permite accesul altor tranzacii la articolul respectiv.
Pentru tratarea cazurilor n care accesul solicitat de o tranzacie la un articol de date este
refuzat, se pot utiliza mai muli algoritmi. Unul dintre acetia foreaz tranzacia respectiv s
atepte pn cnd cererea poate fi aprobat, dar acest lucru poate conduce la apariia
interblocrii.
Pentru evitarea interblocrii SGBD-urile acord prioritate primei tranzacii.
Acest protocol este cunoscut sub numele de protocol de ateptare (wound wait
protocol) i asigur efectuarea tuturor tranzaciilor.

180

TEST AUTOEVALUARE 8 (Structura bazelor de date)


1. Definii conceptul de baz de date.
2. O baz de date este:
a. Ansamblu de date
b. O colectie de mai multe date
c. Un fisier
3. Cine utilizeaz o baz de date?
a. Utilizatorii
b. Hackerii
c. Crackerii
d. Functionarii publici
4. Definiti comunicarea cu utilizatorul si stratificarea conceptuala a bazelor de date.
5. SGBD inseamna:
a. Sistem de gestiune al fisierelor
b. Sistem de gestiune a bazelor de date
c. Data base management system
d. Sistem de gestiune al bazelor directionale
6. O linie din cadru relatiei (tabelului) poart numele de:
a. Cvintuplu
b. Quadruplu
c. Tuplu
7. Coloanele unei relatii se numesc:
a. Propietati
b. atribute
c. Parametrii
8. Selectarea unui tuplu cu anumite caracteristici dintr-o relaie se face cu:
a. NEW SELECT FROM NumeTabel WHERE camp = valoare
b. SELECT from NumeTabel WHERE camp = valoare
c. FROM NumeTabel (SELECT NumeColoana from NumeTabel2 WHERE
camp=valoare)
181

9. Relaia JOIN este folosit pentru a:


a. Extrage date dintr-un tabel
b. Extrage date din doua tabele in functie de un criteriu de selectare
c. Extrage date sub forma de produs cartezian din doua tabele
10. SQL nseamn:
a. Structured Query Language
b. Integrated Query Language
c. Metadata Quert Language
11. SQL este un:
a. Limbaj de interogare
b. Limba de programare
c. Comanda de batch
12. Definii conceptul de baz de date orientat pe obiect.
13. Definii protocolul Commit/Rollback.
14. Definii conceptul Commit i dai un exemplu.
15. Definii fenomenul de anulare n cascad (cascading rollback)
16. Definii conceptul de roll back.
17. Definii blocarea i tranzaciilor.

182

UNITATEA DE NVARE 9

9.

Sistem informatic i sistem informaional

9.1

Conceptul de informaie

Activitatea uman, n cele mai diverse forme ale sale, trebuie s respecte un anumit
numr de legi i reguli i este caracterizat prin entiti faptice exprimate fie sub form de valori
numerice, fie ca percepii sau observaii nenumerice. Aceste entiti faptice independente i
neevaluate, exist n general n numr nelimitat i se numesc informaii. Obinerea materialului
informaional presupune operaii de cutare, iar valorificarea lui, n scopul obinerii unor
cunotine necesit un proces de prelucrare (evaluare, selectare, ordonare, transformare, stocare,
transmitere).
Este necesar a se face distincie ntre noiunea de informaie (reprezentnd cunotine
despre o situaie, un individ sau un obiect) i noiunea de dat. Deosebirea dintre informaie i
dat este echivalent cu deosebirea dintre obiect i modelul su. Informaia i data se pot utiliza
ca sinonime numai n msura n care convenim s identificm un obiect prin modelul su. n
general se identific urmtoarele niveluri la care poate fi considerat informaia:

Nivelul sintactic se refer la un sistem de simboluri i reguli de grupare ale acestora


pentru reprezentarea informaiei n procesul culegerii, transmiterii i prelucrrii acesteia.
n sistemele informatice modul de reprezentare sintactic a informaiei este data creia
trebuie s-i fie asociate noiunea de valoare mpreun cu un sistem de reguli pentru
transformarea acesteia n scopul obinerii unor noi date.

Nivelul semantic presupune semnificaia informaiei. Sensul informaiei la nivel


semantic este corespondena dintre o dat i un obiect real sau situaia pe care o
reprezint aceast dat.

Nivelul pragmatic este concretizarea informaiei la necesitile receptorului, traduse n


importana i utilitatea ei. Abordarea pragmatic include probleme legate de conducere,
de necesarul de informaie i de eficiena sistemelor informaionale. Acest nivel reflect
cel mai fidel procesul de cunoatere.
183

Criterii de clasificare a informaiilor


1. dup forma de exprimare a fenomenelor pe care le reflect:
informaie analogic care caracterizeaz parametrii cu variaie continu din cadrul
proceselor tehnologice;
informaie cantitativ sau numeric exprimnd aspectul cantitativ al fenomenelor;
informaie calitativ sau nenumeric prezentat ntr-o varietate de forme, concepte, etc.
2. dup situarea n timp fa de procesul sau fenomenul reprezentat:

informaii active cu privire la procese sau fenomene n curs de desfurare;

informaii pasive se refer la procese sau fenomene n curs de desfurare;

informaii previzionale, sunt cele cuprinse n scenarii i fenomene care vor avea loc n
viitor oferind modele cantitative i calitative ale activitilor care se vor desfura.

3. dup coninut:

informaii elementare care definesc operaii i fenomene indivizibile;

informaii complexe constituite din rezultatele agregrii rezultatelor elementare pentru a


caracteriza un proces sau un fenomen;

informaii sintetice rezultnd din adiionarea informaiilor elementare de acelai tip.

Gradul de utilizare al informaiilor


Gradul de utilizare al informaiilor i eficacitatea utilizrii lor n diverse activiti sunt
determinate de indici de calitate specifici:

Exactitatea (precizia) reprezint cantitatea de informaie corect n raport cu ntregul


volum de informaii produs ntr-o perioad de timp. O informaie eronat poate influena
decisiv desfurarea proceselor, iar rectificarea erorii nseamn consum de timp i costuri
suplimentare.

Actualitatea (oportunitatea) exprim faptul c o informaie este util ntr-un anumit


moment, legat de desfurarea n timp a unor fenomene. Informaia trebuie frecvent pus
la zi.

Utilitatea unei informaii poate face obiectul unui studiu de oportunitate. O informaie
nu este prin ea nsi util sau inutil, ea este raportat la necesitile deciziei. n tehnica

184

de calcul multe informaii pot fi nregistrate n fiiere provizorii care vor putea deveni
utile prin perfecionarea posibilitilor de prelucrare existente.

Fiabilitatea presupune un control sistematic la nivelul informaiei de baz i a


informaiei rezultate:
1. chei de control (liter, cifr sau grup de dou cifre asociate de exemplu la marca
de identificare a unui individ, a unei ntreprinderi, la un cont bancar sau potal, la
numrul de identificare al unui articol vndut);
2. control de verosimibilitate (verificarea unui principiu, de exemplu cel de egalitate
ntre totalul debitului i totalul creditului);
3. control de feed back (de exemplu un mesaj primit este reemis spre expeditor,
acesta putnd verifica corectitudinea recepionrii).

Completitudinea necesitatea de a dispune de ct mai multe sau chiar de totalitatea


informaiilor referitoare la un domeniu al activitii.
Costurile informaiilor nu trebuie s fie superioare valorii informaiilor obinute (costuri
de noncalitate).

9.2

Noiunea de sistem

Definiie
Prin sistem se nelege orice seciune a realitii n care se identific un ansamblu de
fenomene, obiecte, procese, concepte, fiine sau grupuri, interconectate printr-o mulime de
relaii reciproce, precum i cu mediul nconjurtor i care acioneaz n comun n vederea
realizrii unor obiective bine definite. La un sistem se disting:

o mulime de elemente (e1, e2, ,en);

relaii interne (endogene) ntre elemente;

relaii exogene (intrri i ieiri din sistem);

variabilitatea n timp (caracterul procesual, dinamic) a sistemelor i relaiilor;

scopul sau finalitatea sistemului.

185

Mulimea relaiilor dintre componentele sistemului, precum i a relaiilor dintre


componente i ansamblu, formeaz structura sistemului. Mulimea caracteristicilor unui sistem,
la un moment dat, determin starea sistemului. Sistemele se pot clasifica dup mai multe criterii:
a) dup natur: sisteme naturale i sisteme elaborate;
b) dup comportament: sisteme deterministe i sisteme
nedeterministe;
c) dup modul de funcionare: sisteme deschide i sisteme nchise.

Sistem deschis
Un sistem deschis este caracterizat de ieiri care rspund intrrilor din sistem, dar ieirile
sunt izolate de intrri i nu au nici o influen asupra acestora. Rezultatele aciunilor trecute nu
influeneaz aciunile viitoare.

Figura 9.1 Sistem deschis

Sistem nchis
Un sistem nchis denumit i sistem cu conexiune invers, (cu reacie sau cu feed-back)
este influenat de propriul comportament:

Figura 9.2 Sistem nchis

186

,unde: X este vectorul intrrilor;


Y este vectorul ieirilor, Y = f(X)
Dac se noteaz cu Z vectorul obiectivelor atunci Z=f(X +x).
Valoarea x este vectorul de reglare.

Se deosebesc dou sisteme cu conexiune invers:

Sistemele cu conexiune invers negativ au un obiectiv, iar evoluia lor este o


consecin a neatingerii acestui obiectiv. Rolul conexiunii este de a limita anumite
mrimi, limitnd cauzalitatea intrare + ieire.

Sistemele cu conexiune invers pozitiv pentru care ieirea influeneaz intrarea n


sensul accenturii cauzalitii intrare ieire. Aceasta genereaz procese de cretere, n
care rezultatul unei aciuni produce o amplificare continu a aciunii (de exemplu
beneficiile obinute sunt investite n dezvoltare, rezult un spor de producie, de
beneficii, etc.)
Dac un sistem poate fi descompus n minimum dou pri, n care se pot identifica

intrri i ieiri, astfel nct ieirile unei pri s constituie intrri pentru cealalt parte, aceste pri
se numesc subsisteme. De exemplu, un sistem de producie, ntr-o reprezentare simplificat
poate fi descompus n dou subsisteme :
producie i comercial.

Figura 9.3 - Sistem informaional


187

Definiie
Sistemul informaional al unui organism economic reprezint ansamblul informaiilor,
surselor i nivelurilor consumatoare, canalelor de circulaie, procedurilor i mijloacelor de
tratare a informaiilor din cadrul respectivului organism.
Sistemul informaional are rolul de sesizare i colectare a informaiei de intrare i de
difuzare a informaiei rezultante. Sistemele informaionale, n afar de informaiile de origine
extern sunt alimentate i de informaii interne (directivele sistemului de decizie, rezultatele
aciunilor sistemului operant). Observaiile (de origine intern sau origine extern) sunt captate
printr-un anumit numr de observatori:

Figura 9.4 Sistemul informaional au unei uniti economice

Sistemul informaional al unei uniti economice asigur culegerea, pstrarea,


transmiterea i prelucrarea informaiilor necesare lurii deciziilor de ctre sistemul de conducere,
cu scopul realizrii funciilor conducerii asupra nivelului condus. n structura oricrei uniti
economice se pot identifica trei sisteme corelate ntre ele:

sistemul de conducere (decizional) constnd din mulimea centrelor sau organismelor


unde se analizeaz informaiile i se elaboreaz deciziile;

sistemul condus (de execuie, operaional) n care deciziile sunt transpuse n aciuni;

188

sistemul informaional care asigur legtura n ambele sensuri ntre sistemul de


conducere i cel condus, ntr-un sens transmindu-se decizii privind activitatea
operaional, iar n cellalt sens informaii referitoare la desfurarea proceselor n
sistemul condus.

Figura 9.4 Circulaia informaiilor n sistemul informaional

Legturile i circulaia informaiilor n sistemul informaional, care definesc fluxul


informaional, sunt strns legate de structura celorlalte dou sisteme (sistemul de conducere i
sistemul condus). Sistemul informaional al unei uniti economice poate fi perfecionat i
raionalizat, avnd n vedere urmtoarele aspecte:

sporirea calitii informaiei, astfel nct s rspund cerinelor enunate;

circulaia raional a informaiei, prin continuitatea fluxurilor i asigurarea legturilor


inverse n reglarea traiectoriei sistemului;

circulaia economic a informaiei prin eliminarea paralelismelor de informare, a


prelucrrii repetate;

circulaia raional a suporturilor de date primare prin tipizare i standardizare;

finalizarea informaiei prin decizie sau aciune;

reducerea costului informaiei;

adaptarea unor modele matematice pentru utilizarea optim a resurselor;

asigurarea unitii sistemului informaional prin abordarea integrat a metodelor,


tehnicilor i mijloacelor de tratare a datelor.

189

Principala modalitate de raionalizare a unui sistem informaional este realizarea unui


sistem informatic.

9.3

Sistem informatic

Definiie
Sistemul informatic este un ansamblu coerent structurat, format din echipamente
electronice de calcul i comunicaie, procese, proceduri automate i manuale, inclusiv
structurile organizatorice i salariaii, care folosesc calculatorul ca instrument de prelucrare
automat a datelor n domeniul concret de activitate al agentului economic, cu
scopulmaximizrii profitului realizat din activitatea economic.
Un sistem informatic este componenta sistemului informaional n care operaiile de
culegere, stocare, prelucrare i transmitere a datelor se realizeaz cu calculatorul electronic.
Sistemul informatic este conceput s funcioneze la nivelul unui singur agent economic
sau grup de societi comerciale, n vederea asigurrii informaiilor complexe, necesare aciunii
manageriale i desfurrii eficiente a ntregii activiti, cu respectarea cadrului legislativ
normativ n vigoare.
Un sistem informatic cuprinde:

Baza tehnic (hardware) constituit din ansamblul de echipamente pentru culegerea,


transmiterea, prelucrarea i stocarea informaiilor.

Figura 9.5 Sistem informatic pentru o unitate economic

Sistemul de operare (software) cuprinde totalitatea programelor care asigur utilizarea


optim a resurselor fizice.

190

Programele de aplicaii reprezint totalitatea programelor care realizeaz prelucrarea


datelor pentru obinerea diferitelor rapoarte (situaii).

Baza de date constituie un ansamblu de date organizat n fiiere interconectate.

Resursele umane i cadrul organizatoric cuprinde personalul de specialitate i cadrul


necesar funcionrii sistemului informatic.

Obiectivele utilizrii sistemelor informatice


Obiectivul principal al oricrui sistem informatic l constituie asigurarea selectiv i n
timp a tuturor nivelelor de conducere cu informaiile necesare i reale, pentru fundamentarea i
elaborarea operativ a deciziilor cu privire la desfurarea mai eficient a ntregii activiti din
unitatea economic.
Utilizarea i proiectarea sistemelor informatice trebuie s in cont de urmtoarele:

Ciclul de via intervalul de timp de la nceputul lucrrilor de realizare a unui sistem


informatic pn la introducerea unui nou sistem mai mare.

Cantitatea de date prin care se ncearc realizarea unor sisteme integrate, care s poat
rspunde la cele mai variate cerine ale conducerii.

Numrul de utilizatori.

Aparatul matematic folosit pentru cercetarea operaional, analiza factorial, teoria


stocurilor, teoria ateptrii, teoria rennoirii, etc.

Procedurile automate sau manuale utilizate.

Posibilitile de modificare impuse de schimbrile frecvente legate de cerinele


utilizatorilor.

Costurile resurselor materiale, att n faza de proiectare ct i n exploatare.

Structurarea sistemelor informatice


Structurarea sistemelor informatice pentru unitile economice se poate face pe
subsisteme i n cadrul acestora pe aplicaii sau module:

191

Figura 9.6 Structurarea unui sistem informatics

La nivelul unei ntreprinderi, subsistemele corespunztoare pot apare astfel:


A. Subsistemul cercetare dezvoltare.
B. Subsistemul producie cu urmtoarele componente:
a. planificarea tehnico material;
b. pregtirea tehnic a fabricaiei;
c. programarea, lansarea i urmrirea produciei;
d. conducerea activitii de reparaii i ntreinere a utilajelor.
C. Subsistemul comercial care cuprinde:
a. aprovizionarea tehnico material;
b. desfacerea produselor finite;
c. gestiunea stocurilor;
d. organizarea activitii de transport.
D. Subsistemul financiar contabil.
E. Subsistemul personal.

O alt posibilitate de structurare a sistemului informatic deriv din corelaia stabilit ntre
sistemul informaional i sistemul de conducere, situaie n care se poate face i mprirea n
raport cu nivelele de decizie existente n unitatea economic:

192

Subsistemul strategic pentru rezolvarea problemelor de perspectiv i generale


(afecteaz ansamblul unitii economice).

Subsistemul tactic avnd ca scop rezolvarea problemelor pe o perioad mai scurt (sub
un an) pe anumite domenii de activitate sau subactiviti.

Subsistemul operativ care deservete conducerea curent la nivel de decad, sptmn,


zi, formaie de lucru, schimb, etc.

Clasificarea sistemelor informatice


Clasificarea sistemelor informatice poate fi fcut n raport cu gradul de cuprindere al
domeniului sistemului informaional:

Sisteme informatice pariale pentru prelucrarea automat a datelor dintr-un sector de


activitate, de regul cel mai important.

Sisteme informatice totale care cuprind toate activitile informaionale pentru


prelucrarea datelor cu ajutorul calculatorului.
Aceste sisteme abordeaz sistemul ca fiind suma unor subsisteme considerate ca entiti

distincte care deservesc anumite activiti, fr a evidenia legturile dintre ele (acestea nu sunt
recomandabile, deoarece nu asigur cunoaterea relaiilor de cauzalitate dintre subsisteme i nu
permit utilizarea mai eficient a capacitii de prelucrare a calculatorului).

Sisteme informatice integrate care abordeaz procesul de prelucrare a datelor din cadrul
sistemului informaional al unitii economice, reliefnd legturile de cauzalitate dintre
subsistemele acestuia. Ele se bazeaz pe principiul prelucrrii, n toate modurile utile, a
datelor primare introduse o singur dat n sistem.

Avantajele implementrii sistemelor informatice


Datorit extinderii, n ultimii ani, ntr-o msur din ce n ce mai mare a tehnologiei
informaiei, a progreselor rapide ale microelectronicii, infrastructura tehnologic a societii a
suferit o schimbare important prin includerea unui domeniu numit uzual tehnologia informaiei
n care se evideniaz, n mod decisiv informatica. Acest lucru marcheaz trecerea de la
orientarea industrial, n care accentul se pune pe main i energie, la o noua orientare
informaional, n care accentul este pus pe informaie.

193

Proiectarea sistemelor informatice la nivel micro i macroeconomic, pe baza unor


modele matematice i pe o bun cunoatere a legilor economice, utiliznd tehnica bazelor de
date, face posibil ca activitatea de analiz a fenomenelor economice s devin dintr-un
instrument pasiv de constatare ntr-un instrument activ de previziune i control al acestora. Baza
de date este sursa de la care vin i de la care pleac toate informaiile, de la proces spre punctele
de decizie i invers, eliminnd redundana existent n cele mai multe sisteme informaionale.
n practica dezvoltrii sistemelor informatice avnd ca scop informatizarea activitilor
economico-sociale s-au produs importante transformri datorit unor schimbri i tendine cum
ar fi:
Informatizarea informaiei. Inovaiile introduse de informatic, de exemplu n
domeniul comunicaiilor, induc o concepere nou a informaiei i a coninutului su. Pentru
definirea elementelor noi apar, n mod firesc, neologisme cum ar fi: baz de date, banc de
date,

baz

de

cunotine,

inteligen

artificial,

hypertext,

hypermedia,

multimedia, legate de specificul informaticii i a suportului informatic.


Scderea costurilor produselor informatice datorit, pe de o parte, reducerii costurilor
hardware-lui, iar pe de alt parte, reducerii costurilor software-lui.
Creterea gradului de generalitate i de adaptabilitate al aplicaiilor ceea ce ofer
posibilitatea generalizrii implementrii sistemelor informatice n mai multe uniti economice,
pe baza unei platforme comune de aplicaii, cu efecte imediate de reducere a costurilor pe
unitatea de implementare. n acest sens aplicaiile implementate furnizeaz funcii software de
baz i funcii specifice activitii companiei. Prin funciile software de baz se definesc i se
rezolv problemele comune aplicaiei n proporie de circa 80-90%, iar prin soft-ul specific
aplicaiei, se definesc proprietile comportamentale suplimentare companiei. De multe ori ns,
gradul de generalitate al produselor informatice este prea mare, astfel nct adaptabilitatea lor la
necesitile utilizatorului devine aproape imposibil, acesta recurgnd, n mod firesc, la
realizarea propriului produs informatic.
Dezvoltarea teleinformaticii prin apariia de noi produse cu un raport pre/performan
din ce n ce mai avantajos care au fcut rentabil i necesar conectarea ntre ele a
calculatoarelor n cadrul unor reele de calculatoare. Principalul obiectiv al constituirii reelelor
de calculatoare este de a permite transmiterea datelor la distan dar i acela al partajrii (punerii
n comun) unor resurse hardware i software. Sistemele teleinformatice au dimensiuni din ce n
194

ce mai mari, reelele de calculatoare se pot interconecta putnd conine i componente eterogene
- calculatoare din familii diferite, platforme diferite i productori diferii.
Introducerea standardelor internaionale, prin elaborarea de ctre ISO (International
Standard Organization) a unor modele de referin pe baza conceptului de sistem deschis,
care s permit asigurarea unei baze comune pentru coordonarea elaborrii de noi standarde
(cum ar fi interconectarea sistemelor eterogene). Termenul de sistem deschis se refer doar la
recunoaterea reciproc i aplicabilitatea acelorai standarde. Standardizarea asigur o cretere a
gradului de portabilitate, de pe o platform de sistem la alta, att a datelor ct i a produselor
software, astfel nct productorii se simt ncurajai s le implementeze, avnd n vedere larga
circulaie a acestor standarde. Standardizarea n domeniul sistemelor de gestiune a bazelor de
date sau n domeniul limbajelor de programare conform unor standarde precum CODASYL i
ANSI au impus folosirea unor limbaje cum ar fi SQL i C datorit performanelor i facilitilor
pe care le ofer.
Extinderea bazelor de date clasice bazate pe text i valori numerice spre baze de date
orientate obiect. Bazele de date clasice sau relaionale ofer prea puin suport teoretic i practic
pentru tipurile neconvenionale de date. Bazele de date orientate obiect permit crearea de obiecte
complexe din componente mai simple, fiecare avnd propriile atribute i propriul comportament,
reuind s ofere noi soluii pentru rezolvarea problemelor i crearea unor aplicaii moderne.
Orientarea spre multimedia. Transpunerea unei pri a informaiei pe un suport
multimedia conjug interactivitatea cu atracia vizual, ofer un nou potenial n materie de
informare i este de un interes evident n toate domeniile. n raport cu utilitile tradiionale de
utilizare a informaiei, multimedia ofer urmtoarele avantaje: facilitatea de utilizare (interfaa
utilizator, grafica, audio, video), independena de utilizator (parcurs personalizat, independena
n raport cu un grup), interactivitatea (atractivitate, convivialitate).

195

TEST AUTOEVALUARE 9 (Sistem Informaional i Sistem Informatic de


fiiere)
1.

Definii conceptul de informaie.

2.

Ce presupune obinerea materialului informaional?


a. Operaii de adunare i scdere a informaiei
b. Operaii de cutare
c. Operaii de introducere a unei noi cantiti de informaie

3.

Comentai nivelurile la care poate fi considerat informaia.

4.

Definii nivelul sintactic.

5.

Definii nivelul semnatic.

6.

Definii nivelul pragmatic.

7.

Nivelul sintactic se refer la un sistem?


a. Eterogen
b. Binar
c. De simboluri
8. Modul de reprezentare sintactic a informaiei n sistemele informatice sunt?
a. Date
b. Numere
c. Structuri de date
9. Nivelul semantic presupune?
a. Semnificaia informaiei
b. Semnificaia structurilor de informaii
c. Structuri de arbori
10. Nivelul pragmatic reprezint?
a. Concretizarea informaiei
b. Diminuarea informaiei
c. Blocarea informaiei
11. Definii noiunea de sistem.
12. Ce este un sistem deschis?
13. Ce este un sistem nchis?
196

14. Definii sistemul informaional.


15. Definii noiunea de sistem informatic.
16. Argumentai clasificarea sistemelor informatice.
17. Care sunt avantajele implementrii sistemelor informatice.

197

BIBLIOGRAFIE

1. Andrew Tanenbaum, Organizarea structurat a calculatoarelor, ISBN: 978-9-738669-918 (ISBN10: 9-738669-91-X).


2. Andrew Tanenbaum, Reele de calculatoare, ISBN: 978-9-730030-00-6 (ISBN10: 9730030-00-6).
3. Andrew Tanenbaum, Sisteme de operare moderne, ISBN: 978-9-738669-92-5 (ISBN10:
9-738669-92-8) 2004.
4. Thomas Cormen, Introducere n algorimi, ISBN: 978-9-739753-47-0 (ISBN10: 9739753-47-7) 2004.
5. Knuth D.E., Arta programrii calculatoarelor, Editura TEORA, ISBN: 1-59496-098-4

198

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