Sunteți pe pagina 1din 16

Operaii de citire i scriere

n C++ operaiile de intrare-ieire se realizeaz prin fluxuri de date. Prin flux de date (stream) se nelege traseul datelor de la surs la destinaie. sursa flux de date destinaia tastatura ecranul monitorului fiier pe disc fiier pe disc variabil de memorie variabil de memorie

Fluxul de date este format din secvene de caractere organizate pe linii (separate prin codurile ASCII generate la apsarea tastei Enter) care intr i ies din program. Prin fluxuri de date echipamentele de intrareieire sunt conectate la programul C++. Exist dou fluxiri de date standard: - flux de date de intrare (cin) - flux de date de ieire (cout)

Fluxul de date de intrare conecteaz tastatura la program, asigurnd operaiile de citire care furnizeaz programului datele de intrare. Fluxul datelor este ntre tastatur (sursa) i variabila de memorie (destinaia). Fluxul de date de ieire conecteaz monitorul la program, asigurnd operaiile de scriere prin care programul furnizeaz datele de ieire. Fluxul datelor este ntre variabila de memorie (sursa) i ecranul monitorului (destinaia).

Pentru operaiile de citire i scriere se folosesc instruciunile expresie, prin care se creeaz fluxurile de date, cu ajutorul operatorilor >>, respectiv <<.
Pentru citire: cin>> - se creeaz fluxul de date ntre tastatur i variabila de memorie (cin reprezint tastatura, iar operatorul de intrare >> nseamn transmiterea unei valori de la tastatur).

Pentru scriere: cout<< - se creeaz fluxul de date ntre variabila de memorie i ecran (cout reprezint monitorul, iar operatorul de ieire << nseamn transmiterea unei valori ctre monitor). Rolul operatorilor >> i << este de a apela funcii de sistem (funcia apelat este determinat de tipul variabilei de memorie) care convertesc:

la intrare: o secven de iruri de caractere ntr-un tip de dat; la ieire: un tip de dat ntr-o secven de iruri de caractere.

Sintaxa expresiei care creeaz un flux de date pentru citirea de la tastatur: - pentru citirea valorii unei singure variabile: cin>>nume_variabil_memorie; Exemplu: int a,b,c; float x,y; cin>>a; cin>>b; cin>>c; cin>>x; cin>>y;

- pentru citirea valorilor a n variabile de memorie, identificate prin numele lor: cin>>nume_1>>nume_2>> >>nume_n; Exemplu: int a,b,c; float x,y; cin>>a>>b>>c; cin>>x>>y;

Observaii: - introducerea valorii unei variabile de memorie se termin prin apsarea tastei Enter; - dac pentru o variabil de memorie din list nu se introduce de la tastatur o valoare corespunztoare tipului ei, operaia de citire se blocheaz (nu se mai citesc valorile nici pentru celelalte variabile de memorie din list) i se trece la urmtoarea instruciune din program.

Sintaxa expresiei care creeaz un flux de date pentru scrierea pe ecran: - pentru afiarea valorii unei singure expresii (expresie = variabil de memorie sau o constant sau o succesiune de operanzi i operatori): cout<<expresie; Exemplu: int a,b; float x; char c; . cout<<a; cout<< b; cout<<x; cout<<c;

- pentru afiarea valorilor a n expresii: cout<<expr_1<<expr_2<< <<expr_n; Exemplu: int a,b,c; float x,y; char c; . cout<<a<<b<<c; cout<<x<<y<<c;

Observaii: - valorile precizate n list se afieaz unele dup altele, fr spaiu ntre ele; Exemplu: int a=10, b=20; cout<<a<<b; se va afia: 1020 - valorile se scriu pe acelai rnd, separate prin spaii, folosind o constant de tip ir de caractere pentru afiarea spaiilor Exemplu: cout<<a<< <<b; se va afia: 10 20

- valorile se scriu pe rnduri diferite, pentru separarea lor folosindu-se constanta endl, care este o constant predefinit i corespunde apsrii tastei Enter; Exemplu: cout<<a<<endl<<b; se va afia: 10 20 - dac se afieaz o constant de tip ir de caractere care vrem s conin i caracterul ghilimele care este folosit ca delimitator, vom folosi secvena escape (\) pentru acest caracter; Exemplu: cout<<Raspunsul este \Da\ pe ecran se va afia: Raspunsul este Da

Limbajul C++ folosete multe funcii de sistem i constante simbolice de sistem. Pentru a le putea folosi compilatorul trebuie s cunoasc anumite informaii despre acestea: numele funciei, numrul i tipul parametrilor folosii pentru apel i tipul rezultatului furnizat. Aceste informaii formeaz prototipul funciei. Prototipurile funciilor de sistem se gsesc n fiiere antet (header) care au extensia .h. Pentru a putea fi folosite de compilator, informaiile despre funcii i constantele simbolice de sistem apelate trebuie incluse n fiierul surs nainte de a ncepe compilarea lui.

Aceast operaie se face scriind n fiierul surs, nainte de funcia main(), directiva pentru preprocesare: #include <nume_fiier_antet.h> Prin directiva #include<nume_fiier_antet.h> n fiierul surs va fi inclus fiierul antet ce conine prototipuri ale funciilor de sistem. Dac funciile apelate n program au prototipul n fiiere antet diferite, va trebui incluse mai multe fiiere antet n fiierul surs, folosind cte o directiv #include pentru fiecare fiier antet.

Prototipurile funciilor apelate n fluxurile de citire cin>> i de scriere cout>> i constanta endl se gsesc n fiierul antet iostream.h. Orice program n care se creeaz aceste fluxuri de date trebuie s conin directiva: #include<iostream.h>
Exemplu: #include<iostream.h> void main() {int a=1, b; cout<<b=; cin>>b; cout<<a<< <<b; cout<<endl<<a<<endl<<b<<endl;}