Lucrul cu fișierele tipizate fără pascal

Amintiți-vă că un fișier tipărit constă din porțiuni de date, tipul cărora a fost declarat atunci când descrie variabila corespunzătoare fișierului. Ca o astfel de porțiune pot fi valorile variabilelor scalare de orice tip, rânduri, conținutul câmpurilor înregistrate. Aceasta înseamnă că toate variabilele din lista de intrări din instrucțiunea citită și toate expresiile din lista de instrucțiuni de scriere trebuie să fie de același tip.







Care este diferența fundamentală dintre schimbul de date cu un text și un fișier tipărit?

Atunci când se scriu informații numerice într-un fișier text, valorile datelor sunt mai întâi traduse din formatul mașinii într-o reprezentare de caractere, lungimea căreia este o variabilă. De regulă, dimensiunea reprezentării simbolice a unui număr este substanțial mai mare decât lungimea sa în formatul mașinii. De exemplu, o valoare de un singur octet în forma simbolică se poate "întinde" cu 4 octeți. Șirul de date atunci când scrieți la un fișier text reduce lungimea sa cu numai un octet (lungime octet). Prin urmare, ieșirea într-un fișier text este de obicei asociată cu costuri suplimentare de timp pentru traducerea datelor numerice și cu o creștere a volumului de memorie externă ocupată. Când citiți date dintr-un fișier text, există din nou o lucrare suplimentară pentru a converti valorile numerice în formatul mașinii și pentru a genera un octet de lungime pentru variabilele de tip șir.

Schimbul cu fișierele tipizate este lipsit de ambele dezavantaje - datele sunt scrise în fișier în același format pe care sunt stocate în memoria RAM. Prin urmare, din punctul de vedere al creșterii performanței programului și al economisirii spațiului pe medii externe, este mai profitabil să lucrați cu fișierele tipizate. Se pare că utilizarea fișierelor text este justificată în acele sarcini în care trebuie doar să procesați date de șir. De fapt, acest lucru nu este în întregime adevărat. Faptul este că conținutul unui fișier text, care include atât text, cât și text, este un mod universal de prezentare a datelor. Ele pot fi citite de o persoană, pot fi transferate către alte sisteme informatice care utilizează alte interne

formate pentru stocarea informațiilor numerice și simbolice. Dar dacă fișierul este utilizat numai pentru stocarea temporară a datelor care vor fi utilizate în viitorul apropiat pe același computer și în același sistem de programare, ar trebui să se acorde preferință fișierelor tipizate.

Un alt avantaj al fișierelor tipizate trebuie notat.







comparativ cu fișierele text. Deoarece toate intrările din fișierul tipizat au o lungime egală, este posibilă nu numai schimbul consecutiv, ci și selectarea înregistrării dorite. Intrările într-un astfel de fișier sunt numerotate de la 0. După deschiderea fișierului, înregistrarea inițială devine disponibilă. Pentru a vă deplasa la începutul unei înregistrări cu numărul n_REC, utilizați procedura de căutare:

Funcția FilePos vă permite să stabiliți numărul înregistrării disponibile în prezent:

Folosind funcția FileSize, puteți afla numărul de înregistrări dintr-un fișier:

Programul rec_file demonstrează mai întâi posibilitatea de ieșire secvențială la un fișier introdus, apoi citește intrările în ordine inversă (a se vedea Listing 10.4).

Listarea 1 0 .4. Programul rec_file

program rec_file; tip

s: șir [5]; b: byte;

Un fișier de acces direct care este deschis pentru citire. Acesta permite nu numai efectuarea operațiilor de citire în timpul procesării. dar și înregistrări. Exemplul prezentat în Lista 10.5 este, de asemenea, interesant deoarece conținutul aceluiași fișier poate fi considerat atât ca un set de șiruri, cât și ca fișier tipărit cu intrări de un octet. În programul txt_rec, mai întâi se formează conținutul unui fișier text care conține un număr aleator de linii (k este numărul de rânduri). Fiecare rând conține un set aleatoriu de caractere afișate din prima jumătate a tabelului

ASCII (cu coduri de la 32 la 127). Numărul de caractere din șir este de la 1 la 40 (j este lungimea șirului). Fiecare linie scrisă în fișier este duplicată pe ecran. Apoi fișierul text este închis și redeschis, dar deja ca fișier de acces direct. Următorul caracter citit din fișier este convertit utilizând funcția LowerCase. În acest caz, toate caracterele care nu aparțin intervalului [a..z], inclusiv octetul de control, finisare fiecare rând, sohranya- sunt neschimbate (cu excepția ei nu au putut fi supuse transformării INJ). Personajul modificat în acest fel este scris într-un fișier deschis pentru citire. După terminarea conversiei fișierul modificat este deschis pentru spate ca un text și conținutul său sunt afișate pe ecran pentru comparație cu setul original de date.

Listing 1 0 .5. Programul txt_rec

program txt_rec; var

fc: fișier de char; s: șir;

ch: char; i, j, k: întreg;

randomiza; atribuiți (ft, '1.txt'); rescrie (ft); k: = aleatoare (10) +1;

// Creați un fișier text cu un set aleatoriu de caractere pentru i: = 1 până la k

pentru j: = 1 la întâmplare (40) +1

s: = s + chr (aleatoriu (95) +32); // formarea unui șir șir aleatoriu (ft, s); // scrieți șirul sursă la fișierul writeln (s); // scoateți șirul original pe ecran

writeln; // spațiul dintre sursă

// și setul de date modificat (fc, '1.txt');

resetați (fc); // deschideți fișierul pentru citire ca tastat în timp ce nu face EOF (fc)

citiți (fc, ch); // citiți din fișier următorul caracter ch: = LowerCase (ch); // înlocuiți litera mare a căutării mici (fc, FilePos (fc) -1); // reveniți la o înregistrare de scriere (fc, ch); // scrieți-l într-un fișier

// Afișați conținutul fișierului recodificat

pentru i: = 1 până la k începe

se încheie; închide (ft); readln;

Rezultatul uneia dintre runde de testare este următorul:

Executarea "c: \ fp_prog \ 10 \ 05 \ txt_rec.exe" Wq! M5> oeT

% Ry.6nlR2Mr-Z`Y # \ 7K_m \ QtqU`> SM1: h6xm „; elu >> Q8 | n] U9Iq # puwj @ HBjm !?

zy> sc% jb / jk1: dvga_gn: m] kr (r ^] mjb% lku [3 xd6l1qa2o6l +? sh

% Ry.6nlr2mr-z`y # \ 7k_m \ qtqu`> SM1: h6xm „; elu >> Q8 | n] u9iq # puwj @ hbjm !?







Articole similare

Trimiteți-le prietenilor: