Date in limbajul C++

    Asa cum s-a vazut în lectiile anterioare un program realizeaza o prelucrare de informatie. Termenul de prelucrare trebuie sa fie considerat într-un sens foarte general (de exemplu prelucrarea sepoate  referi la un text si consta în afisarea lui). În program datele apar fie sub forma unor constante (valori cunoscute anticipat, care nu se modific?), fie sub forma de variabile. Constantele si variabilele sunt obiectele informationale de baza manipulate într-un program.

    Fiecare categorie de date este caracterizata de atributele:

    De primele trei tipuri de atribute ne vom ocupa în continuare, urmând ca de atributul clasa de memorare sa ne ocupam mai tarziu.

    Numele unei date
    Numele unei date este un identificator si, ca urmare, trebuie sa respecte regulile specifice identificatorilor. Deasemenea, numarul de caractere care intra în compunerea unui identificator este nelimitat, însa, implicit, numai primele 32 de caractere sunt luate în considerare. Aceasta înseamna ca doi identificatori care au primele 32 de caractere identice, diferentiindu-se prin caracterul 33, vor fi considerati identici.
 

    Tipul unei date
    Tipul unei date consta într-o multime de valori pentru care s-a adoptat un anumit mod de reprezentare în memoria calculatorului si o multime de operatori care pot fi aplicati acestor valori. Tipul unei date determina lungimea zonei de memorie ocupata de acea data. În general, lungimea zonei de memorare este dependenta de calculatorul pe care s-a implementat compilatorul.

    Tipurile de baza sunt:

    In completare exista un numar de calificatori, care se pot aplica tipurilor de baza char, int, float sau double: short, long, signed si unsigned. Astfel, se obtin tipurile derivate de date. Short si long se refera la marimea diferita a intregilor, iar datele de tip unsigned int sunt intotdeauna pozitive. S-a intentionat ca short si long sa furnizeze diferite lungimi de intregi, int reflectand marimea cea mai "naturala" pentru un anumit calculator. Fiecare compilator este liber sa interpreteze short si long in mod adecvat propriului hardware; in nici un caz, insa, short nu este mai lung decat long. Toti acesti calificatori pot aplicati tipului int. Calificatorii signed (cel implicit) si unsigned se aplica tipului char. Calificatorul long se aplica tipului double. Daca intr-o declaratie se omite tipul de baza, implicit, acesta va fi int.Tabelul urmator prezinta lungimea zonei de memorie ocupata de fiecare tip de data. Obs:
a) In C++ nu exista tipul boolean. In acest caz, orice valoare diferita de 0 este considerata ca fiind TRUE si orice valoare 0 este considerata ca fiind FALSE.
b) Tipul caracter este asimilat tipurilor intregi. Memorarea unui caracter se face folosind codul ASCII al acestuia. In operatiile referitoare la caractere ne putem referi atat la caracter cat si la codul sau ASCII (conversia se face automat, in functie de context).
De ex:
    char a='c',b=99;
    cout<<a<<"   "<<b;  //Se tipareste de 2 ori caracterul 'c' (care are codul ASCII 99)
    cout<<a+101;          //Se tipareste 200 (a fost adunat codul ASCII al caracterului 'c' cu 101)

2. TIPURILE REALE
 
NUME TIP
DIMENSIUNE IN BITI
MAXIMA (in valoare absoluta)
float
32
3.4*pow(10,38)
double
64
1.7*pow(10.308)
long double
80
1.1*pow(10,4932)
    In header-ul <values.h> sunt definite constantele simbolice (cum ar fi: MAXINT, MAXSHORT, MAXLONG, MINDOUBLE, MINFLOAT, etc.) care au ca valoare limitele inferioara si superioara ale intervalului de valori pentru tipurile de date enumerate.  (de exemplu MAXINT reprezinta valoarea intregului maxim care se poate memora, etc. )
 
    Fara a detalia foarte mult modul de reprezentare a datelor reale (de tip float sau double), vom sublinia faptul ca, pentru acestea, este importanta si precizia de reprezentare. Deoarece calculatorul poate reprezenta doar o submultime finita de valori reale, in anumite cazuri, pot apare erori importante.
    Numerele reale pot fi scrise sub forma:   N = mantisa   baza unde:baza reprezinta baza sistemului de numeratie; mantisa (coeficientul) este un numar fractionar normalizat ( in fata virgulei se afla 0, iar prima cifra de dupa virgula este diferita de zero); exponentul este un numar intreg. Deoarece forma interna de reprezentare este binara, baza=2. In memorie vor fi reprezentate doar mantisa si exponentul. Numarul de cifre de dupa virgula determina precizia de exprimare a numarului. Ce alte cuvinte, pe un calculator cu o precizie de 6 cifre semnificative, doua valori reale care difera la a 7-a cifra zecimala, vor avea aceeasi reprezentare. Pentru datele de tip float, precizia de reprezentare este 6; pentru cele de tip double, precizia este 14, iar pentru cele de tip long double, precizia este 20.
Lungimea zonei de memorie ocupate de o data de un anumit tip (pe cati octeti este memorata data) poate fi aflata cu ajutorul operatorului sizeof.
Exemplu:
Instructiunile au ca efect afisarea pe monitor a dimnesiunii in octeti a tipului de data int, float si char.

    Variabile

    Spre deosebire de constante, variabilele sunt date (obiecte informationale) ale caror valori se pot modifica in timpul executiei programului. Si variabilele sunt caracterizate de atributele nume, tip, valoare si clasa de memorare. Variabilele sunt nume simbolice utilizate pentru memorarea valorilor introduse pentru datele de intrare sau a rezultatelor. Daca la o constanta ne puteam referi folosind caracterele componente, la o variabila ne vom referi prin numele ei. Numele unei variabile ne permite accesul la valoarea ei, sau schimbarea valorii sale, daca este necesar acest lucru. Numele unei variabile este un identificator ales de programator. Ca urmare, trebuie respectate regulile enumerate in sectiunea identificatori.

Daca o data nu are legaturi cu alte date (de exemplu, relatia de ordine), vom spune ca este o data izolata. O data izolata este o variabila simpla. Daca datele se grupeaza intr-un anumit mod (in  tablouri - vectori, matrici - sau structuri), variabilele sunt compuse (structurate).

In cazul constantelor, in functie de componenta literalului, compilatorul stabilea, automat, tipul constantei. In cazul variabilelor este necesara specificarea tipului fiecareia, la declararea acesteia. Toate variabilele care vor fi folosite in program, trebuie declarate inainte de utilizare.

    Declararea variabilelor

Modul general de declarare a variabilelor este:

     tip_variabile lista_nume_variabile;

    Se specifica tipul variabilei(lor) si o lista formata din unul sau mai multi identificatori ai variabilelor de tipul respectiv. Intr-un program in limbajul C++, declaratiile de variabile pot apare in orice loc in programul sursa. La declararea variabilelor, se rezerva in memorie un numar de octeti corespunzator tipului variabilei, urmand ca ulterior, in acea zona de memorie, sa fie depusa (memorata, inregistrata) o anumita valoare.
Exemple:
 int i, j;/*declararea var. simple i,  j, de tip int. */
 char c;  /* declararea variabilei simple c, de tip char.*/
 float lungime;  /* declararea variabilei simple lungime de tipul float (numere reale) se rezerva 4 octeti */