Sunteți pe pagina 1din 13

?? ?

Simularea organizrii relative a fiierelor n C

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, relativ al articolului n iar 1 identific articole valide

Organizarea relativ
Cheie relativ numrul

fiier
rezult spaii libere i spaii ocupate n fiier distincia se face prin includerea unui cmp Spaiu liber suplimentar n structura articolului: indicator de stare Structura logic a articolului IS
0 1 2 3 4 5 6 7 8 9 Structura fizic a articolului 10 11 12 13 14

Nu este implementat n limbajul C/C++ Articol valid toate operaiile necesare trebuie incluse explicit n algoritmi

Simularea organizrii relative a fiierelor n C

Numr relativ articol Cheie


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,

Translaie

domeniul cheilor domeniul numerelor relative


nr. relativ = valoare cheie valoare nceput domeniu

Simularea organizrii relative a fiierelor n C

Probleme de rezolvat
Crearea fiierului cu populare/adugare de

articole noi Cutarea n fiier (articol unic sau set de articole) Modificarea datelor (un articol sau mai multe) tergerea articolelor din fiier

Simularea organizrii relative a fiierelor n C Creare Calcul nr. articole fiier , cu Reine poziia curent poz populare
Start Nume fiier Deschidere fiier

Ce se modific dac vrem s Calcul nr. articole nr -un fiier Preformare adugm articole ntr nr<=n Nr. articole nra existent?
Da Nu Da

Poziionare la Preformare fiier sfritul fiierului Pregtire Nr. rel. art. nou n fiier Determin poziia curent p Adugare Calcul nr. articole articol nr = p / dim. articol Revenire la poziia poz Stop
!feof(stdin)
Nu

x.is = 0 Mod de deschidere specific (rb+)


Poziionare pe i =art. 0 cu nr. n Citire art. x x.is == 0

Extindere fiier

Nu mai este necesar preformarea Da


Nu

i < nra
Nu

nchidere fiier

Mesaj eroare Cod duplicat

Scrie art. Cmpurile articolului x n fiier


1 15 x.is = 16

Da

17 17

4 Stop

Stop

i = i+1

Scrie art. x n fiier la poz. n

10

Nr. rel. art. nou n

11

12

13

14

Simularea organizrii relative a fiierelor n C


Prelucrare articol nr <= n unic, Nu identificat dup cheia relativ Verificare articol (cutare, modificare, tergere etc.)

Start
Da

Deschidere rb+ Calcul nr. articole nr Verificare cheie (domeniu valori) Verificare articol indicat de cheie Prelucrare articol

fiier Mesaj dePregtire eroare Cod eronat Cheie articol cutat n

Poziionare pe articolul cu numrul n !feof(stdin) Citire articol din fiier


Nu

Da

Prelucrare cheie n
Nu
Da

x.is == 1

Mesaj de eroare Cod eronat

nchidere Prelucrare fiier


articol

Cheie articol cutat n

Stop

Simularea organizrii relative a fiierelor n C


Start Nume fiier Deschidere fiier Calcul numr de articole nr Cheie articol cutat n
Nu

nr<=n

Da

Poziionare pe art. cu nr. n Citire articol x


Da Nu

Mesaj eroare Cod eronat

!feof(stdin)
Nu

x.is == 1

Da

Mesaj eroare Cod eronat

Prelucrare articol

nchidere fiier Stop Cheie articol cutat n

Simularea organizrii relative a fiierelor n C

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 0 => 1

Simularea organizrii relative a fiierelor n C


Vizualizare articol Confirmare modificare
Nu

Prelucrare articol (modificare)

Pentru cmpurile a cror modificare se dorete Citirea noilor valori se face n variabile separate, cu validare
Da

Se confirm?

Mesaj Modificare abandonat

Preluare valori noi Poziionare pe articolul cu numrul n Scrie articol n fiier

Renunare?

Simularea organizrii relative a fiierelor n C

Start Pregtire fiier Valoare cutat val !feof(stdin)


NU Da

Prelucrare set de articole, identificate dup o valoare comun

(cutare, modificare, tergere etc.)


Regsirea tuturor articolelor corespunztoare, n acces secvenial, i prelucrarea lor

Prelucrare val Valoare cutat val

Stop

Simularea organizrii relative a fiierelor n C


Poziionare la nceputul fi. Citire articol din fiier x !feof(f)
Da

Verificare articol valid

Verificare articol cutat

x.is == 1
Nu Nu NU

Da

x.cmp == val

Da

Prelucrare articol

Citire articol din fiier x

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

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