VARIABILE 

Spre deosebire de constante, variabilele sunt date (obiecte informaţionale) ale căror valori se pot modifica în timpul execuţiei programului. Şi variabilele sunt caracterizate de atributele nume, tip, valoare şi clasă de memorare. Variabilele sunt nume simbolice utilizate pentru memorarea valorilor introduse pentru datele de intrare sau a rezultatelor. Dacă la o constantă ne puteam referi folosind caracterele componente, la o variabilă ne vom referi prin numele ei. Numele unei variabile ne permite accesul la valoarea ei, sau schimbarea valorii sale, dacă este necesar acest lucru. Numele unei variabile este un identificator ales de programator. Ca urmare, trebuie respectate regulile enumerate în secţiunea identificatori. 

Dacă o dată nu are legături cu alte date (de exemplu, relaţia de ordine), vom spune că este o dată izolată. O dată izolată este o variabilă simplă. Dacă datele se grupează într-un anumit mod (în  tablouri - vectori, matrici - sau structuri), variabilele sunt compuse (structurate). 

În cazul constantelor, în funcţie de componenţa literalului, compilatorul stabilea, automat, tipul constantei. În cazul variabilelor este necesară specificarea tipului fiecăreia, la declararea acesteia. Toate variabilele care vor fi folosite în program, trebuie declarate înainte de utilizare. 

Declararea variabilelor 

Modul general de declarare a variabilelor este:

     tip_variabile   listă_nume_variabile;

Se specifică tipul variabilei(lor) şi o listă formată din unul sau mai mulţi identificatori ai variabilelor de tipul respectiv. Într-un program în limbajul C++, declaraţiile de variabile pot apare în orice loc în programul sursă. La declararea variabilelor, se rezervă în memorie un număr de octeţi corespunzător tipului variabilei, urmând ca ulterior, în acea zonă de memorie, să fie depusă (memorată, înregistrată) o anumită valoare.

Exemple:

     int i, j;/*declararea var. simple i,  j, de tip int. Se rezervă pentru i şi j câte 16 biţi (2octeţi)*/

     char c;         /* declararea variabilei simple c, de tip char. Se rezervă un octet. */

     float lungime;   /* declararea variabilei simple lungime; se rezervă 4 octeţi */ 

 Iniţializarea variabilelor în declaraţii 

În momentul declarării unei variabile, acesteia i se poate da (asigna, atribui) o anumită valoare. În acest caz, în memorie se rezervă numărul de locaţii corespunzător tipului variabilei respective, iar valoarea va fi depusă (memorată) în acele locaţii.

Forma unei declaraţii de variabile cu atribuire este:

     tip_variabilă  nume_variabilă=expresie;

Se evaluează expresia, iar rezultatul acesteia este asignat variabilei specificate.

Exemple:

char backslash=’\\’;   //declararea şi iniţializarea variabilei simple backslash

     int a=7*9+2;     /* declararea variabilei simple a, de tip int şi iniţializarea ei cu valoarea 65*/

     float radiani, pi=3.14;/*declararea variabilei radiani;declararea şi iniţializarea var. pi*/

     short int z=3;              //declararea şi iniţializarea variabilei simple z

     char d=’\011’;         

      char LinieNoua=’\n’;

      double x=9.8, y=0;     

Compilatorul C++ furnizează mecanisme care permit programatorului să influenţeze codul generat la compilare, prin aşa-numiţii calificatori.

Aceştia sunt:

 -) const;

-)  volatile. 

Calificatorul const asociat unei variabile, nu va permite modificarea ulterioară a valorii acesteia, prin program (printr-o atribuire). Calificatorul volatile (cel implicit) are efect invers calificatorului const. Dacă după calificator nu este specificat tipul datei, acesta este considerat tipul implicit, adică int.

Exemple:

const float b=8.8;

      volatile char terminator;terminator=’@’;terminator=’*’;   //permis

b=4/5;                                               //nepermisa modificarea valorii variabilei b

const w;    volatile g;      //w, g de tip int, implicit

 Operaţii de intrare/ieşire 

Limbajele C/C++ nu posedă instrucţiuni de intrare/ieşire, deci de citire/scriere (ca limbajul PASCAL, de exemplu). În limbajul C aceste operaţii se realizează cu ajutorul unor funcţii (de exemplu, printf şi scanf), iar în limbajul C++ prin supraîncărcarea operatorilor (definirea unor noi proprietăţi ale unor operatori existenţi, fără ca proprietăţile anterioare să dispară), mai precis a operatorilor >> şi << . Vom folosi în continuare abordarea limbajului C++, fiind, în momentul de faţă, mai simplă. În limbajul C++ sunt predefinite următoarele dispozitive logice de intrare/ieşire:

cin - console input - dispozitivul de intrare (tastatura);

cout - console output - dispozitivul de ieşire (monitorul).

Aşa cum se va vedea în capitolul 9, cin şi cout sunt, de fapt, obiecte (predefinite). Transferul informaţiei se realizează cu operatorul >> pentru intrare şi operatorul << pentru ieşire. Utilizarea dispozitivelor de intrare/ieşire cu operatorii corespunzători determină deschiderea unui canal de comunicaţie a datelor către dispozitivul respectiv. După operator se specifică informaţiile care vor fi citite sau afişate.

Exemple:

cout << var;           /* afişează valoarea variabilei var pe monitor*/

cin  >> var;           /* citeşte valoarea variabilei var de la tasatatură */ 

Sunt posibile operarţii multiple, de tipul:

Exemple:

cout << var1 << var2 << var3;

cin >> var1 >> var2 >> var3;

În acest caz, se efectuează succesiv, de la stânga la dreapta, scrierea, respectiv citirea valorilor variabilelor var1, var2 şi var3. 

Operatorul >> se numeşte operator extractor (extrage valori din fluxul datelor de intrare, conform tipului acestora), iar operatorul << se numeşte operator insertor (inserează valori în fluxul datelor de ieşire, conform tipului acestora). Tipurile de date citite de la tastatură pot fi toate tipurile numerice, caracter sau şir de caractere. Tipurile de date transferate către ieşire pot fi: toate tipurile numerice, caracter sau şir de caractere. Operanzii operatorului extractor (>>) pot fi doar nume de variabile. Operanzii operatorului insertor (<<) pot fi nume de variabile (caz în care se afişează valoarea variabilei), constante sau expresii. Utilizarea dispozitivelor şi operatorilor de intrare/ieşire în C++ impune includerea fişierului  iostream.h.

Exemple:

char c;    

cout<<"Astept un caracter:"; //afişarea constantei şir de caractere, deci a mesajului

cin>>c;                      //citirea valorii variabilei c, de tip caracter

int a, b, e; double d;

cin>>a>>b>>e>>d;       //citirea valorilor variabilelor a, b, e, d de tip int, int, int, double

cout<<"a="<<a<<"Valoarea expresiei a+b este:"<<a+b<<'\n';