Turbo Pascal 7

Pentru orice program, sunt disponibile două fișiere pre-declarate cu variabile standard de fișier: INPUT - pentru a citi datele de la tastatură și OUTPUT - pentru a fi afișate. Standard Pascal cere menționarea obligatorie a acestor fișiere în antetul programului, de exemplu, după cum urmează: PROGRAM NameOfProgram (input, output); În Turbo Pascal, acest lucru nu este necesar, motiv pentru care titlul programului poate fi omis.






Orice alte fișiere, precum și dispozitivele logice devin disponibile programului numai după efectuarea unei proceduri speciale de deschidere a unui fișier (dispozitiv logic). Această procedură implică asocierea unei variabile de fișier declarate anterior cu numele unui fișier existent sau nou creat, precum și specificarea direcției de schimb de informații: citirea sau scrierea unui fișier.
Variabila de fișier este asociată cu numele fișierului ca urmare a accesării procedurii standard ASSIGN: ASSIGN (<ф.п.>, <имя файла или л.у.>); aici <ф.п.> - variabilă de fișier (identificatorul corect declarat în program ca variabilă a tipului de fișier);
<имя файла или л.у.> -- O expresie de text care conține un nume de fișier sau un dispozitiv logic. Dacă numele fișierului este specificat ca un șir gol, de exemplu, ASSIGN (f, ''). atunci în funcție de direcția schimbului de date, variabila fișierului este asociată cu un fișier INPUT sau OUTPUT standard.

Un nume de fișier este orice expresie de tip șir care este construită în conformitate cu regulile pentru definirea numelor în MS-DOS (sistem de operare PC):
  • numele conține până la opt caractere admise; caractere permise sunt majuscule și litere mici, numere și simboluri latine:
. @ # $% ^ () ' - _
  • numele începe cu orice caracter permis;
  • numele poate fi urmat de o extensie - o secvență de până la trei caractere admise; Extensia, dacă există, este separată de nume printr-un punct.
Înainte de a putea fi specificat numele așa-numitei căi spre fișier: numele discului și / sau numele directorului curent și numele directoarelor din nivelurile superioare.
Numele discului este unul dintre simbolurile lui A. Z. După care se pune un colon. Numele A: și B: se referă la unitățile de disc de pe dischete, C: numele. D: etc. - pe hard discuri. Aceste nume se pot referi, de asemenea, la unul sau mai multe discuri virtuale create în memoria RAM a PC-ului printr-o comandă specială VDISK în timpul executării fișierului autoflash CONFIG.SYS al sistemului de operare pe disc.
Dacă nu este specificat niciun nume de unitate, dispozitivul implicit este cel care a fost instalat în sistemul de operare înainte de începerea programului.
Numele unității poate fi specificat prin numele directorului care conține fișierul. Dacă numele directorului este precedat de o backslash, atunci calea spre fișier pornește din directorul rădăcină, dacă linia nu există - din directorul curent instalat în sistem implicit. Numele directorului poate fi urmat de unul sau mai multe nume de director de nivel inferior. Fiecare dintre ele trebuie să fie precedată de un backslash. Întreaga cale spre fișier este separată de numele fișierului printr-un backslash. Lungimea maximă a numelui împreună cu calea este de 79 de caractere, de exemplu: Dispozitive logice

Hardware-ul PC standard, cum ar fi o tastatură, un ecran de afișare, un aparat de imprimare (imprimantă) și canalele de comunicare de intrare-ieșire sunt definite în numele speciale Turbo Pascal, numite dispozitive logice. Toți aceștia din Turbo Pascal sunt considerați surse potențiale sau receptoare de informații textuale.
CON - un nume logic care definește consola - tastatura sau ecranul de afișare. Turbo Pascal face o distincție între aceste dispozitive fizice în direcția transferului de date: citirea datelor este posibilă numai de la tastatură și înregistrarea - numai pe ecran. Astfel, prin utilizarea dispozitivului logic CON este imposibil, de exemplu, citirea datelor de pe ecranul PC-ului, deși există o astfel de capacitate hardware.
Intrarea de pe tastatură este tamponată: caracterele sunt plasate într-un tampon de șir special, atât timp cât apăsați tastele care sunt transferate în program numai după ce apăsați tasta Enter. Tastarea buffering oferă posibilitatea de a edita șirul de intrare cu ajutorul instrumentelor standard DOS. La introducerea caracterelor, acestea sunt reluate pe ecranul PC-ului. În Turbo Pascal, puteți citi orice caracter de pe tastatură, inclusiv caracterul CR generat de tasta Enter. imediat după apăsarea tastei corespunzătoare fără a reîncerca ecou.
PRN este numele logic al imprimantei. Dacă sunt conectate mai multe imprimante la PC, ele sunt accesate de numele logic LPT1. LPT2 și LPT3. Numele PRN și LPT1 sunt inițial sinonime. Puteți atribui numele PRN oricărui alt dispozitiv logic capabil să primească informații.
Modulul standard de bibliotecă PRINTER. inclus în biblioteca TURBO.TPL. declară numele variabilei de fișier LST și o asociază cu dispozitivul logic LPT1. Acest lucru face posibilă utilizarea accesului simplu la imprimantă. De exemplu, programul imprimă fraza "Hello world!" La imprimantă și toate operațiile necesare pentru a deschide dispozitivul logic vor fi efectuate de unitatea de bibliotecă PRINTER.
AUX este numele logic al canalului de comunicații, care este folosit de obicei pentru a conecta calculatorul la alte mașini. Canalul de comunicații poate primi și transmite date, însă, în orice moment, programul poate atribui doar una din aceste funcții. De regulă, PC-ul are două canale de comunicare, care dau numele dispozitivelor logice COM1 și COM2. Inițial, numele AUX și COM1 sunt sinonime.
NUL este numele logic al dispozitivului "gol". Acest dispozitiv este folosit cel mai adesea în modul de depanare și este tratat ca un receptor-receptor de informații cu capacitate nelimitată. Atunci când accesați NUL ca sursă de informație, se emite sfârșitul fișierului EOF.
Legarea unui dispozitiv logic la o variabilă de fișier se realizează prin procedura ASSIGN. de exemplu: Turbo Pascal nu asociază niciodată numele dispozitivelor logice cu fișierele de disc, în acest sens aceste nume pot fi considerate rezervate. Cu alte cuvinte, nu puteți, de exemplu, accesa un fișier pe disc numit PRN. Întrucât Turbo Pascal interpretează întotdeauna o astfel de solicitare ca referință la imprimantă.







Inițiați un fișier înseamnă să specificați direcția transferului de date pentru acest fișier. În Turbo Pascal, puteți deschide un fișier pentru a citi, pentru a scrie informații, precum și pentru citire și scriere în același timp.
Pentru citire, fișierul este inițiat utilizând procedura RESET standard. RESET (<ф.п.>); aici <ф.п.> - variabila de fișier, asociată anterior cu procedura ASSIGN cu un fișier existent sau cu informații despre receptorul logic. În timpul acestei proceduri, un fișier de disc sau un dispozitiv logic este pregătit pentru citirea informațiilor. Ca rezultat, o variabilă de pointer special asociată cu acest fișier va indica începutul fișierului, adică la componenta cu numărul de serie 0.
Dacă se încearcă inițierea citirii dintr-un fișier inexistent sau dintr-un dispozitiv PRN logic. există o eroare de rulare care poate fi raportată programului printr-o valoare diferită de zero a funcției încorporate IORESULT de tipul WORD. De exemplu, următorul fragment de program vă permite să determinați dacă fișierul necesar există pe disc: în acest fragment, controlul automat al erorilor I / O este dezactivat utilizând directiva compilatorului. Dacă nu faceți acest lucru, lipsa fișierului va duce la terminarea anormală a programului.
În Turbo Pascal, este permisă accesarea fișierelor tipizate deschise prin procedura RESET (adică citirea informațiilor) folosind procedura WRITE (adică pentru a scrie informații). Această caracteristică facilitează actualizarea fișierelor tipărite create anterior și extinde-le, dacă este necesar. Pentru fișierele text deschise prin procedura RESET. Nu puteți folosi procedura WRITE sau WRITELN.
Procedura standard REWRITE (<ф.п.>) inițiază scrierea de informații într-un fișier sau într-un dispozitiv logic asociat anterior cu o variabilă de fișier <ф.п.>. Procedura pentru REWRITE nu poate iniția înregistrarea informațiilor într-un fișier disc existent anterior: atunci când se execută această procedură, fișierul vechi este distrus și niciun mesaj despre acesta nu este trimis în program. Se primește un fișier nou pentru primirea informațiilor, iar indicatorul său are valoarea 0.
Procedura standard APPEND (<ф.п.>) inițiază scrierea unui fișier text existent anterior pentru ao extinde, cu indicatorul de fișier setat la sfârșitul acestuia. Procedura APPEND se aplică numai fișierelor text, adică variabila fișierului lor trebuie să fie de tip TEXT (vezi mai sus). Procedura APPEND nu poate iniția scrierea într-un fișier tiparit sau unic. Dacă un fișier text a fost deja deschis cu RESET sau REWRITE. utilizând procedura APPEND va închide acest fișier și îl va deschide din nou, dar va adăuga deja intrări.

PROCEDURI ȘI FUNCȚII PENTRU LUCRĂRILE CU FIȘIERE

Următoarele descriu procedurile și funcțiile care pot fi utilizate cu fișiere de orice fel. Specificațiile de lucru cu fișierele tipărite, cu text și cu fișierele netumite sunt discutate în secțiunile următoare. Procedură ÎNCHIS. Închide fișierul, dar variabila fișierului este asociată cu numele fișierului care a fost setat anterior în procedura ASSIGN. este reținută. Formatul circulației: ÎNCHIS (<ф.п.>) Atunci când creați un fișier nou sau extindeți unul vechi, procedura asigură că toate fișierele noi sunt stocate în fișier și fișierul este înregistrat în director, funcțiile CLOSE procedură sunt efectuate automat cu privire la toate fișierele deschise atunci când programul se termină în mod normal. Deoarece fișierul este asociat cu variabila de fișier, fișierul poate fi redeschis fără utilizarea procedurii ASSIGN suplimentare. Procedura RENAME. Redenumesc fișierul. Formatul cererii: RENAME (<ф.п.>, <новое имя>) Aici <новое имя> -- O expresie de șir care conține noul nume de fișier. Înainte de a executa procedura, trebuie să închideți fișierul dacă a fost deschis anterior prin procedurile RESET. REWRITE sau APPEND. Procedura ERASE. Distruge fișierul. Formatul circulației: ERASE (<ф.п.>) Înainte de a executa procedura, trebuie să închideți fișierul dacă a fost deschis anterior prin procedurile RESET. REWRITE sau APPEND.
Următorul fragment de program arată cum puteți utiliza rutinele RENAME și CLOSE când lucrați cu fișiere. Să presupunem că doriți să editați un fișier al cărui nume conține variabila NAME. Înainte de editare, trebuie să vă asigurați că fișierul dorit se află pe disc și să îl redenumiți - înlocuiți extensia acestui fișier cu VAK (copie de rezervă). Dacă un fișier cu această extensie există deja, acesta trebuie șters. Notă: verificați existența fișierului. VAK în acest exemplu este necesar, deoarece redenumirea apelului (fi, name_bak); va produce o eroare dacă acest fișier există.
Procedură FLUSH. Șterge bufferul intern al fișierului și, astfel, garantează păstrarea tuturor ultimelor modificări ale fișierului de pe disc. Formatul circulației: FLUSH (<ф.п.>) Orice acces la fișierul din Turbo Pascal se face printr-un tampon, care este necesar pentru a reconcilia reprezentarea internă a componentei fișierului (înregistrarea) cu formatul de stocare a datelor în DOS-ul de pe disc. În timpul procedurii FLUSH, toate înregistrările noi vor fi de fapt scrise pe disc. Procedura este ignorată dacă fișierul a fost inițiat pentru citirea prin procedura RESET. Funcția EOF (<ф. п.>). Boolean. Funcția logică care testează sfârșitul unui fișier. Returnează TRUE dacă indicatorul de fișier este la sfârșitul fișierului. La scriere, aceasta înseamnă că următoarea componentă va fi adăugată la sfârșitul fișierului, atunci când citiți - că fișierul este epuizat. Procedura CHDIR. Schimbați directorul curent. Formatul tratamentului: CHDIR (<путь>) Aici <путь> -- O expresie de șir care conține calea către directorul implicit. Procedura GETDIR. Vă permite să determinați numele directorului curent (directorul implicit). Formatul recursului: GETDIR (<устройство>, <каталог>) Aici <устройство> - o expresie de tip WORD. care conține numărul dispozitivului: 0 - dispozitivul implicit, 1 - unitatea A, 2 - unitatea B, etc;
<каталог> - variabila de tipul STRING. în care este returnată calea spre directorul curent de pe unitatea specificată. Procedura MKDIR. Creează un nou director pe unitatea specificată. Formatul circulației: MKDIR (<каталог>) Aici <каталог> - expresie de tip STRING. care specifică calea spre director. Numele de familie de pe șosea, adică Numele directorului nou creat nu poate fi numele unui director deja existent. Procedura RMDIR. Șterge directorul. Formatul circulației: RMDIR (<каталог>) Directorul care trebuie șters trebuie să fie gol, adică nu conține fișiere sau nume de directoare de nivel inferior. Funcția IORESULT. WORD. Returnează caracterul condiționat al ultimei operații I / O.
Dacă operația a reușit, funcția revine la zero. Trebuie reținut faptul că IORESULT devine disponibil numai când este dezactivată auto-monitorizarea erorilor I / O. Directiva directivei compilatoare dezactivează și directiva include autocontrolul. Dacă autocontrolul este dezactivat și o operație I / O a cauzat o eroare, semnalizatorul de eroare este setat și toate apelurile I / O ulterioare sunt blocate până când este apelată funcția IORESULT.

Lungimea oricărei componente a fișierului tipizat este strict constantă, ceea ce face posibilă organizarea accesului direct la fiecare dintre ele (adică accesul la componentă prin numărul său de serie).
Înainte de prima accesare a procedurilor de I / O, pointerul fișierului se află la începutul fișierului și indică prima componentă cu numărul 0. După fiecare citire sau scriere, pointerul se deplasează la componenta următoare a fișierului. Variabilele din listele I / O trebuie să aibă același tip ca și componentele fișierului. Dacă există mai multe dintre aceste variabile în listă, pointerul va fi mutat după fiecare operațiune de schimb de date între variabile și fișierul disc. Procedură READ. Asigură că sunt citite următoarele componente ale fișierului tipizat. Formatul circulației: READ (<ф.п.>,<сп.ввода>) Aici <сп.ввода> - o listă de intrări care conține una sau mai multe variabile de același tip ca și componentele fișierului. Fișier variabil <ф.п.> Trebuie să fie declarat FILE a propoziției. și este asociat cu numele fișierului cu procedura ASSIGN. fișierul trebuie deschis prin procedura RESET. Dacă fișierul este epuizat, accesarea READ va provoca o eroare I / O. WRITE procedura. Folosit pentru a scrie date într-un fișier tipărit. Formatul tratamentului: WRITE (<ф.п.>,<сп.вывода>) Aici <сп.вывода> - O listă de ieșire care conține una sau mai multe expresii de același tip ca și componentele fișierului. Procedura SEEK. Deplasează indicatorul de fișier la componenta dorită. Formatul de circulație: SEEK (<ф.п.>,) Aici - expresie de tip LONGINT. indicând numărul componentei fișierului. Prima componentă a fișierului este numărul 0. Procedura nu poate fi aplicată fișierelor text. Funcția FILESIZE. Returnează o valoare de tip LONGINT. care conține numărul de componente de fișier. Formatul tratamentului: FILESIZE (<ф.п.>) Funcția nu poate fi utilizată pentru fișierele text. Pentru a muta cursorul la sfârșitul fișierului tastat, puteți scrie: căutați (FileVar, FileSize (FileVar)); unde FILEVAR este variabila de fișier. Funcția FILEPOS. Returnează o valoare de tip LONGINT. care conține numărul de ordine al componentei fișierului care va fi procesat de următoarea operație I / O. Formatul tratamentului: FILEPOS (<ф.п.>) Funcția nu poate fi utilizată pentru fișierele text. Prima componentă a fișierului are numărul de serie 0.







Articole similare

Trimiteți-le prietenilor: