Sunteți pe pagina 1din 2

Anexa 3

I. Probleme care utilizeaz codificarea extern prin numere relative


Nomenclatorul de articole conine numrul relativ al fiecruia dintre ele.
Nomenclatorul este elaborat extern (automat sau neautomat). Orice operaie de regsire n acces relativ presupune
introducerea din exterior a numrului relativ.
La crearea iniial, fiecare articol este nscris la numrul su relativ predefinit. Asigurarea tergerii i adugrii
controlate poate fi fcut n diverse moduri:
A. Extinderea articolelor logice cu un indicator de stare (un octet), ajungndu-se la forma din figura 6.8.

Fig. 6.8. Structura articolului care include indicatorul de stare


Valori indicatorul de stare (notat IS)
- 0 pentru articol inactiv inexistent sau ters,
- 1 pentru articol prezent
Operaiile de acces la articole se realizeaz n urmtoarele condiii:
- scrierea n fiier este permis numai pentru articolele cu IS=0;
- citirea din fiier este permis numai pentru articolele cu IS=1.
Preformarea presupune:
- deschiderea fiierului ca nou (crearea unui fiier nou)
- i scrierea unui numr de articole (la limit, zero) cu IS=0.
Includerea operaiei de preformare conduce la dispariia distinciei dintre populare i adugare. Datorit faptului c
fiierul se deschide ca existent, orice operaie de scriere a unui nou articol se trateaz ca adugare.
Scrierea n acces direct presupune furnizarea numrului relativ (nr) al articolului. n funcie de valoarea lui nr
se disting urmtoarele situaii:
- dac nr<dimensiune fiier, se citete articolul respectiv din fiier i adugarea este permis numai dac
IS=0;
- dac nr>=FileSize(f), are loc extinderea fiierului cu preformarea articolelor cu numerele relative cuprinse n
domeniul dimensiune fiier..nr-1. Noul articol se scrie pe poziia nr.
Se remarc faptul c scrierea n acces direct permite preformarea iniial cu zero articole.
Scrierea n acces secvenial se face fr verificare de existen. Scrierea are loc n poziia dat de pointerul
curent. Procedura face IS=1. Utilizarea ei se recomand numai la popularea dens.
Citirea n acces direct presupune furnizarea numrului relativ (nr). Ea verific dac IS=1.
Citirea n acces secvenial analizeaz articolele ncepnd cu cel de la pointerul curent. Articolele cu IS=0 snt
ignorate, pn la ntlnirea primului articol cu IS=1 sau pn se ajunge la sfrit de fiier.
tergerea se realizeaz n acces direct. Ea presupune citirea articolului i dac tergerea este permis (IS=1),
se modific indicatorul de stare (IS=0) i se scrie articolul pe vechiul loc.
Rescrierea realizeaz scrierea unui articol n poziia ftell(f)-sizeof(tip_articol), dac vechiul articol din
aceast poziie are IS=1.
II. Probleme care utilizeaz codificarea intern prin numere relative
nscrierea articolelor n fiiere, chiar cea iniial, se face n primele articole inactive, asociindu-se astfel intern
un numr relativ fiecrui articol.
Deosebirea esenial ntre aceast soluie i cea prezentat anterior, const n modul de realizare a adugrii
secveniale. Dup fiecare sesiune de actualizare va trebui listat nomenclatorul de coduri interne (numere relative).
Articolelor din fiier li se asociaz structura din figura 6.8. Preformarea, consultarea, modificarea i tergerea snt
similare celor prezentate n 2.5.3.1. Adugarea unui articol se realizeaz n condiii diferite, dup cum aceast

operaie are loc printre articolele existente, respectiv dup ultimul articol (extindere). n ambele situaii, condiiile de
realizare snt determinate de modul de acces folosit: secvenial sau direct.
B.Adugarea n acces direct presupune o codificare anterioar (preluarea numrului relativ din nomenclatorul editat
dup fiecare creare/ adugare secvenial) i se realizeaz identic cu operaia de scriere direct prezentat n 2.5.3.1.

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