UNIVERSITATEA "PETRU MAIOR" TG. MURE 23223v2118x 50;
FACULTATEA DE INGINERIE
RUSU-MARIAN CRISTINACALCULATOARE, AN I, GRUPA 1612 |
CUPRINS
Nr. crt. |
Con 23223v2118x 55;inut |
Nr. pag. |
I. No 23223v2118x 55;iuni de sisteme de operare |
3 23223v2118x |
|
II. Structura sistemului de fi 23223v2118x 51;iere DOS | ||
3 23223v2118x . |
III. Editor de text | |
IV. Programare C | ||
a) Tipuri de date | ||
b) Variabile locale | ||
c) Parametri formali | ||
d) Proceduri | ||
e) Opera 23223v2118x 55;ii cu fi 23223v2118x 51;iere |
I. NO 23223v2118x 54;IUNI DE SISTEME DE OPERARE
Un sistem de operare este un program care controleaza execu 23223v2118x 55;ia programelor de aplica 23223v2118x 55;ie 23223v2118x 51;i ac 23223v2118x 55;ioneaza ca o interfa 23223v2118x 55;a între utilizator 23223v2118x 51;i partea hardware a calculatorului. Scopul unui sistem de operare este de a rezolva problemele utilizatorului, adica de a executa programele de aplica 23223v2118x 55;ie. La executarea aplica 23223v2118x 55;iilor concura atât partea hardware, cât 23223v2118x 51;i cea software a calculatorului.
O parte din sistemul de operare este rezidenta în permanen 23223v2118x 55;a în memoria interna. Ea se nume 23223v2118x 51;te Kernel sau nucleu 23223v2118x 51;i con 23223v2118x 55;ine func 23223v2118x 55;iile cele mai folosite ale sistemului de operare.
Func 23223v2118x 55;iile sistemului de operare sunt:
Administrarea proceselor
crearea 23223v2118x 51;i terminarea proceselor;
planificarea 23223v2118x 51;i administrarea proceselor;
comutarea între procese;
sincronizarea proceselor 23223v2118x 51;i asigurarea comunicarii între procese;
administrarea blocurilor de control a proceselor.
Administrarea memoriei:
alocarea pentru proces a spa 23223v2118x 55;iului de adrese;
asigurarea schimbului între memoria interna 23223v2118x 51;i disc;
administrarea segmentelor sau paginilor.
Administrarea sistemului de intrare-ie 23223v2118x 51;ire:
administrarea bufferelor;
alocarea la procese a canalelor de comunica 23223v2118x 55;ie 23223v2118x 51;i a modulelor de intrare-ie 23223v2118x 51;ire.
Suportul func 23223v2118x 55;iilor:
administrarea întreprinderilor;
monitorizarea;
contabilizarea.
Func 23223v2118x 55;ia principala a unui sistem de operare este de a administra diferite resurse disponibile (memoria interna, procesoare, dispozi 23223v2118x 55;ie de intrare-ie 23223v2118x 51;ire) 23223v2118x 51;i de a planifica utilizarea lor de catre diferite procese active.
Resursa este o componenta a sistemului de operare. Un program care consuma o resursa sau un utilizator care folose 23223v2118x 51;te o resursa se nume 23223v2118x 51;te clientul resursei.
Resursele fizice sunt componentele hardware ale calculatorului care au func 23223v2118x 55;ii de prelucrare, pastrare sau transferare a informa 23223v2118x 55;iei. Din aceasta categorie fac parte procesorul, memoria interna, modulele de control ale opera 23223v2118x 55;iilor de intrare-ie 23223v2118x 51;ire 23223v2118x 51;i dispozitivele periferice.
Resursele fizice se pot clasifica în func 23223v2118x 55;ie de modul în care sistemul de operare pune resursa la dispozi 23223v2118x 55;ia clientului:
Resurse fizice propriu-zise care reprezinta componente efective ale sistemului de operare care pot fi eventual partajate între mai multe programe sau utilizatori.
Resurse virtuale care sunt componente ale sistemului de operare pe care le pune la dispozi 23223v2118x 55;ia clientului pentru a le folosi în exclusivitate.
Resursele logice sunt
componentele software ale calculatorului, care au func 23223v2118x 55;ii de administrare
a resurselor 23223v2118x 51;i a datelor, de planificare 23223v2118x 51;i executare a programelor
de aplica 23223v2118x 55;ie, de organizare 23223v2118x 51;i de prelucrare a datelor. Din
aceasta categorie fac parte programele 23223v2118x 51;i datele.
Sistemele de operare sunt alcatuite în principal din doua categorii de programe:
programe de comanda-control, având rolul de coordonare 23223v2118x 51;i control al tuturor func 23223v2118x 55;iilor sistemului de operare;
programe de servicii, care sunt executate sub supravegherea programelor de comanda-control 23223v2118x 51;i sunt utilizate de programator pentru dezvoltarea aplica 23223v2118x 55;iilor.
Programele de comanda-control sunt cunoscute 23223v2118x 51;i sub numele de monitoare, supervizoare sau executive, coordoneaza activitatea celorlalte componente ale sistemului de operare.
Cel mai frecvent utilizate componente ale supervizorului sunt încarcate în memoria interna înca de la generarea sistemului de operare, celelalte componente ramân în memoria externa fiind apelate 23223v2118x 51;i executate numai atunci când sunt solicitate de catre nucleul sistemului de operare asemenea programului de aplica 23223v2118x 55;ie.
Supervizorul ini 23223v2118x 55;iaza execu 23223v2118x 55;ia opera 23223v2118x 55;iilor de intrare-ie 23223v2118x 51;ire pentru transferul componentelor tranzitorii din memoria externa în memoria interna, fiind totodata responsabil de alocarea canalelor de intrare-ie 23223v2118x 51;ire, de asemenea efectueaza controlul 23223v2118x 51;i coordonarea unita 23223v2118x 55;ii centrale de prelucrare CPU, pe parcursul recep 23223v2118x 55;ionarii de mesaje de la canalele prin care se executa transferul, a execu 23223v2118x 55;iei programelor din memoria interna, respectiv a transmiterii de mesaje catre dispozitivele periferice de intrare-ie 23223v2118x 51;ire prin intermediul magistralelor.
Folosind programul shell, utilizatorul poate sa comunice sistemului de operare activita 23223v2118x 55;ile pe care trebuie sa le execute, modul în care sunt delimitate activita 23223v2118x 55;ile, structura acestor activita 23223v2118x 55;i, resursele fizice 23223v2118x 51;i logice necesare pentru executarea lor 23223v2118x 51;i informa 23223v2118x 55;ii despre seturile de date folosite.
Evolu 23223v2118x 55;ia sistemelor de operare a dus la descompunerea
lucrarilor în procese pentru a se utiliza mai optim resursele sistemului
de calcul. Aceste procese se pot executa reconven 23223v2118x 55;ional sau concurent, în
func 23223v2118x 55;ie de logica lucrarii. Orice sistem modern de operare se
bazeaza pe componenta Kernel
pentru administrarea proceselor.
II. STRUCTURA SISTEMULUI DE FI 23223v2118x 50;IERE DOS
Sistemul MS-DOS, raportat la alte sisteme de operare cunoscute (UNIX, OS/2, UMS, WINDOWS) are o dimensiune medie 23223v2118x 51;i o complexitate moderata, suporta un singur utilizator. Din punctul de vedere al controlului resurselor calculatorului, MS-DOS se comporta ca un manager de fi 23223v2118x 51;ier decât ca un sistem de operare.
Partea de management a fi 23223v2118x 51;ierelor din nucleul MS-DOS este partea cea mai consistenta a MS-DOS. Ea asigura citirea 23223v2118x 51;i scrierea fi 23223v2118x 51;ierelor. Daca nu este necesar accesul la un sector particular de pe disc, programele de aplica 23223v2118x 55;ie trebuie sa realizeze citirea 23223v2118x 51;i scrierea fi 23223v2118x 51;ierelor prin intermediul nucleului MS-DOS. Un fi 23223v2118x 51;ier este o colec 23223v2118x 55;ie de înregistrari de acela 23223v2118x 51;i tip care poate fi tratata ca un tot unitar de utilizatori sau de programele de aplica 23223v2118x 55;ie, identificarea lui facându-se printr-un nume unic. Memorarea lui se face pe un suport de informa 23223v2118x 55;ie.
Sistemul de operare DOS accepta nume de fi 23223v2118x 51;iere de maxim 8 caractere, nu face diferen 23223v2118x 55;a între litere mari 23223v2118x 51;i litere mici iar numele fi 23223v2118x 51;ierului este format din doua par 23223v2118x 55;i separate prin punct.
Organizarea logica a datelor în fi 23223v2118x 51;iere reprezinta definirea unor rela 23223v2118x 55;ii între înregistrarile unui fi 23223v2118x 51;ier 23223v2118x 51;i pozi 23223v2118x 55;ia înregistrarilor în fi 23223v2118x 51;ier, astfel încât opera 23223v2118x 55;iile de intrare-ie 23223v2118x 51;ire sa se execute cât mai rapid.
În sistemul de operare MS-DOS, blocul fi 23223v2118x 51;ierelor de pe disc se nume 23223v2118x 51;te cluster 23223v2118x 51;i este format dintr-un numar de sectoare aranjate continuu pe disc. Numarul de sectoare depinde de tipul discului 23223v2118x 51;i de capacitatea lui.
Sistemul de operare permite diferite opera 23223v2118x 55;ii prin care se poate asigura pastrarea informa 23223v2118x 55;iilor într-un fi 23223v2118x 51;ier 23223v2118x 51;i regasirea lor în vederea prelucrarii.
Atunci când mai mul 23223v2118x 55;i utilizatori cer accesul la acela 23223v2118x 51;i fi 23223v2118x 51;ier, fie sa-l actualizeze, fie sa-l consulte, sistemul de operare sau sistemul de gestiune a fi 23223v2118x 51;ierelor trebuie sa introduca o disciplina a accesului. Aceasta problema poate fi abordata fie prin a permite unui utilizator sa blocheze accesul altor utilizatori la fi 23223v2118x 51;ierul pe care îl actualizeaza, fie sa blocheze accesul celorlal 23223v2118x 55;i utilizatori numai la înregistrarea pe care o actualizeaza. Implementarea se poate face folosind mecanismul cititor-scriitor.
Alocarea spa 23223v2118x 55;iului la fi 23223v2118x 51;iere se poate face static sau dinamic. O alocare statica presupune sa se cunoasca spa 23223v2118x 55;iul maxim necesar fi 23223v2118x 51;ierului ca sa se poata stabili la crearea fi 23223v2118x 51;ierului. În cazul în care spa 23223v2118x 55;iul se aloca dinamic unui fi 23223v2118x 51;ier, alocarea se va face în por 23223v2118x 55;iuni de suport numite unita 23223v2118x 55;i de alocare. Eviden 23223v2118x 55;a atribuirii unita 23223v2118x 55;ilor de alocare la fi 23223v2118x 51;iere este pastrata într-o tabela numita tabela de alocare a fi 23223v2118x 51;ierelor.
III. EDITOR DE TEXT
Un editor de text este un set de programe ce ofera posibilitatea introducerii, editarii 23223v2118x 51;i tiparirii de texte sub forma unor fi 23223v2118x 51;iere ASCII. Textele sunt alcatuite din caractere care se introduc de la tastatura, aparând în acela 23223v2118x 51;i timp 23223v2118x 51;i pe monitor, erorile pot fi corectate foarte u 23223v2118x 51;or, deoarece acestea nu sunt înca tiparite pe hârtie. Editorul de texte are ca activitate principala crearea de texte, împreuna cu hardware-ul, furnizeaza calea de urmat pentru vizualizarea, memorarea, editarea 23223v2118x 51;i regasirea textelor create. Editoarele de texte mai performante permit 23223v2118x 51;i introducerea elementelor de grafica în text. Deoarece documenta 23223v2118x 55;ia de utilizare a editoarelor de texte este voluminoasa, proiectan 23223v2118x 55;ii acestora au prevazut pentru cele mai frecvente func 23223v2118x 55;ii un sistem de help ce consta în informa 23223v2118x 55;ii minime, afi 23223v2118x 51;ate de monitor, referitor la modul de lucru al func 23223v2118x 55;iei. Numele fi 23223v2118x 51;ierului, pagina curenta, linia 23223v2118x 51;i coloana în care se afla cursorul sunt permanent afi 23223v2118x 51;ate pe monitor în vederea orientarii utilizatorului, textul poate fi memorat pe suport magnetic, se poate folosi 23223v2118x 51;i modificarea dupa necesita 23223v2118x 55;i. Editoarele de texte sunt componente ale sistemului de operare cu cea mai mare frecven 23223v2118x 55;a de utilizare. În prezent exista o mare varietate de astfel de programe datorita capacita 23223v2118x 55;ii de a degreva utilizatorul de sarcini elementare, cum ar fi: despar 23223v2118x 55;irea în silabe, alinierea textelor, paragrafelor, titlurilor, sublinierea unor por 23223v2118x 55;iuni din text, cautarea unui 23223v2118x 51;ir de caractere 23223v2118x 51;i editarea acestuia, indexarea documentului, realizarea cuprinsului.
IV. PROGRAMARE ÎN C
a) Tipuri de date
Tipuri de date de baza sunt char, int, float, double reprezentând caractere (1 byte), întregi cu semn, numere în virgula mobila în simpla 23223v2118x 51;i respectiv dubla precizie. Exista mai mul 23223v2118x 55;i specificatori suplimentari de tip care se pot aplica acestor tipuri de date de baza, ob 23223v2118x 55;inându-se tipuri noi.
Pentru tipul int exista specificatori short 23223v2118x 51;i long, putând declara de exemplu:
long int i;
short int j;
În aceste cazuri, int se poate omite, deci se poate scrie direct:
long i;
short j;
Restric 23223v2118x 55;iile impuse de standardul ANSI sunt:
dim(short)>=16 bi 23223v2118x 55;i;
dim(int)>=16 bi 23223v2118x 55;i;
dim(long)>=3 23223v2118x 2 bi 23223v2118x 55;i;
dim(short)<= dim(int)>= dim(long);
Specificatorii signed 23223v2118x 51;i unsigned pot fi aplica 23223v2118x 55;i tipului char 23223v2118x 51;i oricarui tip de întregi (short, int 23223v2118x 51;i long). Variabilele de tip unsigned sunt considerate >=0, respectând regulile aritmeticii modulo 2n unde n este un numar de bi 23223v2118x 55;i pe care e memorat tipul întreg respectiv. Variabilele de tip signed sunt în domeniul -2n-1...2m-1-1.
Tipurile short, int 23223v2118x 51;i long sunt implicit cu semn, dar tipul char poate fi implicit cu semn sau fara semn, depinzând de implementare. Tipul long double specifica variabilele în virgula mobila extinsa.
Apelând la o implementare uzuala a limbajului C pe echipamente PC, compatibile IBM sub sistemul de operare MS-DOS, tipurile de date diferite de standardul ANSI 23223v2118x 51;i recunoscute de limbaj cu reprezentarea din tabelul urmator.
Tip |
Reprezentare (în bi 23223v2118x 55;i) |
Rang |
char | ||
unsigned char | ||
signed char | ||
int |
-3 23223v2118x 2768÷3 23223v2118x 2768 |
|
unsigned int |
0÷6563 23223v2118x 5 |
|
signed int |
-3 23223v2118x 2768÷3 23223v2118x 2767 |
|
short int |
-3 23223v2118x 2768÷3 23223v2118x 2767 |
|
unsigned short int |
0÷6553 23223v2118x 5 |
|
signed short int |
-3 23223v2118x 2768÷3 23223v2118x 2767 |
|
long int |
3 23223v2118x 2 |
-2147483 23223v2118x 648÷2147483 23223v2118x 647 |
signed long int |
3 23223v2118x 2 |
-2147483 23223v2118x 648÷2147483 23223v2118x 647 |
unsigned long int |
3 23223v2118x 2 | |
float |
3 23223v2118x 2 |
10-3 23223v2118x 7÷10-3 23223v2118x 7 (6 digi 23223v2118x 55;i precizie) |
double |
10-3 23223v2118x 08÷10-3 23223v2118x 08 (10 digi 23223v2118x 55;i precizie) |
|
long double |
10-493 23223v2118x 2÷10-493 23223v2118x 2 (15 digi 23223v2118x 55;i precizie) |
b) Variabile locale
Variabilele locale, spre deosebire de cele globale, nu sunt valabile în tot programul. Ele au o valabilitate locala, în unitatea în care sunt declarate. Variabilele locale pot fi alocate stiva. În acest caz ele se numesc automatice. Acestea se declara în mod obi 23223v2118x 51;nuit, în scopul unei func 23223v2118x 55;ii sau la începutul unei instruc 23223v2118x 55;iuni compuse. O astfel de variabila se aloca la execu 23223v2118x 55;ie (nu la compilare).
La apelul unei func 23223v2118x 55;ii, variabilele automatice (declarate în mod obi 23223v2118x 51;nuit înaintea primei instruc 23223v2118x 55;iuni din corpul func 23223v2118x 55;iei respective) se aloca pe stiva. În momentul în care se revine din func 23223v2118x 55;ie, variabilele automatice alocate la apel, se dezaloca (elimina) 23223v2118x 51;i stiva revine la starea dinaintea apelului (opera 23223v2118x 55;ia de cura 23223v2118x 55;ire a stivei). Aceasta înseamna ca variabilele automatice î 23223v2118x 51;i pierd existen 23223v2118x 55;a la revenirea din func 23223v2118x 55;ia în care sunt declarate. De aceea, o variabila automatica este valabila (vizibila) numai în corpul func 23223v2118x 55;iei în care a fost declarata.
În acela 23223v2118x 51;i mod se comporta variabilele automatice declarate la începutul unei instruc 23223v2118x 55;iuni compuse. O astfel de variabila se aloca pe stiva în momentul în care controlul programului ajunge la instruc 23223v2118x 55;iunea compusa în care este declarata variabila respectiva 23223v2118x 51;i se elimina de pe stiva în momentul în care controlul programului trece la instruc 23223v2118x 55;iunea urmatoare celei compuse.
Variabilele locale pot 23223v2118x 51;i sa nu fie alocate pe stiva. În acest scop ele se declara ca fiind statice. O declara 23223v2118x 55;ie de variabila statica este o declara 23223v2118x 55;ie obi 23223v2118x 51;nuita precedata de cuvântul cheie static.
Variabilele statice pot fi declarate atât în corpul unei func 23223v2118x 55;ii cât 23223v2118x 51;i în afara corpului oricarei func 23223v2118x 55;ii. O variabila statica declarata în corpul unei func 23223v2118x 55;ii este definita numai în corpul func 23223v2118x 55;iei respective. Spre deosebire de variabilele automatice, o variabila statica nu se aloca pe stiva la execu 23223v2118x 55;ie, ci la compilare într-o zona de memorie destinata acestora. O variabila statica declarata în afara corpurilor func 23223v2118x 55;iilor este definita (vizibila) din punctul în care este declarata 23223v2118x 51;i pâna la sfâr 23223v2118x 51;itul fi 23223v2118x 51;ierului sursa care con 23223v2118x 55;ine declara 23223v2118x 55;ia respectiva. Spre deosebire de variabilele globale, o astfel de variabila nu poate fi declarata ca externa. Deci ea nu poate fi utilizata în alte fi 23223v2118x 51;iere daca acestea se compileaza separat sau se include înaintea declara 23223v2118x 55;iei respective. Putem spune ca o variabila statica declarata în afara corpurilor func 23223v2118x 55;iilor este locala fi 23223v2118x 51;ierului sursa în care este declarata. Ea se aloca la compilare într-o zona speciala rezervata variabilelor statice corespunzatoare fi 23223v2118x 51;ierului sursa în care au fost declarate.
c) Parametri formali
Un parametru este o valoare transmisa unei func 23223v2118x 55;ii. Cele mai multe dintre programe transmit parametri catre func 23223v2118x 55;ia printf:
printf("valoarea este %d\n", rezultat);
Atunci când se utilizeaza în mod regulat, se poate îmbunata 23223v2118x 55;ii utilitatea transmi 23223v2118x 55;ându-le parametrii.
Parametrii formali sunt numele parametrilor care apar în defini 23223v2118x 55;ia func 23223v2118x 55;iei. În exemplul de mai jos vârsta, salariu 23223v2118x 51;i nr_marca sunt parametri formali pentru func 23223v2118x 55;ia info_angajat:
void info_angajat (int vârsta, float salariu, int nr_marca).
Parametrii formali se aloca pe stiva ca 23223v2118x 51;i variabilele automatice. De aceea, ei se considera a fi variabile locale 23223v2118x 51;i sunt utilizabili numai în corpul func 23223v2118x 55;iei în antetul careia sunt declara 23223v2118x 55;i.
La apelul unei func 23223v2118x 55;ii, se aloca pe stiva parametri formali, daca exista, li se atribuie valorile parametrilor efectivi care le corespund. Apoi se aloca pe stiva variabilele automatice declarate la începutul corpului func 23223v2118x 55;iei respective.
La revenirea din func 23223v2118x 55;ie, se realizeaza cura 23223v2118x 55;irea stive, adica sunt eliminate de pe stiva (dezalocate) atât variabilele automatice, cât 23223v2118x 51;i parametrii. În felul acesta, la revenirea din func 23223v2118x 55;ie, stiva ajunge la starea dinaintea apelului.
d) Proceduri
Procedura trebuie sa exprime acela 23223v2118x 51;i proces de calcul dar care se realizeaza cu date diferite. În acest caz, procedura trebuie realizata generala, facând abstrac 23223v2118x 55;ie de datele respective. Pentru a evalua expresia: 4**10-3 23223v2118x **20 (1), putem construi o procedura pentru ridicarea la putere, care sa fie generala 23223v2118x 51;i sa faca abstrac 23223v2118x 55;ie de valorile efective pentru baza 23223v2118x 51;i exponent: 4 23223v2118x 51;i 10 pentru prima ridicare la putere, 3 23223v2118x 23223v2118x 51;i 20 pentru cea de-a doua. Aceasta generalizare se realizeaza considerând ca fiind variabile atât baza cât 23223v2118x 51;i exponentul, iar valorile lor se precizeaza la fiecare apel al procedurii implementate în acest fel. Aceste variabile utilizate pentru a putea implementa o procedura generala 23223v2118x 51;i care se concretizeaza la fiecare apel al procedurii se numesc parametrii formali. În felul acesta, procedura apare ca un rezultat al unui proces de generalizare necesar implementarii ei.
În toate limbajele de programare se considera 2 categorii de proceduri:
Proceduri care definesc o valoare de revenire;
Proceduri care nu definesc o valoare de revenite.
Procedurile din prima categorie se numesc func 23223v2118x 55;ii. Valoarea de revenire se mai nume 23223v2118x 51;te 23223v2118x 51;i valoarea de întoarcere sau valoarea returnata de func 23223v2118x 55;ie. Procedura pentru calculul ridicarii la putere este un exemplu de func 23223v2118x 55;ie. Ea are ca parametrii baza 23223v2118x 51;i exponentul, iar ca valoare de întoarcere sau returnata, rezultatul ridicarii valorii bazei la valoarea exponentului, valori care sunt definite la apel.
În limbajele C 23223v2118x 51;i C++ atât procedurile din prima categorie cât 23223v2118x 51;i cele din cea de-a doua se numesc func 23223v2118x 55;ii. Deci, în aceste limbaje distingem func 23223v2118x 55;ii care returneaza o valoare la revenirea din ele, precum 23223v2118x 51;i func 23223v2118x 55;ii care nu returneaza nici o valoare.
O func 23223v2118x 55;ie are o defini 23223v2118x 55;ie 23223v2118x 51;i atâtea apeluri într-un program, câte sunt necesare. O defini 23223v2118x 55;ie de func 23223v2118x 55;ie are formatul:
antet
corp
unde: - antet - are formatul:
tip nume (lista declara 23223v2118x 55;iilor parametrilor formali);
- corp - este o instruc 23223v2118x 55;iune compusa.
Tip este cuvântul cheie void pentru func 23223v2118x 55;ii care nu returneaza nici o valoare la revenirea din ele.
Apelul unei func 23223v2118x 55;ii trebuie sa fie precedat de defini 23223v2118x 55;ia sau de prototipul ei.
Prototipul unei func 23223v2118x 55;ii con 23223v2118x 55;ine informa 23223v2118x 55;ii asemanatoare cu cele din antetul ei:
tipul valorii returnate;
numele func 23223v2118x 55;iei;
tipurile parametrilor.
El poate avea acela 23223v2118x 51;i format ca 23223v2118x 51;i antetul func 23223v2118x 55;iei, în plus este urmat de punct 23223v2118x 51;i virgula.
e) Opera 23223v2118x 55;ii cu fi 23223v2118x 51;iere
Opera 23223v2118x 55;iile de prelucrare a fi 23223v2118x 51;ierelor se executa utilizându-se func 23223v2118x 55;ii specializate de gestiune a fi 23223v2118x 51;ierelor. De asemenea, fiecarui fi 23223v2118x 51;ier i se ata 23223v2118x 51;eaza o structura de tip FILE. Acest tip este definit în fi 23223v2118x 51;ierul stdio.h. De asemenea, toate func 23223v2118x 55;iile din aceasta clasa are prototipurile în fi 23223v2118x 51;ierul stdio.h.
Deschiderea unui fi 23223v2118x 51;ier
Pentru a deschide un fi 23223v2118x 51;ier la acest nivel de prelucrare a fi 23223v2118x 51;ierelor se utilizeaza func 23223v2118x 55;ia fopen. Ea returneaza un pointer spre tipul FILE (tipul fi 23223v2118x 51;ierului) sau pointerul nul în caz de eroare. Prototipul func 23223v2118x 55;iei este urmatorul:
FILE *fopen(const char * calea, const char * mod);
unde: - calea - are aceea 23223v2118x 51;i semnifica 23223v2118x 55;ie ca 23223v2118x 51;i în cazul func 23223v2118x 55;iei open adica este un pointer spre un 23223v2118x 51;ir de caractere care define 23223v2118x 51;te calea spre fi 23223v2118x 51;ierul care se deschide;
- mod - este un pointer spre un 23223v2118x 51;ir de caractere care define 23223v2118x 51;te modul de prelucrare al fi 23223v2118x 51;ierului dupa deschidere, acest 23223v2118x 51;ir de caractere se define 23223v2118x 51;te astfel:
"r" - deschidere pentru citire;
"w" - deschidere pentru scriere;
"a" - deschidere pentru adaugare;
"r+" - deschidere pentru modificare citire-scriere;
"rb" - deschidere pentru citire binara;
"wb" - deschidere pentru scriere binara;
"r+b" - deschidere pentru citire-scriere binara.
Cu ajutorul func 23223v2118x 55;iei fopen se poate deschide un fi 23223v2118x 51;ier inexistent în modul w sau a. În acest caz, fi 23223v2118x 51;ierul respectiv se considera în creare.
Daca se deschide un fi 23223v2118x 51;ier existent în modul w, atunci se va crea din nou fi 23223v2118x 51;ierul respectiv 23223v2118x 51;i vechiul con 23223v2118x 55;inut al sau se va pierde.
Deschiderea unui fi 23223v2118x 51;ier în modul a permite adaugarea de înregistrari dupa ultima înregistrare existenta în fi 23223v2118x 51;ier.
Prelucrarea pe caractere a unui fi 23223v2118x 51;ier
Fi 23223v2118x 51;ierele pot fi scrise 23223v2118x 51;i citite caracter cu caracter folosind doua func 23223v2118x 55;ii simple
putc -pentru scriere;
getc -pentru citire.
Func 23223v2118x 55;ia putc are prototipul:
int putc(int c, FILE *fp);
unde: - c - codul ASCII al caracterului care se scrie în fi 23223v2118x 51;ier;
fp - un pointer spre tipul FILE a carui valoare a fost returnata de func 23223v2118x 55;ia fopen la deschiderea fi 23223v2118x 51;ierului în care se face scrierea; În particular fp poate fi (stdont, stderr, stdprn, stdaux).
Func 23223v2118x 55;ia putc returneaza valoare lui c sau -1 la eroare.
Func 23223v2118x 55;ia getc are prototipul:
int getc(FILE *fp);
unde: - fp - un pointer spre tipul FILE a carui valoare a fost definita la apelul func 23223v2118x 55;iei fopen. În particular fp poate fi (stdin, stdoux).
Func 23223v2118x 55;ia putc returneaza codul ASCII al caracterului citit din fi 23223v2118x 51;ier.
3 23223v2118x . Închiderea unui fi 23223v2118x 51;ier
Dupa terminarea prelucrarii unui fi 23223v2118x 51;ier, acesta urmeaza a fi închis. Închiderea unui fi 23223v2118x 51;ier se realizeaza cu ajutorul func 23223v2118x 55;iei fclose de prototip:
int fclose(FILE *fp);
unde: - fp -este pointerul spre tipul FILE. Valoarea lui a fost definita prin func 23223v2118x 55;ia fopen la deschiderea fi 23223v2118x 51;ierului.
Func 23223v2118x 55;ia returneaza valorile:
0 -la închidere normala;
-1 -la eroare.
Intrari/iesiri de 23223v2118x 51;iruri de caractere
Biblioteca standard a limbajului C con 23223v2118x 55;ine func 23223v2118x 55;iile fgets 23223v2118x 51;i fputs care permit citirea, respectiv scrierea, înregistrarilor care sunt 23223v2118x 51;iruri de caractere.
Func 23223v2118x 55;ia fgets are prototipul:
char *fgets(char *s, int n, FILE *fp);
unde: - s -este pointerul spre zona în care se pastreaza caracterele citite din fi 23223v2118x 51;ier;
- n -este dimensiunea în octe 23223v2118x 55;i a zonei în care se citesc caracterele din fi 23223v2118x 51;ier;
- fp -este pointerul spre tipul FILE a carui valoare s-a definit la deschiderea fi 23223v2118x 51;ierului.
Citirea caracterelor se întrerupe la întâlnirea caracterului " n" sau dupa citirea a cel mult n-1 caractere. În zona spre care pointeaza s se pastreaza caracterul " n" daca acesta a fost citit din fi 23223v2118x 51;ier, iar apoi se memoreaza caracterul nul (" 0"). În mod normal, func 23223v2118x 55;ia returneaza valoarea pointerului s. La întâlnirea sfâr 23223v2118x 51;itului de fi 23223v2118x 51;ier func 23223v2118x 55;ia returneaza valoarea 0.
Func 23223v2118x 55;ia fputs scrie un 23223v2118x 51;ir de caractere într-un fi 23223v2118x 51;ier. Ea are prototipul:
int fputs (const char *s, FILE *fp);
unde: - s - este pointerul de la începutul zonei de memorie care con 23223v2118x 55;ine 23223v2118x 51;irul de caractere care se scrie în fi 23223v2118x 51;ier.
- fp - este pointerul spre tipul FILE a carui valoare a fost definita la deschiderea fi 23223v2118x 51;ierului prin apelul fopen.
Func 23223v2118x 55;ia fputs returneaza codul ASCII al ultimului caracter scris în fi 23223v2118x 51;ier sau -1 la eroare.
Aceste doua func 23223v2118x 55;ii sunt similare cu func 23223v2118x 55;iile gets 23223v2118x 51;i puts.
Intrari ie 23223v2118x 51;iri cu format (I/O)
Biblioteca standard a limbajului C con 23223v2118x 55;ine func 23223v2118x 55;ii care permit realizarea opera 23223v2118x 55;iilor de I/O cu format. În acest scop se pot utiliza func 23223v2118x 55;iile fscanf, fprintf.
Acestea sunt similare cu func 23223v2118x 55;iile sscanf, respectiv sprintf. Diferen 23223v2118x 55;a dintre ele consta în faptul ca fscanf 23223v2118x 51;i fprintf au ca prim parametru un pointer spre tipul FILE, iar sscanf 23223v2118x 51;i sprintf au ca prim parametru un pointer spre o zona în care se pastreaza caractere. Astfel fscanf cite 23223v2118x 51;te date dintr-un fi 23223v2118x 51;ier 23223v2118x 51;i le converte 23223v2118x 51;te, în timp ce sscanf realizeaza acela 23223v2118x 51;i lucru dar utilizând date din memorie. Func 23223v2118x 55;ia fprintf converte 23223v2118x 51;te date din format intern în format extern 23223v2118x 51;i apoi le scrie într-un fi 23223v2118x 51;ier, spre deosebire de func 23223v2118x 55;ia sprintf care realizeaza acela 23223v2118x 51;i lucru dar rezultatele se pastreaza în memorie.
Prototipul func 23223v2118x 55;iei fscanf:
int fscanf(FILE *fp, const char *format, ...);
unde: - fp - este pointer spre tipul FILE a carui valoare a fost definita prin apelul func 23223v2118x 55;iei fopen.
Prototipul func 23223v2118x 55;iei fprintf:
int fprintf(FILE *fp, const char *format, ...);
unde: - fp - este pointer spre tipul FILE.
Pozi 23223v2118x 55;ionarea într-un fi 23223v2118x 51;ier
Limbajul C con 23223v2118x 55;ine func 23223v2118x 55;ia fseek care permite deplasarea capului de citire-scriere al discului în vederea prelucrarii înregistrarilor fi 23223v2118x 51;ierului într-o ordine diferita de cea secven 23223v2118x 55;iala.
Prototipul func 23223v2118x 55;iei fseek:
int fseek(FILE *fp, long deplasament, int origine);
unde: - fp - este pointer spre tipul FILE care define 23223v2118x 51;te fi 23223v2118x 51;ierul în care se face pozi 23223v2118x 55;ionarea capului de citire-scriere.
23223v2118x 50;tergerea unui fi 23223v2118x 51;ier
Un fi 23223v2118x 51;ier poate fi 23223v2118x 51;ters apelând func 23223v2118x 55;ia unlink. Aceasta are prototipul:
int unlink(const char *calea);
unde: - calea - este pointer spre un 23223v2118x 51;ir de caractere identic cu cel utilizat la crearea fi 23223v2118x 51;ierului în func 23223v2118x 55;ia fopen.
Powered by https://www.preferatele.com/ cel mai tare site cu referate |
|