Sunteți pe pagina 1din 13

Simularea organizrii relative

a fiierelor n C
?
?
?
?
Organizarea relativ
Cheie relativ numrul relativ al articolului n
fiier
rezult spaii libere i spaii ocupate n fiier
distincia se face prin includerea unui cmp
suplimentar n structura articolului: indicator de stare


Nu este implementat n limbajul C/C++
toate operaiile necesare trebuie incluse explicit n
algoritmi
Simularea organizrii relative
a fiierelor n C
Indicatorul de stare e un cmp care
poate lua 2 valori distincte (uzual
0/1), unde 0 identific spaii libere,
iar 1 identific articole valide
Structura fizic a articolului
Structura logic a articolului IS
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Spaiu liber
Articol valid
Numr relativ articol Cheie





Translaie
domeniul cheilor domeniul numerelor relative
nr. relativ = valoare cheie valoare nceput domeniu
Simularea organizrii relative
a fiierelor n C
Domeniu de valori:
0, 1, 2,
Domeniu de valori:
1001, 1002, 1003, 1004,
1, 2, 3, 4,
-20, -19, -18, -17,
50, 51, 52, 53,
Probleme de rezolvat
Crearea fiierului cu populare/adugare de
articole noi
Cutarea n fiier (articol unic sau set de articole)
acces direct / secvenial
Modificarea datelor (un articol sau mai multe)
acces direct / secvenial
tergerea articolelor din fiier
acces direct / secvenial
Simularea organizrii relative
a fiierelor n C
Simularea organizrii relative
a fiierelor n C
Creare
fiier, cu
populare
Start
Deschidere fiier
Nume fiier
Preformare fiier
Nr. rel. art. nou n
!feof(stdin)
Da
nchidere
fiier
Stop
Nu
Calcul nr. articole nr
nr<=n Da
Extindere fiier
Poziionare pe
art. cu nr. n
Nu
Citire art. x
x.is == 0 Da Nu
Mesaj eroare
Cod duplicat
Cmpurile
articolului
x.is = 1
Scrie art. x n
fiier la poz. n
Nr. rel. art. nou n
Calcul nr. articole
Stop
Poziionare la
sfritul fiierului
Determin
poziia curent p
Calcul nr. articole
nr = p / dim. articol
Reine poziia
curent poz
Revenire la
poziia poz
Preformare
Stop
Nu
Nr. articole nra
x.is = 0
i = 0
i < nra
Scrie art.
x n fiier
Da
i = i+1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
17
15 16 17
7
4
Pregtire
fiier
Adugare
articol
Ce se modific dac vrem s
adugm articole ntr-un fiier
existent?
Mod de deschidere specific (rb+)
Nu mai este necesar preformarea
Simularea organizrii relative
a fiierelor n C
Start
Pregtire fiier
Cheie articol
cutat n
!feof(stdin)
nchidere fiier
Stop
Nu
Prelucrare cheie n
Da
Cheie articol
cutat n
Prelucrare articol
unic, identificat
dup cheia relativ
(cutare,
modificare,
tergere etc.)
Deschidere rb+
Calcul nr. articole nr
Verificare cheie (domeniu valori)
Verificare articol indicat de cheie
Prelucrare articol
nr <= n
Da Nu
Mesaj de eroare
Cod eronat
Verificare articol
x.is == 1 Da Nu
Mesaj de eroare
Cod eronat
Prelucrare
articol
Citire articol din
fiier
Poziionare pe
articolul cu numrul n
Simularea organizrii relative
a fiierelor n C
Start
Deschidere fiier
Nume fiier
Calcul numr de
articole nr
Cheie articol
cutat n
!feof(stdin)
nchidere
fiier
Stop
Nu
nr<=n Da
Poziionare pe
art. cu nr. n
Nu
Citire
articol x
x.is == 1 Da Nu
Mesaj eroare
Cod eronat
Cheie articol
cutat n
Mesaj eroare
Cod eronat
Prelucrare
articol
Da
Cutare
Vizualizare articol gsit (ecran / fiier text)
Modificare
Vizualizare articol (partea semnificativ)
Confirmare (diverse metode)
Introducere valori noi
Rescriere articol, pe vechea lui poziie n fiier
tergere
Modificarea cmpului indicator de stare 1 => 0
Simularea organizrii relative
a fiierelor n C
Simularea organizrii relative
a fiierelor n C
Prelucrare articol
(modificare)
Se confirm?
Da Nu
Mesaj Modificare
abandonat
Preluare valori
noi
Vizualizare
articol
Confirmare
modificare
Poziionare pe
articolul cu numrul n
Scrie articol n
fiier
Pentru cmpurile a cror
modificare se dorete
Citirea noilor valori
se face n variabile
separate, cu validare
Renunare?
Simularea organizrii relative
a fiierelor n C
Start
Stop
NU
Valoare cutat
val
!feof(stdin)
Da
Pregtire fiier
Valoare
cutat val
Prelucrare val
Prelucrare set de articole, identificate
dup o valoare comun
(cutare, modificare, tergere etc.)
Regsirea tuturor articolelor
corespunztoare, n acces
secvenial, i prelucrarea lor
Poziionare la
nceputul fi.
Citire articol
din fiier x
!feof(f)
NU
x.is == 1
Da
x.cmp == val
Da
Da
Prelucrare
articol
Nu
Nu
Citire articol
din fiier x
Simularea organizrii relative
a fiierelor n C
Verificare articol
valid
Verificare articol
cutat
Simularea organizrii relative
a fiierelor n C
Teme
Alegei o tem potrivit organizrii relative
(structur articol, cheie relativ, operaii de
gestiune). Definii corespunztor operaiile de
gestiune.
Implementai toate operaiile necesare (creare
fiier cu populare, adugare articole, cutri,
modificri, tergere articole).

Simularea organizrii relative
a fiierelor n C