Documente Academic
Documente Profesional
Documente Cultură
Capitolu 5
Capitolu 5
STRUCTURI DE DATE
5.1. INTRODUCERE
Cea mai simpl[ ]i mai sugestiv[ defini\ie a informaticii este urm[toarea:
informatica = studiul algoritmilor ]i datelor.
Unul dintre principalele obiective ale informaticii @l reprezint[ studiul
algoritmilor. Acest studiu are @n vedere urm[toarele probleme:
ma]ini pentru execu\ia algoritmilor, care se ocup[ cu studiul metodelor de
proiectare, organizare ]i construc\ie a unor ma]ini de calcul dedicate
execu\iei eficace a algoritmilor;
limbaje pentru exprimarea algoritmilor, care se ocup[ cu studiul metodelor
de exprimare precis[ a unui algoritm @ntr-un limbaj adecvat, de la nivelul
abstract, foarte concis, p`n[ la programul detaliat @ntr-un limbaj de
programare;
fundamentele algoritmilor., care se ocup[ cu g[sirea unor r[spunsuri la
@ntreb[ri de genul:
problema P poate fi rezolvat[ algoritmic ?
care este num[rul minim de opera\ii necesare oric[rui algoritm de
rezolvare a problemei P ?
analiza algoritmilor, care are ca obiectiv ob\inerea unui profil de performan\
[ al unui algoritm dat, @n termenii timpului de calcul ]i volumului de
memorie necesare pentru execu\ia sa;
validarea algoritmilor, care are ca obiectiv stabilirea corectitudinii unui
anumit algoritm, adic[ dac[ el determin[ solu\ia corect[ a unei probleme
dintr-o familie dat[ de probleme, pentru toate intr[rile admisibile posibile.
Dup[ cum se ]tie, toate calculatoarele moderne stocheaz[, reg[sesc ]i
189
clar[ @ntre variabilele logice, reale ]i complexe sau @ntre variabile repezent`nd
valori individule (scalare) ]i variabile reprezent`nd colec\ii de valori - mul\imi
sau vectori sau @ntre func\ii, func\ionale ]i mul\imi de func\ii, etc.
Aceast[ clasificare este cel pu\in la fel de important[ @n prelucrarea datelor.
Astfel, @n programare este valabil urm[torul principiu: orice constant[,
variabil[, expresie sau func\ie se caracterizeaz[ printr-un anumit tip de date.
Se nume]te tip o mul\ime de elemente numite valori sau obiecte, care pot
fi clar distinse @ntre ele. #ntr-un limbaj de programare orice constant[ apar\ine
unui anumit tip, orice variabil[ poate stoca valori de un anumit tip, orice
expresie se evalueaz[ la o valoare de un anumit tip ]i orice func\ie @ntoarce o
valoare de un anumit tip.
Orice limbaj de programare furnizeaz[ o mul\ime de tipuri predefinite.
Acest lucru @nseamn[ c[ limbajul permite folosirea variabilelor de tipul
respectiv ]i furnizeaz[ o mul\ime de opera\ii predefinite pentru manipularea
acestor variabile @n cadrul unui program. Anumite tipuri de date predefinite
corespund cu exactitate limbajului ma]in[ al calculatorului respectiv. Un
exemplu @l reprezint[ tipurile @ntreg ]i real. Atragem aten\ia c[ este
@ns[ posibil ca limbajul de programare s[ furnizeze tipul predefinit @ntreg
reprezentabil pe dou[ cuvinte de memorie, @n timp ce @ntregii din limbajul
ma]in[ sunt reprezenta\i pe un singur cuv`nt de memorie. Limbajele moderne de
programare ]i tipuri predefinite compuse, cum sunt spre exemplu vectorii
(Pascal, C, Fortran, Basic), structurile (Pascal, C, Cobol), ]irurile de caractere
(Snobol, Turbo Pascal) sau chiar listele (Lisp).
O observa\ie important[ este c[ tipurile de date nu trebuie confundate cu
echivalentele lor din matematic[. Spre exemplu, tipul @ntreg din programare nu
trebuie confundat cu mul\imea Z a numerelor @ntregi din matematic[.
Datorit[ reprezent[rii finite, tipul @ntreg din programare con\ine o mul\ime
finit[ de elemente @n timp ce mul\imea Z este infinit[. Cu toate acestea, de cele
mai multe ori se face abstrac\ie de aceast[ distinc\ie, ea fiind luat[ @n
191
considerare c`nd este semnificativ[ (de exemplu c`nd apare posibilitatea unor
dep[]iri, precizia este insuficient[ @n calcule, etc.).
#n concluzie, din punctul de vedere al modului de definire @n raport cu
un anumit limbaj (de programare), tipurile de date se clasific[ @n tipuri
predefinit ]i tipuri definite de utilizator. #n general, obiectele unui limbaj de
programare apar\in uneia dintre urm[toarele categorii: constante, variabile,
expresii ]i func\ii. Tipul unei constante rezult[ din forma sintactic[ (modul de
scriere) a acesteia. #n limbajele moderne de programare (Pascal, C), tipul unei
variabile rezult[ prin specificarea @n program a unui enun\ special numit
declara\ie. #n mod normal, declara\ia unei variabile trebuie s[ precead[ @n
program folosirii variabilei respective. Tipul unei expresii rezult[ din tipurile
operanzilor ]i modul lor de compunere cu ajutorul operatorilor. Tipul unei
func\ii rezult[ ca ]i @n cazul variabilelor din declara\ia func\iei. Declara\ia
func\iei precizeaz[ tipurile argumentelor ]i tipul valorii de retur. @n unele
limbaje, cum este limbajul C, se face distinc\ie @ntre declara\ia ]i defini\ia unei
variabile sau func\ii.
Se nume]te declara\ie un enun\ care asociaz[ o variabil[ sau o func\ie cu
tipul s[u. Se nume]te defini\ie un enun\ care asociaz[ o variabil[ sau func\ie cu
tipul s[u ]i aloc[ spa\iu de memorie variabilei sau corpului func\iei respective.
Tipurile de date se pot clasifica dup[ diverse criterii. Am v[zut deja o
astfel de clasificare @n tipuri predefinite ]i tipuri definite de utilizator.
Dup[ cum un tip de date se define]te sau nu @n termenii altor tipuri de date
avem tipuri primitive ]i tipuri derivate. Dac[ un obiect se poate descompune @n
mai multe componente, atunci el se nume]te obiect compus, altfel se nume]te
obiect simplu sau scalar. Un tip de date ale c[rui valori sunt compuse se nume]te
tip compus, altfel se nume]te tip simplu sau scalar.
Un tip de date se nume]te dac[ pe mul\imea valorilor sale se poate defini
o rela\ie de ordine. #n caz contrar el se nume]te neordonat. Spre exemplu, @n
C, @ntregii, caracterele ]i realii reprezint[ tipuri ordonate. Un tip ordonat nu
192
T se nume]te
@ntreg
]i
real
din
majoritatea
limbajelor
de
progrmare.
locul s[u obiecte de tip numeric care sunt restric\ionate la dou[ valori: 0 ]i 1
(cum este cazul limbajului C).
Tipul caracter
De]i la @nceput calculatoarele numerice erau destinate @n special
realiz[rii unor prelucr[ri numerice, ulterior s-a constatat c[ este posibil[ folosirea
acestora ]i pentru implementarea unor prelucr[ri cu un pronun\at caracter
nenumeric. Un astfel de exemplu @l reprezint[ procesarea textelor. @n acest
scop este necesar[ reprezentarea @n cadrul programelor a caracterelor afi]abile,
pentru aceasta folosindu-se tipul caracter. Tipul caracter modeleaz[ mul\imea
finit[ a tuturor caracterelor afi]abile. Din nefericire, nu exist[ un set standard de
caractere specific tuturor sistemelor de calcul. Din acest motiv, termenul
''standard'' trebuie interpretat @n acest context ca referindu-se la sistemul de
calcul particular pe care este executat programul @n cauz[. Cel mai folosit set
''standard'' de caractere este cel definit de Organiza\ia Interna\ional[ pentru
Standarde (ISO) ]i anume versiunea sa american[ -- codul ASCII, care
const[ din 128 de caractere, dintre care primele 33 sunt caractere de control, iar
celelalte 95 sunt caractere afi]abile. Caracterele sunt codificate intern prin valori
@ntregi numite coduri. Deoarece codul ASCII are 128 de caractere, pentru
codificarea caracterelor sale sunt suficien\i 7 bi\i. Cu tote acestea, se folose]te
pentru codificare un octet, deoarece memoria intern[ a sistemelor de calcul este
structurat[ de obicei sub forma unei secven\e de loca\ii cu dimensiunea de un
octet. Principalul dezavantaj al codului ASCII este c[ permite un set de maxim
256 caractere (@n versiunea sa extins[ !). Exist[ ]i seturi de caractere care
con\in mai mult de 256 de elemente ]i nu pot fi @n consecin\[ codificate pe un
singur octet. Din acest motiv a fost introdus[ specifica\ia standard Unicode
pentru reprezentarea seturilor de caractere care nu se pot reprezenta pe un
singur octet (cum este cazul limbii chineze sau japoneze). Un caracter dintr-un
astfel de set se nume]te caracter larg ]i pentru reprezentarea sa se folosesc doi
197
Tipul subdomeniu
O mul\ime se nume]te ordonat[ liniar dac[ putem enumera toate
elementele sale. Spre exemplu, tipurile @ntreg, caracter, logic ]i enumerare
modeleaz[ mul\imi ordonate liniar. Din acest motiv aceste tipuri se numesc
tipuri ordinale. Un tip ordinal nu trebuie confunat cu un tip ordonat (pe care s-a
definit o rela\ie de ordine). Spre exemplu, @ntregii ]i realii sunt tipuri ordonate,
dar tipul real nu este ordinal. Din punct de vedere matematic, un tip ordinal
modeleaz[ o mul\ime de elemente finit[ sau num[rabil[. Se ]tie c[ mul\imea
numerelor reale nu este num[rabil[ ]i de aceea tipul real nu este un tip ordinal.
Caracteristica esen\ial[ a unui tip ordinal este c[ putem vorbi despre succesorul ]
i predecesorul unui element. De exemplu, succesorul lui 4 este 5, iar succesorul
lui `c` este `d`. Deseori o variabil[ poate lua valori doar @ntr-un interval al unei
mul\imi ordonate liniar. Fie T un tip ordonat liniar ]i fie min ]i max limita
inferioar[, respectiv superioar[ a unui interval din T. Se nume]te tip subdomeniu
acel tip de date care modeleaz[ valorile din intervalul [min...max]. C`teva
exemple
de
tipuri
subdomeniu
sunt:
[`a`..`z`],
[luni..vineri],
[locotenent..general], [1900..2100].
Tipurile subdomeniu se utilizeaz[ de obicei pentru reprezentarea indicilor
tablourilor.
Tipul referin\[
Numeroase prelucr[ri se refer[ la rela\iile dintre obiectele prelucrate ]i nu
doar la valorile lor. #n astfel de cazuri poate fi necesar[ reprezentarea explicit[ a
acestor rela\ii. Pentru aceasta, anumite obiecte trebuie s[ se poat[ referi la alte
obiecte. Este posibil chiar ca un acela]i obiect s[ fie referit din dou[ sau mai
multe locuri. #ntruc`t copierea valorii obiectului @n locul de unde a fost referit
nu este o solu\ie acceptabil[ datorit[ consumului mare de memorie ]i
dificult[\ilor de men\inere a consisten\ei, rezult[ c[ trebuie apelat la o alt[ tehnic[
199
]i anume de a defini @n program obiecte care s[ poat[ referi alte obiecte. Pentru
aceasta se folosesc tipul referin\[ ]i obiectele pointer.
Fiind dat un obiect o de tip T, el poate fi referit utiliz`nd un obiect de
tipul referin\[ la T. Vom nota acest tip Ref( T). Putem de asemenea defini
referin\e la obiecte pointer. Se obi]nuie]te ca ''leg[turile'' create @ntre obiecte
prin intermediul pointerilor s[ se reprezinte grafic. Deseori trebuie s[ lucr[m cu
referin\e c[tre obiecte al c[ror tip nu @l cunoa]tem. Pentru aceasta se folose]te
tipul referin\[ generic[, desemnat prin cuv`ntul cheie ref. O referin\[ la un obiect
se implementeaz[ ca adres[ a loca\iei de memorie, corespunz[toare obiectului
respectiv. Opera\ia ref devine astfel opera\ia de @nc[rcare a adresei unui obiect.
Opera\ia deref se implementeaz[ utiliz[nd tehnica adres[rii indirecte, prin care o
anumit[ valoare este interpretat[ drept adresa unei loca\ii de memorie de unde se
va extrage valoarea propriu-zis[. Limbajele de programare difer[ @n general
prin libertatea pe care o ofer[ programatorului @n lucrul cu pointeri. Spre
exemplu, limbajul Pascal nu permite dec`t o serie de opera\ii de baz[ asupra
pointerilor, @n timp ce limbajul C este cu mult mai @ng[duitor, permi\`nd
chiar efectuarea de opera\ii aritmetice cu pointeri.
Din cele discutate p`n[ acum, singura modalitate de a crea obiecte o
constituie declararea acestora. O declara\ie are ca efect alocarea memoriei
pentru obiectul respectiv la momentul compil[rii programului, obiectul fiind
creat la @nc[rcarea programului, deci @naintea execu\iei sale efective.
Aceast[ modalitate de alocare a memoriei se nume]te static[.
Principala caracteristic[ a acestui mod de alocare este faptul c[ obiectele
sunt referite @n program prin identificatorul introdus la declararea lor. Acest
lucru este posibil deoarece asocierea dintre identificator ]i loca\ia de memorie
rezervat[ obiectului s-a f[cut @n faza de compilare a programului.
Obiectele pot fi @ns[ create ]i la momentul execu\iei. Aceast[ modalitate
de alocare a memoriei se nume]te dinamic[. Un astfel de obiect nu va putea fi
@ns[ accesibil prin program utiliz[nd un identificator, deoarce momentul
200
Tipul agregat
Un obiect agregat, numit ]i @nregistrare sau structur[, este un obiect
compus ale c[rui componente (numite ]i c`mpuri) sunt eterogene (au tipuri
diferite) ]i au fiecare asociat c`te un nume simbolic, folosit @n cadrul opera\iei
de selec\ie. Un tip agregat este definit pornind de la o mul\ime S de selectori ]i o
mul\ime de tipuri asociate selectorilor printr-o func\ie bijectiv[ T : S.
C`teva exemple sunt urm[toarele: complex = (real,imaginar), data = (zi,
luna, an), persoana = (nume, prenume, data_nasterii, adresa).
Pentru a se indica accesul la componenta S a unui obiect agregat o, se
folose]te @n majoritatea limbajelor (pseudocod, Pascal, C) nota\ia o.S.
Cardinalitatea tipului compus agregat este egal[ cu produsul cardinalit[\ilor
tipurilor sale componente.
La nivelul implement[rii, unui obiect agregat @i corespunde o
zon[ compact[ de memorie a c[rei m[rime rezult[ din m[rimile componentelor
obiectului repectiv. Dac[ se notez[ cu M(S) m[rimea componentei S a unui
obiect agregat o atunci m[rimea zonei de memorie alocat[ lui o, notat[ cu M, se
determin[ cu formula: M = M(S). Orice referin\[ la un c`mp al unui obiect
agregat se transform[ @n distan\a zonei alocate acestuia fa\[ de @nceputul
zonei alocat[ obiectului. Distan\ele se calculeaz[ de regul[ la momentul
compil[rii programului. Accesarea unui c`mp al un agregat se implementeaz[ de
regul[ utiliz`nd tehnica adres[rii relative.
Tipul tablou
Deseori este necesar[ folosirea unui tip compus ale c[rui componente
sunt toate de acela]i tip. Un astfel de tip se nume]te omogen. @n plus, accesul
la componente are loc prin selectori care sunt elemente ale unei mul\imi finite ]i
ordonat[ liniar. #n aceste situa\ii se va folosi tipul tablou.
Tipul tablou se define]te pornind de la un tip de baz[ T care
modeleaz[ tipul componentelor ]i de la un tip subdomeniu I, care
202
5.4 LISTE
5.4.1. LISTE LINIARE
Una dintre cele mai simple ]i mai des folosite structuri de date este lista
liniar[, cunoscut[ ]i sub numele de list[ ordonat[ sau secven\[. O
list[ liniar[ const[ dintr-o @n]iruire de elemente X 1, X2, ..., Xn numite noduri,
apar\in`nd de obicei unui acela]i tip de baz[ T. Propriet[\ile structurale esen\iale
ale acestui ]ir se rezum[ la pozi\ia relativ[ a elementelor, a]a cum apar ele @n
cadrul ]irului. Singurele lucruri care ne intereseaz[ la o astfel de structur[ sunt:
dac[ n>0 atunci X1 este primul nod ]i Xn este ultimul nod
dac[ 1<i<n atunci nodul al i-lea X i este precedat de nodul Xi-1 ]i urmat de
nodul Xi+1
Ultima
proprietate
exprim[
esen\a
accesului
secven\ial,
care
afirm[ c[ dac[ cunoa]tem nodul curent X i atunci putem accesa eficient nodul
predecesor Xi-1 ]i nodul succesor Xi+1.
Exist[ o mare varietate de opera\ii ce pot fi realizate asupra listelor
liniare. Acestea includ:
determinarea lungimii (num[rului de elemente) unei liste
determinarea valorii primului, respectiv ultimului element al unei liste
descompunerea unei liste @n primul element ]i lista format[ din restul
elementelor (elementelor aflate dup[ el), respectiv @n ultimul element ]i
205
elemente
informa\ii
1
predecesor
curent
succesor
sf`r]it
nmax
suplimentar
de
memorie
necesar
includerii
informa\iilor
de
3
5
209
3
vid
3
4
2
5
1
0
210
lungime @nceput
curent
sf`r]it
3
santinel[
@nceput
santinel[
sf`r]it
lungime @nceput
informa\ii
curent
sf`r]it
211
informa\ii
5.5 STIVE
5.5.1 NO|IUNI INTRODUCTIVE
Ori de c`te ori @n care apare necesitatea folosirii unor date @n ordinea
invers[ gener[rii lor, vom apela la structura de date de tip stiv[. Pentru aceasta
va trebui s[ memor[m datele @n ordinea gener[rii lor @ntr-o stiv[.
Datorit[ faptului c[ accesul la structura de tip stiv[ are loc printr-un singur punct
numit v`rful stivei, datele vor fi extrase din stiv[ @n ordinea invers[ @n care au
fost generate.
Dintre aplica\iile stivelor men\ion[m: evaluarea expresiilor aritmetice ]i
logice, implementarea procedurilor prin salvarea @n stiv[ a adresei de retur,
212
stive,
politic[
ce
poate
fi
descris[
succint
prin
urm[toarea
formul[ metaforic[: ''ultimul intrat, primul ie]it'', stivele se mai numesc ]i liste
LIFO (Last In, First Out). Opera\iile asupra obiectelor de tip stiv[ sunt cele
prezentate @n cadrul listelor.
5.5.2 REPREZENTAREA STIVELOR UTILIZ~ND ALOCAREA
SECVEN|IAL{
Alocarea secven\ial[ este foarte convenabil[ pentru implementarea
stivelor. O stiv[ va fi reprezentat[ printr-un tablou de pointeri la elementele
depuse, @mpreun[ cu o variabil[ @ntreag[ care ne indic[ pozi\ia din v[rful
stivei.
Opera\iile cu stive sunt urm[toarele:
crearea unei stive vide. Aceast[ opera\ie realizeaz[ crearea unei stive vide.
#n cazul aloc[rii secven\iale crearea propriu-zis[ a stivei (alocarea de
memorie pentru varful stivei ]i elemente) se realizeaz[ la compilare,opera\ia
realiz'[nd doar ini\ializarea stivei
testarea dac[ stiva este vid[. Aceast[ opera\ie testeaz[ dac[ stiva nu con\ine
nici un element
depunerea unui element @n stiv[. Aceast[ opera\ie depune un element @n
stiv[. @n cazul aloc[rii secven\iale opera\ia reu]e]te doar dac[ stiva nu era
deja plin[
extragerea unui element din stiv[. Aceast[ opera\ie cite]te ]i extrage un
element din v`rful stivei. Opera\ia reu]e]te dac[ stiva nu este vid[
213
5.6 COZI
5.6.1 NO|IUNI INTRODUCTIVE
Ori de c`te ori trebuie sincronizate un proces produc[tor de date ]i un
proces consumator de date, ce opereaz[ la rate diferite ]i nu neap[rat constante,
se va folosi o structur[ de tip coad[. La generarea unei date noi nu
exist[ certitudinea c[ ea va fi prelucrat[ imediat de consumator ]i atunci c`nd
trebuie prelucrat[ o dat[ nou[ nu exist[ certitudinea c[ ea a fost generat[ de
produc[tor. Din aceste motive, datele generate de produc[tor vor fi stocate @ntro coad[, de unde sunt extrase pentru a fi prelucrate de c[tre consumator,
p[str`ndu-se ordinea @n care au fost generate. Un exemplu concret este un
sistem de automatizare a v`nz[rilor unei re\ele de magazine. Fiecare cump[r[tor
@]i introduce comanda de la un terminal ]i dac[ produsele cerute sunt
disponibile @n stoc, el va fi servit ulterior de personalul re\elei respective de
magazine. Procesul produc[tor este reprezentat de comenzile introduse de
cump[r[tori ]i procesul consumator este reprezentat de serviciile oferite de
personalul re\elei de magazine. Pentru a nu se pierde, cererile poten\ialilor
cump[r[tori vor fi memorate @ntr-o coad[.
Formal, o coad[ este o list[ liniar[ @n care inser[rile se fac la un cap[t
numit spatele cozii, iar ]tergerile se fac de la cel[lalt cap[t numit fa\a cozii.
Datorit[ politicii de acces la elementele unei cozi, politic[ ce poate fi
descris[ succint prin urm[toarea formul[ metaforic[: ''primul intrat, primul ie]it'',
cozile se mai numesc ]i liste FIFO (First In, First Out).
5.6.2 REPREZENTAREA COZILOR UTILIZ~ND ALOCAREA
214
SECVEN|IAL{
Cozile se reprezint[ eficient folosind alocarea secven\ial[. O coad[ va fi
reprezentat[
printr-un
tablou
de
pointeri
la
elementele
componente
fa\[
lucru
5.7 ARBORI
Listele sunt potrivite pentru reprezentarea datelor organizate liniar.
Dac[ @ns[ dorim s[ descriem date structurate ierarhic, simpla enumerare a
obiectelor componente cu ajutorul unor liste este insuficient[. Organizarea
datelor sub form[ ierarhic[ este frecvent @nt`lnit[ @n cele mai diverse domenii
aplicative. C`teva exemple sunt: organizarea administrativ[ sau managerial[ a
unei societ[\i, planificarea meciurilor unei competi\ii sportive de tip turneu,
structurarea unei c[r\i sau a directorului de fi]iere dintr-un sistem de operare,
reprezentarea expresiilor aritmetice ]i logice @ntr-un compilator, @n vederea
evalu[rii lor. Generaliz`nd, orice entitate poate fi descris[ la un nivel abstract
216
printr-un obiect primitiv sau la un nivel detaliat sub forma unei ierarhii de
obiecte componente.
Figurile 5.9 ]i 5.10 ilustreaz[ reprezentarea unei expresii aritmetice printr-un
arbore sintactic
comerciale.
societate
directia
1
sectia A
atelier 1
...
...
directia
2
sectia B
atelier 4
echipa 1
...
...
echipa 2
217
membru
...
membru
directia
3
...
A
E
I
B
F
C
G
D
H
A
B
E
A
B
I
E
I
F
C
G
D
H
(A(B(E(I))(F))(C(G))(D(H))
A
E B
I
219
st`ng sau drept vid ]i, @n plus, un arbore binar poate s[ fie vid. Un exemplu de
arbore binar este prezentat @n figura 5.12. Puterea de reprezentare a arborilor
binari este aceea]i cu cea a unei p[duri.
5.7.1 PARCURGEREA ARBORILOR
Prelucrarea informa\iilor dintr-un arbore implic[ parcurgerea arborelui.
Se nume]te parcurgere o metod[ de examinare sistematic[ a nodurilor unui
arbore astfel @nc`t fiecare nod s[ fie vizitat exact o singur[ dat[. Parcurgerea
arborilor ne ofer[ o aranjare liniar[ a nodurilor, astfel @nc`t @n orice moment
vom ]ti precis care este urm[torul nod care va fi vizitat ]i prelucrat.
S[ consider[m arborele referitor la organizarea unei societ[\i. Vom presupune
c[
fiecare
nod
neterminal
con\ine
numele
persoanei
care
conduce
s[i,
iar
la
parcurgerea
@n
postordine
r[d[cina
este
225
4
8
5
9
10
6
11
12
7
13
14
15
2h-1 al tabloului
226
4
5
5.8 FI}IERE
5.8.1 NO|IUNI INTRODUCTIVE
Dup[ cum s-a men\ionat @n capitolele precedente, un fi]ier reprezint[ o
colec\ie de date memorate pe un suport extern de memorie (dischet[, hard-disc,
CD, etc.). Un fi]ier poate fi considerat ca o mul\ime de date omogene din punct
de vedere al semnifica\iei lor ]i al cerin\elor de prelucrare. Aceast[ mul\ime de
date este organizat[ ca o list[ liniar[, cu elemente structurate arborescent.
Gruparea datelor ce formeaz[ un fi]ier se face @n @nregistr[ri ]i este
determinat[ at`t de necesit[\ile de prelucrare ]i reprezentare a datelor pe
suporturile fizice, c`t ]i de caracterul repetitiv al tipurilor de informa\ie
con\inute @n fi]ier. Unit[\ile de informa\ie con\inute de o @nregistrare se
numesc c`mpurile @nregistr[rii. Pentru exemplificare, se consider[ c[ datele
referitoare la angaja\ii unei @ntreprinderi se memoreaz[ @ntr-un fi]ier. Fiecare
228
229
Esen\a
accesului
secven\ial
este
c[
@n
orice
moment
232