Extras din curs
PREZENTAREA GENERALĂ A MEDIULUI DE DEZVOLTARE
Turboc C++, produs al firmei Turbo International, este un pachet de
programe care oferă o implementare a limbajului C după standardul ANSI şi o
implementare a limbajului C++.
Extensiile implicite pentru cele doua categorii de fişiere sunt C respectiv
.CPP.
Mediul de dezvoltare integrat (IDE: Integrared Development Environment)
oferă toate facilitaţile necesare pentru editarea, compilarea, linkeditarea şi depanarea
programelor. La laborator vom folosi mediul integrat Turboc C++ 3.1, iar sistemul de
operare este Windows XP.
LUCRUL CU FIŞIERE (1)
1. Prezentare generală
Un fişier este o colecţie de date sau informaţii care are un nume. Toate
informaţiile existente intr-un calculator trebuie să fie cuprinse intr-un fişier. Sunt
diferite tipuri de fişiere: fişiere de date, fişiere text, fişiere program, fişiere director (şi
directoarele sunt de fapt nişte fişiere), etc. Există tipuri diferite de fişiere pentru că
există tipuri diferite de informaţie care trebuie stocată. De exemplu in fişierele
program găsim programe care pot fi lansate in execuţie, in timp ce fişierele text
conţin pur şi simplu texte. Fişierele sunt necesare pentru păstrarea informaţiilor in
vederea utilizării lor ulterioare, ca atare sau prelucrate conform unor algoritmi
utilizator. Informaţiile stocate in fişiere pot fi introduse de pe un suport extern sau pot
fi rezultate din aplicarea algoritmului de calcul. Există două mari categorii de fişiere:
fişiere text şi fişiere binare. Fişierele text sunt fişiere in care caracterele sunt
reprezentate prin codul lor (in general cod ASCII), deci conţin numai codurile
tipăribile; ele pot fi citite cu uşurinţă de operatorul uman. Fişierele binare sunt
accesibile pentru prelucrare numai calculatorului, nu şi operatorului uman; aceste
fişiere pot conţine atat coduri ale caracterelor tipăribile, cat şi codificarea binară a
operaţiilor pe care un program trebuie să le execute.
Diversele tipuri de date stocate in fişiere sunt grupate in inregistrări. Fiecare
inregistrare ce alcătuieşte un fişier conţine aceleaşi tipuri de date (şi in aceeaşi
ordine), ca urmare putem spune că fişierul este o colecţie de inregistrări şi se
caracterizează prin următoarele:
- inregistrările (ce conţin date) sunt omogene din punctul de vedere al conţinutului;
- inregistrările sunt stocate intr-o ordine cunoscuta, specifica fişierului;
- este definit cel puţin un criteriu de regăsire a unei inregistrări din fişier
Fişierele sunt păstrate pe suporturi de memorie externă definite de utilizator
(diskete, discuri dure (hard discuri), benzi magnetice, compact discuri).
Prelucrarea fişierelor implică un număr de operaţii specifice acestora. Pentru ca
un fişier să poată fi prelucrat el trebuie mai intai deschis (dacă există) şi apoi inchis
(după prelucrare). Dacă fişierul nu există, el va fi mai intai creat. Intre aceste două
operaţii (deschis/inchis) pot fi programate diverse alte acţiuni:
- adăugare inregistrări, constand in construirea unor noi inregistrări şi scrierea lor in
fişier cu respectarea ordinii şi a criteriului de regăsire;
- ştergerea unei inregistrări, constand in eliminarea acesteia din fişier cu respectarea
ordinii inregistrărilor rămase şi a criteriului lor de regăsire;
- consultarea (citirea unei inregistrări sau a mai multora) in scopul utilizării unor date,
fără a modifica conţinutul fişierului;
- actualizarea constand in citirea unei inregistrări, modificarea unei date (sau mai
multor date) din cuprinsul inregistrării urmată obligatoriu de o rescriere (salvare) a
inregistrării astfel actualizate.
Toate aceste prelucrări se realizează utilizand funcţii din bibliotecile standard
ale limbajului C, funcţii ale căror prototipuri se găsesc in fişierele header: stdio.h,
io.h, fcntl.h, sysstat.h.
Prelucrarea fişierelor se poate face pe doua nivele:
- nivel inferior, care face apel direct la sistemul de operare; aici fiecărui fişier i se
asociază un descriptor de fişier (o variabilă de tip intreg);
nivelul superior, cand se face apel la proceduri specializate in prelucrarea fişierelor
(de exemplu rezervarea unor zone tampon speciale pentru operaţii de intrare / ieşire)
şi cand fiecărui fişier cu care se lucrează i se asociază un pointer la o structură de tip
FILE (se va detalia in lucrarea nr. 11).
Observaţie: in cele ce urmează expresia pointer de fişier va fi folosită pentru a
denumi indicatorul de poziţie curentă in fişier (poziţia in fişier de unde putem citi sau
unde putem scrie). Nu confundaţi "pointer de fişier", in sensul de poziţia curentă in
fişier, cu un pointer pe o structură de tip file !!!
2. Nivelul inferior de prelucrare a fişierelor
Pentru lucrul cu fişiere este necesară includerea prealabilă a fişierelor header:
io.h, fcntl.h, sysstat.h. După folosirea oricărei funcţii se recomandă testarea valorii
returnate pentru verificarea efectuării corecte a operaţiei dorite.
2.1. Deschiderea unui fişier
Deschiderea unui fişier se face cu funcţia open, care returneaza un număr
intreg, numit descriptor de fişier sau număr logic. El este utilizat in continuare de
sistemul de operare pentru a identifica fişierul in toate operaţiile realizate asupra lui.
Pentru fişierul standard de intrare, adică pentru intrarea de la tastatură, descriptorul
de fişier, df = 0, pentru fişierul standard de ieşire, care este ecranul monitorului, df =
1, pentru fişierul standard de afişare a erorilor, df = 2.
Inchiderea şi deschiderea acestor trei fişiere se face automat de către sistem (deci
ele nu se deschid şi nu se inchid de către programator).
Prototipul funcţiei open, aflat in io.h este:
int open(const char *numefişier, int acces [,unsigned mod]);
unde:
- numefişier este un pointer spre un şir de caractere care defineşte numele fişierului
care se deschide (inclusiv calea lui, daca este cazul);
- acces este o variabilă de tip intreg care poate lua una din valori:
O_RDONLY - fişier deschis numai pentru citire;
O_WRONLY - fişier deschis numai pentru scriere;
O_RDWR - fişier deschis pentru citire / scriere;
O_APPEND - fişierul se deschide pentru adăugare de inregistrări (pointerul de
fişier se poziţionează după ultima inregistrare);
O_BINARY - fişierul care se deschide este binar;
O_TEXT - fişierul care se deschide este de tip text.
O_CREAT- nu are efect daca fişierul există; dacă nu există fişierul este creat şi
biţii din mod stabilesc atributele fişierului ca la chmod( );
O_TRUNC - dacă fişierul există, lungimea sa este trunchiată la zero, atributele
rămanand neschimbate;
O_EXCL - se foloseşte numai cu O_CREAT; se returnează eroare dacă fişierul
exista deja;
Preview document
Conținut arhivă zip
- Crearea Fisierilor si Relizarea Functilor in Fisiere.doc