Manipulând fișiere externe

Matricile nu sunt adecvate pentru depozitarea pe termen lung, la sfârșitul programului de lucru al datelor este pierdut. Uneori, rezultatele calculelor pe care doriți să salvați pentru referințe ulterioare. Se folosește fișierele.







Fișierul este o colecție de date similare, care au un nume și se află în memoria calculatorului (intern sau Fortran RAM).

Fișierul conține înregistrări. Record - este o unitate de schimb între program și memoria externă.

Datele de intrare și de ieșire pot fi plasate în fișierele de program.

Numărul de componente din fișierul nu este specificat în prealabil. Volumul de informații stocate în mediul de memorie extern este capacitate limitată

scrie componente pointer sau fișier la sfârșitul fișierului

Acțiuni cu fișiere constau în citire și scriere. În orice moment, programul este doar un element al fișierului indicat de către fișierul curent indicatorul (pointerul). Acesta definește locația în fișierul în care (unde) se citește date (scriere). Pointerul fișier poate fi localizat la punctul de plecare (înainte de prima înregistrare) pentru înregistrarea curent la punctul final (după ultima intrare - „sfârșitul fișierului“)

În Fortran, există două tipuri de fișiere: externe și interne.

fișier intern - aceasta este o zonă de memorie, specificat variabila de caractere. Acesta este stocat (nu numai) în memoria RAM și este deschis în mod implicit. Scrierea de date în fișierul intern este mult mai rapid decât un fișier extern. Fișierele interne sunt utilizate pentru a transforma datele de la un tip caracter (alt). Acestea sunt deschise în mod implicit. Fișierele interne sunt doar metode de acces secvențial. Aparatul este un șir de nume de fișier intern. Aceasta este o variabilă de caractere (fișierul conține o înregistrare a cărei mărime coincide cu dimensiunea variabilei), un element al unui tablou de caractere sau simboluri matrice (un astfel de fișier este o secvență de elemente, fiecare dintre acestea fiind o evidență a numărului de intrări egal cu numărul de elemente de matrice)

Print *, st. pe ecran: _____ 23.50000

fișier extern - un fișier care este stocat pe disc (secvența de intrări pe transportatorului), sau periferice (tastatura, ecran).

Pentru a lucra cu un fișier extern, acesta trebuie să fie deschis (conectat la dispozitivul I / O). Când deschideți și să creați indicatorul fișier este setat la începutul fișierului. Citirea și scrierea datelor din dosar va determina în mod automat mișcarea cursorului, adică, mută cursorul la începutul înregistrării următoare. Atunci când datele sunt scrise după ultima componentă se pune capăt de fișier.

Pentru a determina sfârșitul fișierului folosind EOF funcția logică. care returnează .TRUE. în cazul în care fișierul a ajuns la final și .FALSE. în caz contrar.

După terminarea lucrului cu el este necesar pentru a închide fișierul.

Cu referire FORTRAN la fișierele de date are loc printr-un canal (sau dispozitiv). Acesta este un concept logic, și anume, dispozitiv de canal nu este în sensul obișnuit, dar imaginar. Înainte de efectuarea de intrare / ieșire necesare pentru a stabili conexiunea între fișierul fizic și un dispozitiv, adică, atașați un fișier la dispozitivul (canal). identificatorul Ustroystvooboznachaetsya și este - un asterisc * sau întreg expresie scalar. Pentru fișier extern - este un număr de 1-32767 (2_147_483_640). Valoarea maximă a numărului dispozitivului depinde de implementarea particulară.

Fiecare fișier corespunde unui dispozitiv logic. Un dispozitiv fizic poate corespunde diferitelor dispozitive logice.

Pentru dispozitivele I / O pot fi cuplate dispozitive fizice standard (tastatură și ecran). Ecranul și tastatura Fortran oferă feed-uri de la anumite numere. În programe Fortran există identificatori de dispozitiv *, 0, 5, 6. Și implicit la dispozitivele *, 0, 5 tastatură atașată, și la dispozitive *, 0, 6 - ecran.

Toți operatorii de acest lucru - display.

Aceste dispozitive sunt deconectate automat după terminarea programului. Aceste dispozitive pot fi atașate la orice fișier.

Fiecare fișier extern are un nume. Acesta trebuie să respecte regulile convenției de denumire a sistemului de operare: „c \ utilizatori \ A123 \ f1.txt“ - o specificație pentru un fișier extern, sau dacă dispozitivul - rezervat numele, cum ar fi con, PRN.

Fișierul extern este atașat la un dispozitiv I / O, ca urmare a executării OPEN. Acum, accesul la dosar extern este efectuat de numărul de dispozitiv, la care este atașat.

OPEN (unitate = 2, file = 'c \ utilizatori \ A133 \ f1.txt')

Dispozitivul nu poate fi atașat la mai mult de un fișier și vice-versa.

Fișierul conține înregistrări. Cuvântul „record“ este definit ca „înregistrare logică“. Apel unitate de înregistrare a schimbului de date între program și memoria externă.







două numere întregi pot fi scrise în fișiere diferite moduri:

Toate intrările au același tip de fișier.

În Fortran, următoarele tipuri de înregistrări (în funcție de prezentarea datelor):

formatate - acestea constau dintr-un tabel de cod de simboluri. Atunci când datele de intrare este convertită din exterior reprezentare (simbolic) - la o reprezentare internă și pentru obținerea - din intern la extern;

neformatatã (neformatat), care conțin datele într-o reprezentare internă a mașinii, sunt utilizate în principal pentru stocarea rezultatelor intermediare în calcule.

Vizualizați înregistrările specificate în clauza (acum într-o declarație) openspetsifikatoramiform = „formated“ sau formă = „unformated“

Sfârșitul de înregistrare“a fișierului„nu conține date și este setat automat după ultima înregistrare fișier.

Fișierele externe se disting:

conform metodei de acces la date;

în structura (în funcție de reprezentarea datelor;)

Conform metodei de acces (metoda de acces) la date:

Metoda de acces determină ordinea în care să proceseze fișierul.

Metoda de acces secvențială implică date secvențial de citire pentru a găsi dorit. În fișierele de acces secvențiale numai date noi se adaugă la dosar. Fișierele secvențiale neformatat nu pot fi editate direct. Intrările din fișier secvențial pot avea lungimi diferite. Pentru a edita o intrare în fișierul secvențial este posibilă numai în acest fel: citește toate intrările în matrice, face schimbarea și să scrie o matrice într-un fișier sau folosit pentru a edita fișierul auxiliar temporar, efectuați modificările necesare în ea, și apoi suprascrie conținutul fișierului temporar cu originalul. La sfârșitul fișierului temporar este șters automat.

În funcție de fișiere de reprezentare a datelor pot fi exterioare (diferă în structură):

Datele din fișierele binare sunt stocate în reprezentarea binară. Aceste fișiere - nu tipic pentru Fortran (nu este acceptat în toate versiunile), și nu vom lua în considerare.

Astfel, Fortran suportă două metode de acces, și trei modele (formatate, binar neformatatã). Prin urmare, în Fortran, există 6 tipuri de fișiere. Vom lua în considerare numai fișierele comune:

Format secvențial (text);

De obicei, în program, atunci când I / O organizație presupune următoarea ordine a operatorilor:

În primul rând, operatorul deschide fișierul deschis (atașat la aparat, și proprietățile sale sunt definite). În continuare, acțiunile efectuate pe transfer de date (citire, scriere). După sfârșitul fișierului, acesta este deconectat de la dispozitivul (închiderea fișierului - închidere).

Când selectați tipul de fișier este necesar să se țină seama de circumstanțele enumerate mai jos. Dacă aveți nevoie de o inspecție vizuală a datelor, ar trebui să utilizați fișiere în format. Dar, în textul de fișiere poate fi o eroare de rotunjire. Fișierele Unformatted sunt mai mici în dimensiuni, în comparație cu fișiere de text. Neformatata transfer de fișiere de date este mai rapid, deoarece nu este necesară o conversie de date.

Înainte de a efectua o operațiune de fișier trebuie să fie cuplat (conectat) cu dispozitivul logic. Cu alte cuvinte, fișierul trebuie să fie deschis. Această declarație se deschide fișierul și indicatorul fișier este setat la prima înregistrare.

[, Form =<способ представления данных>]

[, = Reci<целочисленное выражение>]

Specificatorii pot apărea în orice ordine. În cazul în care unitatea este primul, puteți specifica doar numărul, unitatea de coborâre. Metoda de acces poate fi setat la: acces = „secvențial“ - acces secvențial, acces = „direct“ - acces acces direct = „append“ - aplicabil pentru operarea cu acces secvențial, deschis pentru a adăuga fișiere. Form = „formatat“ sau „neformatatã“ definește o modalitate de prezentare a datelor.

În cazul în care nu este specificată metoda de acces, fișierul este considerat implicit dostupaformatnym consecvent.

Metoda de acces implicit Pripryamom este considerat fișier non-format.

Deschideți (20, file = 'text.dat') - formatat fișier de acces secvențial.

numele Dosar- fișierului (specificație fișier), care poate fi setat constant caracter sau de tip în variabila de caractere. Dacă această opțiune este omisă, fișierul extern este considerat ca temporar, iar numele acestui fișier este dat o valoare implicită.

variabilă număr întreg Iostat-, care este 0 dacă nu există nici o eroare, și are o valoare pozitivă, în cazul în care orice parte a erorii operatorului, și un număr negativ, dacă a apărut o eroare.

ERR - operatorii de etichete, care controlul este transferat în cazul în care a apărut o eroare în timpul executării declarației.

Recl- folosite numai pentru a avea acces direct fișierele (în octeți dimensiunea de înregistrare).

Status- indică starea: nou (nou), existente (vechi). temporară (zero), salvați (păstrați sau de a salva), eliminați (șterge).

Fișierele temporare sunt întotdeauna starea fișier valid șterge, cât și pentru ceilalți salvați (după închiderea fișierului, acesta este salvat).

Atunci când creați un fișier de spectacol Stare = „new“, cu toate că, în mod implicit în cazul în care nu există nici un fișier, se deschide cu această valoare.

Toți operatorii de intrare / ieșire, cu excepția operatorilor de intrare / ieșire cu un dispozitiv de sistem standard (*, 5, 6) poate cuprinde informații de control care reprezintă o listă specificator.

Citește operatorul

Acest operator este utilizat pentru a citi datele dintr-un fișier, dispozitiv conectat la unitatea =<номер устройства> specificate în lista de intrare variabile. Vedere generală a operatorului:

[, FMT =<способ представления данных>]

Unitate Specificatorii =<номер устройства>,fișier =<имя файла> discutat anterior.

Specificator Fmt- format, care poate fi setat, sau format de etichetă, sau expresie caracter specificând formatul. * În cazul în care există, înseamnă a pune un control listă (numai pentru fișiere text, acces secvențial) format în loc. Acest Specificator este indicat numai pentru înregistrările formatate. Curiozități pentru acest fișier Specificator trebuie să fie omise.

operator de etichetă End-, care controlul este transferat atunci când înregistrarea „sfârșitul fișierului“.

Declarație Err- etichetă care primește un control în cazul în care a apărut o eroare I / O.

variabilă număr întreg Iostat-, care este 0 dacă nu există nici o eroare, și are o valoare pozitivă, în cazul în care orice parte a erorii operatorului, și un număr negativ în cazul în care situația a apărut cai de fișiere.

expresie intreaga recalculat, dar este folosit pentru a accesa direct fișiere și determină numărul de înregistrări care pot fi citite.

Citește (20, *) x - citește în format liber (sub lista de control) al acestui fișier, care este conectat printr-un canal 20. în variabila x.