Documente Academic
Documente Profesional
Documente Cultură
1. Intrri i ieiri
Limbajul C++ furnizeaz obiectele cin i cout, n plus fa de funciile scanf i printf din
limbajul C. Pe lng alte avantaje, obiectele cin i cout nu necesit specificarea formatelor.
Exemplu:
cin >> variabila;
cout << "sir de caractere" << variabila << endl;
Utilizarea acestora necesit includerea header-ului bibliotecii de stream-uri, <iostream.h>.
Un stream este un concept abstract care desemneaz orice flux de date de la o surs la o
destinaie. Concret, stream-urile reprezint totalitatea modalitilor de realizare a unor operaii
de citire sau scriere.
Operatorul >> are semnificaia de "pune la ...", iar << are semnificaia de "preia de la ...".
Exemplu:
#include <iostream.h>
void main(void)
{
int a;
float b;
char c[20];
cout <<"Tastati un intreg : "<< endl;
cin >> a;
cout << "Tastati un numar real : " << endl;
cin >> b;
cout << "Tastati un sir de caractere : " << endl;
1
cin >> c;
cout << "Ati tastat " << a << ", " << b << ", " << c << ".";
cout << endl;
}
2
Operatorul "new" returneaz un pointer la zona de memorie alocat dinamic (dac alocarea se
face cu succes) i NULL dac alocarea de memorie nu se poate efectua.
Operatorul "delete" elibereaz zona de memorie la care pointeaz argumentul su.
Exemplu:
struct sistem
{
char nume[20];
float disc;
int memorie;
int consum;
};
struct sistem *x;
void main(void)
{
x = new sistem;
x->disc = 850;
x->memorie = 16;
x->consum = 80;
delete x;
}
Programul prezentat definete un pointer la o structur de tip sistem i aloc memorie pentru el,
folosind operatorul new. Dezalocarea memoriei se face folosind operatorul delete.
Dac se dorete alocarea de memorie pentru un tablou de elemente, numrul elementelor se va
trece dup tipul elementului pentru care se face alocarea.
Exemplu:
x = new sistem[20]; // aloc memorie pentru 20 de elemente de tip
sistem;
delete[] x; // eliberarea memoriei
3
}
int main()
{
int n = 3;
ex(n);
cout<<n; // se va afia 3
}
void ex (int i)
{
i = 7;
}
int main()
{
int n = 3;
ex(n);
cout<<n; // se va afia 7
}
Referina nu este un pointer ctre obiectul referit, este un alt nume al obiectului!
b) Plasarea declaraiilor
Limbajul C impune gruparea declaraiilor locale la nceputul unui bloc. C++ elimin acest
inconvenient, permind declaraii n interiorul blocului, de exemplu imediat nainte de
utilizare. Domeniul unei astfel de declaraii este cuprins intre poziia declaraiei i sfritul
blocului.
Exemplu: (rulai urmtoarea secven de program)
void main(void)
{
int i;
cin >> i;
int j = 5*i-1; //declaratie i initializare de valoare
cout << j;}
4
c) Operatorul de rezoluie (operator de acces, operator de domeniu)
Limbajul C++ introduce operatorul de rezoluie (::), care permite accesul la un obiect (sau
variabil) dintr-un bloc n care acesta nu este vizibil, datorit unei alte declaraii.
Exemplu: (rulai urmtoarea secven de program)
char s[20]= "variabila globala";
void afiseaza(void)
{
char s[20] = variabila locala;
cout << ::s; //afiseaza variabila global
cout << s; //afiseaza variabila locala
}
d) Funcii inline
C++ ofer posibilitatea declarrii funciilor inline, care combin avantajele funciilor propriu-
zise cu cele ale macrodefiniiilor. Astfel, la fiecare apelare, corpul funciei declarate inline este
inserat n codul programului de ctre compilator.
Fa de macrodefiniii (care presupun o substitutie de text ntr-o faz preliminar compilrii),
pentru funciile inline compilatorul insereaz codul obiect al funciei la fiecare apel.
Avantajul creterii de viteza se pltete prin creterea dimensiunii codului. Aadar, funciile
inline trebuie s fie scurte.
Exemplu:
inline int comparare(int a,int b)
{
if (a>b) return 1;
if (a<b) return 0;
if (a==b) return -1;
}
Exerciii:
1. S se modifice urmtorul program astfel nct s complileze:
#include <iostream.h>
void funcie(int a=123, double b, double c=123.456, char *s="prg")
{
cout << "\n a=" << a << " b=" << b << " c=" << c << " s=" << s;
}
void main(void)
{
funcie(456, 4.5, 1.4, "apel 1");
funcie(456, 4.5, 1.4);
funcie(456, 4.5);
funcie(456.5);
}
5
2. S se realizeze un program care calculeaz produsul a dou numere reale i a dou
numere complexe, specificate prin parte reala i parte imaginar. Funciile de calcul al
produselor vor avea acelai nume i parametri diferii.
Bibliografie
Corina Rotar. PROGRAMARE ORIENTAT OBIECT. Note de curs. UNIVERSITATEA 1
DECEMBRIE 1918 ALBA IULIA. Seria Didactic.
Dorin Berian, Adrian Coco. PROGRAMARE ORIENTAT PE OBIECTE. ndrumtor de
laborator. Universitatea Politehnica din Timioara Facultatea de Automatic i Calculatoare.